Arduino小白的学习历程

Arduino小白的学习历程

例7 温度报警器

作为一名刚接触Arduino的小白,觉得温度报警器这个东西特别新鲜,先把它的效果描述一下:

效果一:打开串口监视器(至于怎么理解串口监视器,我来说说自己的想法,如果哪点说错了,望各位大佬指证:串口监视器,类似于c语言中,打开的那个CMD窗口,通过串口监视器。可以debug自己的程序,同时,也能输出一些信息到电脑屏幕上,总之,是个特别好用的东西),能看到室外温度的变化情况。
效果二:当温度超过一定的阈值时(这里假定是20度)温度报警器发出类似警笛的声音,同时,红灯闪烁。

废话不说,直接上代码

int val;//val变量用于读取模拟端口A0的值,范围是0-1023
int lightval;//lightval变量控制用于灯的闪烁
int toneval;//toneval变量用于报警器的声音
double tempature;//tempature变量用来表示室外的温度
double sinval;//sinval变量用于转换成三角函数值
unsigned long tepTimer;
void setup() {
  pinMode(A0,INPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);//数字9号口输出PWM信号,这是一个连续的信号。
  Serial.begin(9600);//建立串口通信

}

void loop() {
val=analogRead(A0);//读取模拟端口A0的数值
tempature=val*(5/10.23);//将A0口读取到的数值转换成温度值
if(tempature>=20)
{
  
for(int x=0;x<180;x++)
{
  sinval=sin(x*(3.1412/180));
  toneval=2000+(int)(sinval*1000);
  lightval=200+(int)(sinval*500);
  tone(8,toneval);//为蜂鸣器写入tonevalHZ的频率
  analogWrite(9,lightval);
  delay(2);
 
}

  
}
//当温度大于20度时,蜂鸣器报警,同时灯闪烁
else
{
noTone(8);
analogWrite(9,LOW);
  
}
//当温度小于20度时,蜂鸣器停止报警,同时灯熄灭
if(millis()-tepTimer>500)
{ tepTimer=millis();
Serial.print("tempature:");
Serial.print(tempature);
Serial.println("℃");}

}
//设置系统时间,每隔500ms输出一次温度

代码说明:简单的 if-else判断,唯一值得注意的是,如何让蜂鸣器发出类似警笛的声音。这一部分代码楼主也不太清除其背后的道理,通过查阅网上资料找的

使蜂鸣器发出警笛声音的代码

for(int x=0;x<180;x++)
{
  sinval=sin(x*(3.1412/180));
  toneval=2000+(int)(sinval*1000);
  tone(8,toneval);
  delay(2);}

按照下面的图连接电路(别连接错了,注意面包板的排线方式,同时一定要为LED灯加电阻,楼主总是忘记😭)
用的VBB画的,不太好看,能看懂就行

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值