Скорость мигания через последовательный порт
Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 17 из 22.
Введите 250, и плата получит три символа: '2', '5' и '0', а затем символ новой строки. Serial.parseInt() считывает цифры и преобразует их в число 250, останавливаясь на первом символе, который не является цифрой.
Но есть нюанс: если цифры не поступают, parseInt() ждёт их до 1 секунды, а затем возвращает 0. Это происходит после каждого введённого вами числа: символ новой строки, завершивший число, всё ещё ожидает обработки, поэтому Serial.available() снова больше 0, и parseInt() не находит цифр, ждёт секунду и возвращает 0.
Поэтому считайте 0 значением «ничего полезного» и сохраняйте старое значение:
if (Serial.available() > 0) {
int n = Serial.parseInt();
if (n > 0) {
wait = n;
}
}Вы увидите, что светодиод приостанавливается на секунду после каждого введённого вами числа: это parseInt() ждёт.
Задание
СреднеСветодиод на выводе 13 мигает: горит wait мс и не горит wait мс; начальное значение wait — 500. Изменяйте скорость с помощью монитора Serial:
- когда есть ожидающие символы, считайте число с помощью
Serial.parseInt() - если оно больше 0, сохраните его в
wait
Нажмите Run, отправьте 100 из монитора Serial, затем нажмите Check.
Попробуйте сами
const int ledPin = 13;
int wait = 500;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// когда во входном буфере есть символы, считай число в wait (если оно больше 0)
digitalWrite(ledPin, HIGH);
delay(wait);
digitalWrite(ledPin, LOW);
delay(wait);
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Входные сигналы
3Последовательный ввод
Чтение символа из последовательного портаТекстовые командыСкорость мигания через последовательный портМигание по командеПотренируйтесь самостоятельно: Песочница Arduino