То ли лыжи не едут... (непонятное поведение скетча)
- Войдите на сайт для отправки комментариев
Ср, 15/08/2012 - 15:44
День добрый, поскольку я занялся ардуинами относительно недавно, то возможно проблем в моем не понимании. Но есть ли мысли по поводу непонятки в таком очевидном скетче, а именно в непонятном получаемом ответе (повторно распечатывается второй char, причем оба раза...)
Причем если в Serial.print (или write) поменять местами ID1 и ID2 то будет дважды печататься другой ID (ID1 в данном примере)

Добавил код отдельно:
int ledPin = 13; const char IDsensorIr[3] = {'I','D','1'}; const char IDtemp[3] = {'I','D','2'}; void setup() { Serial.begin(9600); pinMode (ledPin, OUTPUT); delay(2000); } void loop() { Serial.print (IDsensorIr); Serial.print (IDtemp); Serial.write (IDsensorIr); Serial.write (IDtemp); Serial.println ("-"); delay (1000); }>я занялся ардуинами относительно недавно, то возможно проблем в моем не понимании
А вы думаете если "давно", то проблем не бывает ?;)
Тут "грабли" не ардуиновские, а чисто "работа со строками в Cи".
Прочитайте http://arduino.ru/Reference/String
Особенно обращая внимание на все что говорится про "конец строки" и "символ \0" и внимательно посмотрите на длину своих массивов.
Вообще оно у вас будет печатать, пока случайно не попадется в памяти символ 0.
Спасибо за тычок носом, но даже когда изменил длину массивов на 4 - результат был такой-же как и в начале (что само по себе странно).
Нормально получилось, если задавать массив автоматом, тогда проблема не возникает:
const char IDsensorIr[ ] = {"ID1"}; const char IDtemp[ ] = {"ID2"};Но самое интересное было позже...
Откатился обратно (с измененной длиной массивов):
const char IDsensorIr[4] = {'I','D','1'}; const char IDtemp[4] = {'I','D','2'};и на этот раз все работало как нужно.
p.s. может стоит портелгейсов в доме погонять? :-))))
Не стоит.
Просто возьмите за праило завершать строки в Си символом '\0':
const char IDsensorIr[4] = {'I','D','1','\0'};
Иначе будет у вас все работать через раз.
А то и через десять...