Arduino智能风扇系统
2022-01-12 00:12 jym蒟蒻 阅读(722) 评论(0) 编辑 收藏 举报研究方法与思路:
我们小组一开始找的是一个别人做好的项目,按键控制风扇挡位,不同挡位对应不同LED灯。但是实现过程中存在bug。而且仅仅通过按键控制风扇着实有局限性,因此我觉定用串口控制风扇开关的模式,输入1,风扇变为光敏自动调节,输入2,变为按钮人工控制调节。
我们的思路首先是拆开,把每个功能单独列出来实现,最后再进行合并
按键控制风扇开关:
我在这里遇到了问题,就是按钮按一下它关闭一会又自动开始转。最后找到了徐大佬,才解决了问题。
猛地关闭风扇,电流会回流,然后把相应的下限变高(我也没听太明白)这个大概就是(buttonValue = analogRead(buttonpin)) > 15而不是大于0的原因。
一开始我用的数字信号,最后用了模拟信号才调出来。。
const int IB = 6; const int IA = 5; int buttonpin = A1; boolean state = false; void setup() { Serial.begin(9600); pinMode(IA, OUTPUT); pinMode(IB, OUTPUT); pinMode(buttonpin, INPUT_PULLUP); } void loop() { int buttonValue = 0; while ((buttonValue = analogRead(buttonpin)) > 15) { Serial.println(buttonValue); } Serial.print("a"); if (state == true) { analogWrite(IA, 0); analogWrite(IB, 0); } else { analogWrite(IA, 105); analogWrite(IB, 0); } state = !state; delay(600); }
串口控制风扇挡位:
const int IB=6; const int IA=5; void setup(){ Serial.begin(9600); pinMode(IA,OUTPUT); pinMode(IB,OUTPUT); } void loop(){ if(Serial.available()>0){ char ch=Serial.read(); Serial.println(ch); if(ch == 'l'){ analogWrite(6,0); analogWrite(5,0); //Serial.println("l"); } else if(ch == 'm'){ analogWrite(6,0); analogWrite(5,150); // Serial.println("m"); } else if(ch =='h'){ analogWrite(6,0); analogWrite(5,250); // Serial.println("h"); } } }
光敏电阻控制风扇挡位:
const int IB=6; const int IA=5; void setup(){ Serial.begin(9600); pinMode(IA,OUTPUT); pinMode(IB,OUTPUT); } void loop(){ int sv=analogRead(A0); Serial.println(sv); //光越大sv越小 analogWrite(IB,0); analogWrite(IA,(600-sv)*0.425 ); }
串口控制风扇模式:
主要是用了一些条件语句把上面的模块拼到一块,应该能看明白,我就不多说了
const int IB = 6; const int IA = 5; int buttonpin = A1; boolean state = false; void setup() { Serial.begin(9600); pinMode(IA, OUTPUT); pinMode(IB, OUTPUT); pinMode(buttonpin, INPUT_PULLUP); } void loop() { if (Serial.available() > 0) { char ch = Serial.read(); if (ch == '4') { Serial.println("你想要智能风扇的哪个功能"); Serial.println("1.按键控制风扇") ; Serial.println("3.光敏传感器控制风扇"); Serial.println("4.从新选择"); } else { while (1) { if (ch == '1') { int buttonValue = 0; if (Serial.available() > 0) { char bb = Serial.read(); if (bb == '4') { analogWrite(IA, 0); analogWrite(IB, 0); break; } } else { while ((buttonValue = analogRead(buttonpin)) > 15) { // Serial.println(buttonValue); } // Serial.print("a"); if (state == true) { analogWrite(IA, 0); analogWrite(IB, 0); } else { analogWrite(IA, 105); analogWrite(IB, 0); } state = !state; delay(600); } } else if (ch == '3') { int sv = analogRead(A0); // Serial.println(sv); //光越大sv越小 analogWrite(IB, 0); analogWrite(IA, (600 - sv) * 0.425 ); if (Serial.available() > 0) { char ch = Serial.read(); if (ch == '4') { analogWrite(IA, 0); analogWrite(IB, 0); break; } else { Serial.println("如果想要切换功能请输入4"); } } } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)