Сброс Led в LOW из визуальной студии в Arduino - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу иметь возможность поворачивать красный светодиод с помощью кнопки от Arduino и иметь возможность сбросить его с помощью кнопки сброса в Visual Studio. Проблема в том, что он либо включается и не может выключиться с помощью кнопки сброса, либо выключается и не может включиться снова, если программа не была перезапущена. Я бы оказал всю помощь. * код arduino для светодиода.

    void setup() {
      Serial.begin(9600);
      pinMode(BUTTON_SWITCH, INPUT_PULLUP);
      pinMode(BUTTON_ALARM, INPUT_PULLUP);
      pinMode(RED_LED, OUTPUT);

    }

if (digitalRead(BUTTON_ALARM) == LOW) {
    displayAlarm();
  }

   void displayAlarm() {
  digitalWrite(RED_LED, HIGH);
  tone(BUZZER, 1500, 700);
    if (Serial.available()) {
        // Read entire buffer up to newline character
        // Since on the C# side, serialPort1.WriteLine appends a newline character
        String respond = Serial.readStringUntil('\n');
        if (respond == "RESET") {
            digitalWrite(RED_LED, LOW);
            digitalWrite(BUZZER, LOW);
        }
    }

Визуальный код студии в кнопке сброса.

 private void Button1_Click(object sender, EventArgs e)
    {

            serialPort1.WriteLine("RESET");


    }

1 Ответ

0 голосов
/ 07 ноября 2019

Вы создали float переменную respond. Это числовое значение, а не строка, но «RESET» - это строка, и вы не можете сравнить число со строкой. Вам нужно сделать respond a String и прочитать всю строку с помощью readStringUntil():


void setup()
{
    Serial.begin(9600);
    pinMode(BUTTON_SWITCH, INPUT_PULLUP);
    pinMode(BUTTON_ALARM, INPUT_PULLUP);
    pinMode(RED_LED, OUTPUT);
}

void loop()
{
    // If BUTTON_ALARM pressed, enable alarm
    if (digitalRead(BUTTON_ALARM) == LOW) {
        displayAlarm();
    }

    // Check if there is data in the serial port input buffer
    // If there is and it is "RESET", disable the alarm
    if (Serial.available()) {
        // Read entire buffer up to newline character
        // Since on the C# side, serialPort1.WriteLine appends a newline character
        String respond =Serial.readStringUntil('\n');
        if (respond == "RESET") {
            digitalWrite(RED_LED, LOW);
            digitalWrite(BUZZER, LOW);
        }
    }
}

void displayAlarm()
{
    digitalWrite(RED_LED, HIGH);
    tone(BUZZER, 1500, 700);
}

По умолчанию WriteLine добавляет символ новой строки. Убедитесь, что вы не изменили это. См .: Свойство SerialPort.NewLine

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...