arduino智能风扇系统

研究方法与思路:

我们小组一开始找的是一个别人做好的项目,按键控制风扇挡位,不同挡位对应不同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");}}}}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

verilog 生成块_如何高效的编写Verilog——终极版

为了高效的编写Verilog,通常有些编辑器插件可以自动生成代码,比如自动端口定义,自动连线,自动实例化等等。公司的环境有很好用的自动化插件,想给自己的电脑也整个怎么做。比如Emacs中有个插件叫verilog-mode。但是博主…

arduino串口输入改变模式模块

最新更新: 当时太嫩,做这个不知道arduino还有中断的方法,利用中断的方法可以比下面这种循环判断的方法更简单。 最近做了不少arduino智能系统,我发现在与用户交互的过程中,经常用到:通过在串口输入不同的值达到手动控…

android悬浮动态权限,Android 获取判断是否有悬浮窗权限的方法

现在很多应用都会用到悬浮窗,很多国产rom把悬浮窗权限加入控制了,你就需要判断是否有悬浮窗权限,然后做对应操作。Android 原生有自带权限管理的,只是被隐藏了。看android源码在android.app下就有个AppOpsManager类。类说明如下&a…

剩余 大小 查看内存_JVM的内存分配策略以及进入分代的条件

JVM的参数和知识点太多啦,记录下来,供自己随时回顾。java对象什么时候进入年轻代(新生代)?java对象什么时候进入老年代?对象优先在Eden分配大对象直接进入老年代空间分配担保机制java对象什么时候进入年轻代…

Arduino的串口结束符及串口缓冲区

文章目录1.深入理解缓冲区和Serial.available():2.深入理解串口结束符3.验证结论:1.深入理解缓冲区和Serial.available(): 运行下面的代码,我发现如果不在串口输入任何数字,就会一直显示“no”,输入一个数…

android 圆角边框边框渐变,支持边框、圆角、渐变色、透明度的GradientButton

最近在项目中发现好多Button背景颜色相同,但圆角大小不等的Button,这样就得写一大堆的shape或者selector,不便于管理及后期维护,于是乎变想能不能写一个支持边框、圆角、渐变色、透明度的万用Button呢。为了能够兼容button自带的属…

(斜率,点和线段)zzuli1196数星星(二)

题目描述 一天,小明坐在院子里数星星,Gardon就出了个难题给他,让他数数天上的星星最多有多少个是在同一条直线上的。天上的星星太多了,小明马上就看花了眼,你能写个程序来帮他计算么? 输入 首先输入一个整…

鸿蒙ide如何运行,深入浅析华为鸿蒙IDE安装与Hello World

一、系统安装1. 到官网下载HUAWEI DevEco Studio2. 安装二、创建项目创建项目目前还没有手机选项,所以我先选择一个电视:IDE的环境看起来和idea差不多,应该比较容易上手。从“关于”里也可以看到,确实是基于IDEA开源版本开发的。我…

springboot 上传文件解析入库_SpringBoot + easyexcel + WebUploader 实现文件上传并解析

1. WebUploader的使用,引入css和js,css其实没什么用:2. 定义上传框:选择文件开始上传3.相关jquery:// 文件上传jQuery(function() {var $ jQuery,$list $(#thelist),$btn $(#ctlBtn),state pending,uploader;uploa…

中快捷搜索_同事用1分钟,我用半小时,原来是因为这8个Word快捷键,秒杀一切办公技巧...

同事用1分钟,我用半小时,这8个Word快捷键,秒杀一切办公技巧​mp.weixin.qq.com文|王羽卒今天给小伙伴们分享几个实用又有效的快捷键,帮助快速完成工作,同事用了半小时,你1分钟就能解决哟&#x…

动态规划理论基础

(采用维特根斯坦的表述方式) 1.达成目的过程可以由不同阶段组成 2.阶段由达成目的的条件确定 (注:规定每一次走一步,第一步就是一个阶段) 3.每个阶段由不同的状态组成 4.状态是阶段中可能面临的所有情况 (注:第一步落脚点可能有多个&am…

荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...

4月24~26日,华为将召开开发者大会,届时手机使用的鸿蒙系统将正式上线,华为和部分荣耀手机将会首先支持。其实,早在2月22日的华为Mate X2的发布会上,余承东就说过4月发布鸿蒙OS。华为并不想推出鸿蒙系统,如果…

android 7.0新增控件,自定义Android控件,封装Arcgis for Android测距测面积工具控件

控件的功能包括,测距、测面积、撤销、恢复、清除、完成六个功能。测距:在地图上绘制线段进行长度测量测面积:在地图上绘制一个面,进行面积测量撤销:撤销到上一步绘制,只能撤销未完成的测量恢复:…

cpython需要另外安装吗_在windows环境下安装和使用Python(CPython)

在windows环境下安装和使用Python(CPython)一、下载1.选择Python版本打开Windows版Python官网下载链接,选择Latest Python 3 Release - Python 3.8.3 。(推荐选择Python3.x,也可以选择其他版本)2.选择需要的Python类型在File中选择Windows x86-64 execut…

python模块:命名空间与重载模块

文章目录模块命名空间&#xff1a;重载模块&#xff1a;#module2.py print(starting to load...) import sys name42 def func():pass class klass:pass print(done loading.) >>> import module2 starting to load... done loading. >>> module2.sys <mo…

哪个html在大部分浏览器下是不隐藏的,前端浏览器兼容性问题总结

市场上浏览器种类很多&#xff0c;不同浏览器的内核也不尽相同&#xff0c;所以各个浏览器对网页的解析存在一定的差异。浏览器内核主要分为两种&#xff0c;一是渲染引擎&#xff0c;另一个是js引擎&#xff0c;内核更加倾向于说渲染引擎。常见的浏览器内核可以分四种&#xf…

多媒体分析与理解_如何设计一个出色的数字多媒体展厅?

展厅设计方案是了解每个多媒体设备的应用方法&#xff0c;那么如何让设备跟展厅结合一起&#xff0c;展示出我们想要的科技效果&#xff0c;核心就是用户体验度。今天华南数字科技的小编就为您介绍下数字多媒体展厅对用户体验方面的几个重点要素。1、细节展示不论多前卫的多媒体…

python模块:运行机制与编写方法

文章目录python模块的导入机制&#xff1a;python模块编写方法&#xff1a;#mod1: def printer(x):print(x) #mod2: print(hello) n1 #mod3: x1 y[2,3] >>> import mod1 >>> mod1.printer(hello) hello >>> from mod1 import printer >>> …

html标签a+hover事件,触发a标签hover事件,如何在元素底部显示蓝色底块_html/css_WEB-ITnose...

回复讨论(解决方案)你可以用li:hover border-bottom:3px solid blue;background-position:bottom; //是针对背景图片的位置,不是背景颜色height: 1px;//这里的高度为什么是1px?有什么目的&#xff1f;width:45px;可以采用1楼的做法&#xff0c;设置底部边框还有给你个动画效果…

微信小程序 界面从右边滑出_微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)...

本文实例讲述了微信小程序MUI侧滑导航菜单。分享给大家供大家参考&#xff0c;具体如下&#xff1a;实现的目标—-YDUI的Popup组件点击列表图标—-左侧的菜单栏显示—-点击关闭按钮或者右侧的遮罩层—-左侧菜单栏关闭实现方案1&#xff1a;左侧菜单和右侧展示页面分为上下两层w…