自制风扇
(由于本作者是第一次发帖,如有错误,敬请谅解!)这次我们做一个小风扇,由于现在是夏天,所以电风扇比较受欢迎。首先,我们准备一些材料:
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连接线,就可以惬意的吹自制风扇啰!
按键实现多种功能会不会很好玩呀快速按两下就是定时吹十秒,长按调速,(继电器不知道能不能做到调速) nicho 发表于 2017-6-27 11:06
按键实现多种功能会不会很好玩呀快速按两下就是定时吹十秒,长按调速,(继电器不知道能不能做到调速) ...
不错的想法,我回头试试 nicho 发表于 2017-6-27 11:06
按键实现多种功能会不会很好玩呀快速按两下就是定时吹十秒,长按调速,(继电器不知道能不能做到调速) ...
继电器可能做得了也可能做不了,我回头试试。。。。。。。
页:
[1]