Я работаю над небольшим домашним управлением на основе API.
Я использую Arduino Uno, который должен отвечать на определенные команды, которые я ему даю, через последовательное соединение USB.В настоящее время я пытаюсь ввести команду, которая должна переключать состояние логической переменной.
bool Relay0 = false;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("Please send START to start the monitor...");
while(Serial.readString() != "START"){}
Serial.println("Active.");
}
Этот фрагмент моего кода останавливается до тех пор, пока я не отправлю «START», и он работает просто отлично.Когда я пытаюсь достичь той же функции в моей функции loop()
, она просто не работает.
Код выглядит следующим образом:
String command = "HALT";
void loop() {
Serial.flush();
Serial.println("Input command");
while (command == "HALT"){
command = Serial.readString();
}
if (command == "SwR0") {
Relay0 = !Relay0;
OutputData();
command = "HALT";
}
else command = "HALT";
}
Я устанавливаю команду с именем String в HALT, котораядолжен застревать код в цикле, который постоянно читает ввод и прерывается, как только вводится.
Если данная команда окажется командой, которую я настроил, следует вызвать определенные функции, а затемвернитесь к HALT, чтобы дождаться нового пользовательского ввода.Если нет, то он напрямую возвращается в HALT.