(由于本作者是第一次发帖,如有错误,敬请谅解!)
这次我们做一个小风扇,由于现在是夏天,所以电风扇比较受欢迎。首先,我们准备一些材料:
1. 220欧电阻 x2
2. 5mmLED灯 x1
3.继电器HRS1H-S-DC5V x1
4.按钮 x1
5.130小马达 x1
第一步:材料连接
按下图进行连线,按钮最右边的引脚连接到数字2,并用一个220欧电阻作为下拉电阻,以防引脚悬空干扰。继电器有6个引脚图中标有序号。1,2引脚为继电器的输入信号,3,4,5,6为继电器输出的控制引脚,这里只使用4,6两个引脚。我们把继电器想成一个开关,开关也只要用到两个引脚。
第二步:编写代码
我们拼完了硬件,改变写代码了。
- int buttonPin = 2; // button连接到数字2
- int relayPin = 3; // 继电器连接到数字3
- int relayState = HIGH; // 继电器初始状态为HIGH
- int buttonState; // 记录button当前状态值
- int lastButtonState = LOW; // 记录button前一个状态值
- long lastDebounceTime = 0;
- long debounceDelay = 50; //去除抖动时间
- void setup() {
- pinMode(buttonPin, INPUT);
- pinMode(relayPin, OUTPUT);
- digitalWrite(relayPin, relayState); // 设置继电器的初始状态
- }
- void loop() {
- int reading = digitalRead(buttonPin); //reading用来存储buttonPin的数据
- // 一旦检测到数据发生变化,记录当前时间
- if (reading != lastButtonState) {
- lastDebounceTime = millis();
- }
- // 等待50ms,再进行一次判断,是否和当前button状态相同
- // 如果和当前状态不相同,改变button状态
- // 同时,如果button状态为高(也就是被按下),那么就改变继电器的状态
- if ((millis() - lastDebounceTime) > debounceDelay) {
- if (reading != buttonState) {
- buttonState = reading;
- if (buttonState == HIGH) {
- relayState = !relayState;
- }
- }
- }
- digitalWrite(relayPin, relayState);
- // 改变button前一个状态值
- lastButtonState = reading;
- }
完成之后,插上USB连接线,就可以惬意的吹自制风扇啰!
|
|
|
|
|
|