【arduino项目学习:智能夜灯(进阶版)】

系列文章目录

arduino项目学习:智能夜灯



前言

该项目在之前发布的一代基础上,增添了其他功能,更富有挑战难度。


一、增添内容

温度传感器
将温度传感器连接到您的Arduino并使用
它用来测量温度。使用串行监视器
看看结果。

液晶显示器
将显示器连接到您的Arduino。显示
显示器上的当前温度。
显示自定义字符。
修改您的程序:在程序开始5秒钟时,显示一个启动屏幕
上面有你的名字和你自己创建的自定义角色。
5秒钟后显示温度。

液晶背光
根据温度更改显示器的背光颜色:
•如果温度过高,则显示器应为红色。
•如果温度过低,则显示器应为蓝色。
•如果温度良好,则显示器应为绿色。

记住最低和最高温度。
程序运行时,保存最高和最低测量值。
将按钮连接到您的Arudino。按下按钮后,程序会发生变化
在显示当前温度和最小/最大温度之间。

旋转角度传感器
将电位计连接到Arduiono。更改您的程序
以便电位计可以用于设置阈值
“太冷”和“太热”。

二、项目过程

1.头部定义

代码如下(示例):

#include <Wire.h>
#include "rgb_lcd.h"
#define LM35 A0
#define button 3
#define rotary A3

int val ;        //存放AD变量值
float temp ;     
float normTemp = 26;
float coldTemp = 25;
float hotTemp = 27;
float minnumber=100.0;
float maxnumber=0.0;
int rotaryValue;
int buttonState =0;
int old_buttonState = 0;
int state = 0;

rgb_lcd lcd;

2.setup定义

代码如下(示例):

void setup() 
{
  pinMode(LM35, INPUT);
  pinMode(rotary,INPUT);
  pinMode(button,INPUT);
  lcd.begin(16,2);
  lcd.setCursor(0,0);       //设置液晶开始显示的指针位置
  lcd.print("Zenghao!"); 
  delay(500); 
  lcd.clear();        //液晶清屏
  Serial.begin(9600);
}

3.loop定义

void loop() 
{
  float coldnumber,hotnumber;
  rotaryValue = analogRead(rotary);
  buttonState = digitalRead(button);
  val = analogRead(LM35);   //读取AD值
  temp = val * 0.48828125/10;      //转换为温度值的10倍,有利于液晶显示
  coldnumber = map(rotaryValue,0,1023,coldTemp,normTemp);
  hotnumber = map(rotaryValue,0,1023,normTemp,hotTemp);
  Serial.println(coldnumber);
  Serial.println(temp);
  
  if(temp < coldnumber)
  {
    lcd.setRGB(0, 0, 255);    
  }
  else if(temp > hotnumber)
  {
    lcd.setRGB(255, 0, 0);    
  }
  else
  {
    lcd.setRGB(0, 255, 0);  
  }
  
if(temp  < minnumber)
{ 
  minnumber = temp;
}
if(temp  < maxnumber)
{ 
  maxnumber = temp;
}
if(buttonState == HIGH && old_buttonState == LOW)
{
  state = 1 - state;
}
old_buttonState = buttonState;


  if(state == 1)
  {
    lcd.clear();        //液晶清屏
    lcd.setCursor(0,0);       //设置液晶开始显示的指针位置
    lcd.print("mintemp ="); //液晶显示“LM35 temp =”
    lcd.print(minnumber); 
    lcd.print((char)223);     //液晶显示“°”
    lcd.print("C");           //液晶显示“C” 

    lcd.setCursor(0,1);       //设置液晶开始显示的指针位置
    lcd.print("maxtemp ="); //液晶显示“LM35 temp =”
    lcd.print(maxnumber); 
    lcd.print((char)223);     //液晶显示“°”
    lcd.print("C");           //液晶显示“C”
  }
  else
  {
    lcd.clear();        //液晶清屏
    lcd.setCursor(0,0);       //设置液晶开始显示的指针位置
    lcd.print("LM35 temp ="); //液晶显示“LM35 temp =”
    lcd.setCursor(7,1);       //设置液晶开始显示的指针位置
    lcd.print((int)temp);  //液晶显示温度整数值
    lcd.print(".");           //液晶显示小数点
    lcd.print(int((temp-(int)temp)*100));  //LCD display temperature decimal value 
    lcd.print((char)223);     //液晶显示“°”
    lcd.print("C");           //液晶显示“C”
  }
}

总结

以上就是今天要讲的内容,本文在一代的简易版本上进行了版本迭代,如果你觉得不错,请给一个赞吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃饭团的饭桶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值