Menu
CoddyTech

通过串口设置舵机角度

本课属于 Coddy Arduino 学习旅程的“输出”单元。第 23 课,共 24 课。

机械臂也可以接收来自串口监视器的命令。输入一个角度并按 Enter;Serial.parseInt() 会读取这个数字:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // 数字后面的换行符
  // 使用 angle
}

数字后面的换行符会一直留在那里。下一次运行 loop() 时,parseInt() 找不到数字,就会等待一秒并返回 0。忽略这个 0 对闪烁速度来说没问题,但 0 是一个有效的角度。因此,在读取数字后,用一次 Serial.read() 读掉换行符。

也有人可能会输入一个不是角度的数字。arm.write() 会把 544 及以上的任何数字当作以微秒为单位的脉冲长度读取,因此 1000 会让机械臂转到接近 45 度的位置。先用 constrain() 将角度限制在 0 到 180 之间:

angle = constrain(angle, 0, 180);  // 传入变量,不要传入 parseInt()
challenge icon

挑战

中等

将舵机转到你在串口监视器中输入的角度:

  • 收到数字时,使用 Serial.parseInt() 读取,然后读掉换行符(0 也是一个角度)
  • 使用 constrain() 将角度限制在 0 到 180 之间
  • 转动机械臂,并将角度打印为 Angle: 45

按下 运行,在串口监视器中发送 45,然后按下 检查。

亲手试试

#include <Servo.h>

Servo arm;

void setup() {
  arm.attach(9);
  arm.write(90);
  Serial.begin(9600);
}

void loop() {
  // 收到数字时:读取它,并读掉换行符,
  // 将它限制在 0 到 180 之间,转动机械臂并打印这个数字
}
quiz icon自我测试

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

输出中的所有课

自己练习: Arduino 在线编辑器