大家好,我是狼哥,我今天给大家记录讲解一下 Arduino IDE 里面编程实现按钮控制舵机的编程逻辑和背后的一些相关知识点。希望这套保姆级教程大家看完后可以有收获~
接下来这个代码主要实现的功能是:
通过按钮控制舵机角度,例如:
-
按一次按钮,舵机从0度转到90度;
-
再按一次按钮,舵机从90度转回0度。
接线方式:
| 元件 | 接到 Arduino 引脚 |
|---|---|
| 舵机信号线(橙) | D9(可用 PWM 引脚) |
| 舵机电源线(红) | 5V |
| 舵机地线(棕) | GND |
| 按钮一端 | D2 |
| 按钮另一端 | GND(通过按钮) |
| 下拉电阻 | D2与GND之间并联 10kΩ |
完整代码:
#include <Servo.h>
Servo myServo; // 创建舵机对象
const int buttonPin = 2; // 按钮连接的引脚
const int servoPin = 9; // 舵机连接的引脚
bool isAtZero = true; // 舵机是否处于0度状态
bool lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50; // 防抖延时
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 按钮为输入,启用内部上拉电阻
myServo.attach(servoPin); // 连接舵机
myServo.write(0); // 初始位置为0度
Serial.begin(9600);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis(); // 状态变化,更新时间戳
}
// 检查是否经过足够长的时间确认状态
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading == LOW && lastButtonState == HIGH) { // 检测按下事件
if (isAtZero) {
myServo.write(90); // 转到90度
Serial.print

最低0.47元/天 解锁文章
1341

被折叠的 条评论
为什么被折叠?



