通过串口设置舵机角度
本课属于 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()挑战
中等将舵机转到你在串口监视器中输入的角度:
- 收到数字时,使用
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 之间,转动机械臂并打印这个数字
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输出中的所有课
自己练习: Arduino 在线编辑器