Здравствуйте. Имею такой код. Как мне сделать, чтобы при отправке в порт, скажем, числа "13" моё условие работало и светодиод загорался. Код (C++): int val; int ledPin =13; boolean ledOn=false; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(115200); } void loop() { if (Serial.available()) { val = Serial.read(); if (val == 110) // n = 110 in dec { ledOn=!ledOn; digitalWrite(ledPin, ledOn); } } }
функция Serial.real() дает байт, а не целое , так что при получении даст 1, при следующем 3, а не 13 сразу и не 4951
Вот так должно бы работать + стоит защита от флуда в порт, но отправлять нужно не "13" а ".13". Точка используется как маркет для сброса всего что содержится в переменной message т.к. туда может попасть что угодно. Код (C++): int val; int ledPin = 13; string message; boolean ledOn = false; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { while (Serial.available()) { char inChar = Serial.read(); message += inChar; if (message == ".") { message = ""; } if (message == "13") { ledOn=!ledOn; digitalWrite(ledPin, ledOn); message = ""; } } }