Menu
CoddyTech

通过串口控制闪烁速度

本课属于 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() 在等待。

challenge icon

挑战

中等

引脚 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);
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

输入中的所有课

自己练习: Arduino 在线编辑器