Всем добрый день или вечер. Возникла проблема с скетчем. Для работы использую Arduino UNO и Bluetooth HC-06. Есть скетч только он работает не так как мне нужно. Мне необходимо что-бы скетч менял непрерывно цвет и частоту моргания rgb светодиода, как-бы на лету. У меня меняется только цвет, а при отправке новой частоты он на секунду выключается и потом уже мигает с новой частотой. Возможно я не сильно понятно объяснил свою проблему если что спрашивайте. Если кто знает как решить проблему или видел подобные проекты то я буду благодарен за помощь. Код (C++): const byte rPin = 3; const byte gPin = 5; const byte bPin = 6; byte chosed_color; byte incoming_byte; int val = -1; void setup() { Serial.begin(9600); pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); } void loop() { if(Serial.available() > 0) { incoming_byte = Serial.peek(); Serial.println(char(incoming_byte)); if(incoming_byte >= '0' && incoming_byte <= '9') { val = Serial.parseInt(); } else { incoming_byte = Serial.read(); switch(incoming_byte) { case 'R': chosed_color = rPin; break; case 'G': chosed_color = gPin; break; case 'B': chosed_color = bPin; break; } } } if(val >= 0 && chosed_color != 0) { digitalWrite(chosed_color, HIGH); delay(val); digitalWrite(chosed_color, LOW); delay(val); } }
Это нормально, так работает команда parseInt - в ней встроен таймаут. Попробуйте в строке задержки после числа вставить пробел - должно помочь.
нет, совсем не так. Пробел надо вставить на стороне отправки - отправлять Ардуине строку "R200 " c пробелом на конце Другой вариант - отказаться от parseInt совсем и разбирать строку самостоятельно.
ну самостоятельно я плохо представляю как это делать, а вот пробел в конце отправки строки peek помогло спасибо