Michael58 2 7 октября, 2022 Опубликовано 7 октября, 2022 · Жалоба Я никогда не писал программы, занимался железом, поэтому сильно не пинайте за глупые вопросы. Решил дома разобраться с ардуино. Плата - ARDUINO DUE. Задача - при нажатии кнопки должен загореться светодиод, а затем погаснуть. Время свечения задается с СОМ порта в секундах. Например, если хотим зажечь на 2 секунды, вводим "2". Кнопка подкючена к пину 6, светодиод - к пину 3. Код привожу полностью. Подскажите, в чем моя ошибка. unsigned int time_on; void setup() { pinMode(3, OUTPUT); pinMode(6, INPUT_PULLUP); Serial.begin(9600); } void loop() { if (Serial.available()>0) { int in_data = Serial.parseInt(); time_on=in_data; } while(digitalRead(6)== LOW) { digitalWrite(3, HIGH); delay(1000*time_on); digitalWrite(3, LOW); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misyachniy 0 15 октября, 2022 Опубликовано 15 октября, 2022 · Жалоба Нужно описать, что происходит. Светится светодиод или нет? Как пересылаете числа в порт? К тому же при нажатии "2" в порт передается ASCII код 50 а не 2. https://www.ibm.com/docs/ru/sdse/6.4.0?topic=configuration-ascii-characters-from-33-126 Лучше использовать Serial.read() https://www.arduino.cc/reference/en/language/functions/communication/serial/read/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Michael58 2 16 октября, 2022 Опубликовано 16 октября, 2022 · Жалоба On 10/15/2022 at 4:12 PM, misyachniy said: Лучше использовать Serial.read() Я проверял с Serial.read, результат тот же. On 10/15/2022 at 4:12 PM, misyachniy said: при нажатии "2" в порт передается ASCII код 50 а не 2. Это мне понятно, потому я и использую функцию Serial.parseInt(), чтоб перевести char в decimal. Выяснилось, что эта функция работает некорректно и после одного (или нескольких) правильных децимальных цифр посылает ноль. Соответственно Integer time_on принимает нулевое значение, поэтому светодиод не загорается. Я нашел готовый скетч который делает это корректно: Here is the complete code to use Serial.read() to read in the enthe entire message и когда я вставил его вместо Serial.parseInt(), все заработало правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v05 1 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба Ваша самая первая ошибка в том, что исходный текст должен быть правильно/аккуратно оформлен и вставляться через тег Code. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба 56 минут назад, v05 сказал: Ваша самая первая ошибка в том, что исходный текст должен быть правильно/аккуратно оформлен и вставляться через тег Code. А вторая - используете для отладки форум, а не отладочный вывод) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться