Достался фрагмет светодиодной бегущей строки P10. Хотел сделать так чтобы отправленный из монитора порта текст выводился на бегущую строку до тех пор пока не пришло новое сообщение. но не тут то было... пишу в мониторе порта "privet" но на строке бегает только "pr" и так с любым сообщением Код: Код (C++): #include <TimerOne.h> #include"SPI.h" #include <ledP10.h> LedP10 myled; char message[50]; void setup() { myled.init(3,4,8,9 ,1); myled.setbrightness(50); Serial.begin(9600); } void loop() { myled.showmsg_single_scroll(message,1,2,0); } void serialEvent() { Serial.flush(); Serial.readString().toCharArray(message,50); Serial.println(message); } Подскажите в каком направлении искать решение проблемы?
Выяснилось следующее. Если убрать из кода всё что связано со светодиодной панелью то вставленная для отладки команда Serial.println(message); возвращает ровно ту же строку что и была отправлена. то-есть всё как должно быть, но стоит обратно вернуть в код работу с панелью, то тут как тут всплывает этот косяк. Код (C++): char message[50]; void setup() { Serial.begin(9600); } void loop() { } void serialEvent() { delay(1000); Serial.readString().toCharArray(message,50); Serial.println(message); } Есть предположение что это из-за TimerOne.h требуемой для работы панели.
Почитайте как мк принимает данные. А потом посмотрите, что вы в процесс приёма вводите задержку. Я вам кинул код, который с помощью прерывания собирает входящую строку.