Здравствуйте. Никак не могу понять, каким все-таки образом можно включать/выключать светодиод на 13-м пине платы путем отправления ТЕКСТОВЫХ команд через терминал на Android. Есть программа для управления светодиодом цифрами "1" (вкл) и "0" (выкл). Однако мне необходимо управлять светодиодом именно текстовыми командами, например, "ON" и "OFF". Может кто-нибудь с этим помочь? Заранее благодарен.
Можно так вот например, хоть целые предложения посылайте Код (C++): boolean StringMessage = false; // если есть строка String currStr; char currSymb; void setup() { pinMode(13, OUTPUT); Serial.begin(9600); // инициализация порта com } void loop() { if (Serial.available()) { currSymb = Serial.read(); // читаем if ('\n' != currSymb) currStr += String(currSymb); // if ('\r' == currSymb && currStr != "\r") { StringMessage = true; // есть строка Serial.print("Command is: "); // Serial.println(currStr); // currStr.trim(); } } if (StringMessage) { // якщо є строка if (currStr.startsWith("ON")) digitalWrite(13, 1); // else if (currStr.startsWith("OFF")) digitalWrite(13, 0); // StringMessage = false; currStr = ""; } }
Предложенный выше код хорош, но я бы внес свое предложение. В коде Код (C++): currSymb = Serial.read(); // читаем if ('\n' != currSymb) currStr += String(currSymb); // я добавил еще одно условие: Код (C++): currSymb = Serial.read(); // читаем if (('\n' != currSymb)&&('\r' != currSymb)) currStr += String(currSymb); // Это добавление я сделал потому что на самом деле мы получаем не ON или OFF, а ON\r или OFF\r. Это актуально если мы ждем какое нибудь число, тогда символ \r не даст перевести строку в число (будут ошибки при работе скетча или ПО)