通过串口控制闪烁速度
本课属于 Coddy Arduino 学习旅程的“输入”单元。第 17 课,共 22 课。
输入 250,开发板会收到 3 个字符:'2'、'5' 和 '0',然后是换行符。Serial.parseInt() 会读取数字字符,并将它们转换为数字 250,遇到第一个非数字字符时停止。
这里有个问题:如果没有数字到达,parseInt() 最多会等待 1 秒,然后返回 0。每次你输入数字后都会发生这种情况:结束数字输入的换行符仍在等待处理,因此 Serial.available() 又大于 0,而 parseInt() 找不到数字,于是等待 1 秒后返回 0。
所以,把 0 当作“没有有用内容”,并保留旧值:
if (Serial.available() > 0) {
int n = Serial.parseInt();
if (n > 0) {
wait = n;
}
}每次你输入数字后,都会看到 LED 暂停 1 秒:这是 parseInt() 在等待。
挑战
中等引脚 13 上的 LED 会闪烁,亮 wait 毫秒,灭 wait 毫秒,wait 初始值为 500。让 Serial 监视器改变闪烁速度:
- 有字符等待处理时,使用
Serial.parseInt()读取一个数字 - 如果数字大于 0,就将它存入
wait
按“运行”,从 Serial 监视器发送 100,然后按“检查”。
亲手试试
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);
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输入中的所有课
自己练习: Arduino 在线编辑器