一、灵感
在我们平时用arduino编写小灯亮灭时,时常会遇到按钮开关短缺、丢失、找不到的问题。因此,我打算直接在arduino中编写一个可以替代按钮作用的程序,因为本人也是初学者,所以借助了人工智能。
二、硬件需求
- Arduino开发板(Uno/Nano等)
- LED灯 ×1
- 220Ω电阻 ×1
- 杜邦线或普通导线 ×2
硬件介绍:
三、 电路连接
| 组件 | 连接方式 |
|-------------|-------------------------|
| LED正极 | Arduino数字引脚 `D9` |
| LED负极 | 220Ω电阻 → Arduino `GND` |
| 控制导线 | 一端接 `D2`,另一端悬空 |
红线那端是小灯泡短头,橙色线是长头
四、代码实现
const int ledPin = 9; // LED控制引脚
const int wirePin = 2; // 导线检测引脚
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(wirePin, INPUT_PULLUP); // 启用内部上拉电阻
digitalWrite(ledPin, LOW); // 初始状态关闭LED
}
void loop() {
// 检测导线是否接地
if (digitalRead(wirePin) == LOW) {
digitalWrite(ledPin, HIGH); // 导线接通,LED亮
} else {
digitalWrite(ledPin, LOW); // 导线断开,LED灭
}
delay(50); // 防抖动延时
}
```
五、 操作步骤
1. 按电路图完成硬件连接
2. 将代码上传至Arduino
3. 测试:
- 用导线连接D2和GND → LED亮
- 断开连接 → LED灭
视频发布到个人视频当中
六、注意事项
1. 必须为LED串联限流电阻
2. 导线接触时间建议>50ms
3. 避免导线同时接触多个引脚
七、原理解析
- `INPUT_PULLUP`模式使引脚默认高电平
- 导线接地时引脚被拉低
- 代码实时检测引脚电平变化
八、扩展应用
- 改用金属片实现触摸控制
- 增加多级亮度控制
- 结合串口输出状态信息
九、常见问题
Q:LED不亮怎么办?
A:检查:
1. 正负极是否正确
2. 电阻是否正常
3. 代码引脚定义是否匹配
Q:响应不灵敏?
A:尝试:
1. 增大延时时间
2. 改用更可靠的连接方式
3. 添加软件防抖
---
> 原创声明:本文采用 CC BY-NC-SA 4.0 协议授权
> 转载请注明出处:优快云博客-【李颉】
>b站博主链接:【无需硬件Arduino入门 第二讲 流水灯与按键开关LED灯】 https://www.bilibili.com/video/BV1Xr4y1n7Xa/?share_source=copy_web&vd_source=2f10ed67c678a7db0923ba3231460461
```