Передать через COM порт несколько байт на Arduino UNO
- Войдите на сайт для отправки комментариев
Втр, 09/07/2013 - 16:34
Всем привет!
Пишу программу на ардуино:
void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { if (Serial.available()>0) { if (Serial.read()==243) { if (Serial.read()==5) { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); } } } }
Для зажигания светодиода надо прочитать два последовательных байта. Но когда я отправляю при помощи COM Port ToolKit 4.0 байты, то светодиод не загорается, а если написать на проверку один байт, а не два, то загорается.
Вот и вопрос, как прочитать несколько последовательных байт???
А поиском воспользоваться для начала? http://arduino.ru/forum/programmirovanie/peredacha-dannykh-po-com-portu
Либо добавляете задержку перед или после чтения первого байта
либо ждете пока прийдут два байта:
Огромное СПАСИБО!
Спрашивал на другом форуме по программированию, начили младшими и старшими байтами мозги забивать, а про задержку я и не додумался. Странно, когда на делфи писал под комп, чтоб тот читал из порта, то ни какой задержки не делал.
Для чего нужна задержка???
vovken1997,
ардуина иногда работает слишком быстро.
Да просто Ваш код начинает сравнивать байты с эталонами после приема первого байта - а второй-то еще не принят!
Вот это ожидание:
if
(
Serial
.available()>0)
Просто нужно делать это после приема двух байтов:
if
(
Serial
.available()>1)