Как в Arduino через сериал задать 2 значения для двух переменных?
- Войдите на сайт для отправки комментариев
Ср, 16/08/2017 - 11:33
Подскажите пожалуйсто, почему кодом ниже не удается задать время переменные часа и минут?
int h=0,m=0, s=0; char c1,c2; void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println("write Hour"); delay (5000); while (Serial.available() > 0) { // считываем принятый байт: c1 = Serial.read(); h =atoi(c1); } Serial.println("write Min"); delay (5000); while (Serial.available() > 0) { // считываем принятый байт: c2 = Serial.read(); m =atoi(c2); } }
А откуда Вы знаете, что не удаётся? Вы его запускали? Ну, тогда Вы должны знать, что, для начала, он просто не компилируется. Это достаточная причина, чтобы с его помощью нельзя было что-то задать?
Все компилируется! В LOOP у меня вывод стоит. ниже полный код:
ответ коментарием ниже
а как передаете байты?
Все компилируется!
Т.е. Вы хотите сказать, что строки 12 и 20 у Вас не вызывают ошибки компиляции?
Отсюда я делаю вывод: Вы используете IDE типа 1.8.x с настройками по умолчанию. Авторы специально поиздевались над новичками, сделав две вещи: 1) включили опции так, что большинство критических ошибок выдаются как предупреждения и 2) полностью подавили вывод этих самых предупреждений, чтобы не люди работали вслепую.
Зайдите в "Настройки", найдите там "Сообщения компилятора" и уберите нахрен лоховское "ничего". Поставьте уже если не "всё", то хотя бы "по умолчанию".
Получите "предупреждение", но на самом деле это никакое не предупреждение, а сообщение о критической ошибке. В более адекватных версиях IDE Вы бы получили его сразу.
я смотрю, вы на Амперке уже исправленный код выложили. Вы бы лучше выбрали один форум для вопроса, а то какое-то читерство получается
а как передаете байты?
Какая разница, если он читает побайтно (представьте, что часов 23) и каждый прочитайнный байт передаёт atoi у которой параметр вообще-то не байт, а const char *
Какая разница, если он читает побайтно (представьте, что часов 23) и каждый прочитайнный байт передаёт atoi у которой параметр вообще-то не байт, а const char *
ну вообще-то у него параметр atoi и описан как char так что особой проблемы быть не должно. (UPD - упс. притупил... удалять не буду. но ошибку понял)
А чтение двухзначных чисел он уже добавил... на амперке
Сегодня меня укусила бацилла альтруизма. Плюс к тому ТС настолько невежественен, что объяснять бесполезно.
Вот код. Минимальные правки к коду ТС, может это поможет ему понять отличие?
Сегодня меня укусила бацилла альтруизма.
Прививки надо вовремя делать.
Огромное спасибо. Данный код заработал.
Единственное, не могли бы вы обьяснить как работают следующие строки:
1) c[i++] = Serial.read();
2)c[i] = 0;
3) h =atoi(c);
Код там я действительно подправил, но он все-равно не работает.
Огромное спасибо. Данный код заработал.
Единственное, не могли бы вы обьяснить как работают следующие строки:
Меня, конечно, укусила бацилла альтруизма, но не до такой же степени....
Чтение учебника приведет тебя к победе, друг мой!
не могли бы вы обьяснить как работают следующие строки:
1) c[i++] = Serial.read();
2)c[i] = 0;
3) h =atoi(c);
wdrakula попал!
Говорили ж
Прививки надо вовремя делать.