系列文章目录
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”
}
}
总结
以上就是今天要讲的内容,本文在一代的简易版本上进行了版本迭代,如果你觉得不错,请给一个赞吧!