|
|
【Arduino入门教程】用LM35和LCD1602制作数字温度计
所需材料:
- Arduino UNO 开发板 x1
- LM35温度传感器 x1
- LCD1602液晶屏(带I2C转接板)x1
- 面包板 x1
- 杜邦线若干
- 10K电位器 x1(不带I2C时调节对比度用)
总成本:约20-30元
接线说明:
LM35温度传感器:
- VCC 接 Arduino 5V
- GND 接 Arduino GND
- OUT 接 Arduino A0
LCD1602(I2C接口版):
- VCC 接 Arduino 5V
- GND 接 Arduino GND
- SDA 接 Arduino A4
- SCL 接 Arduino A5
完整代码:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Temperature");
lcd.setCursor(0, 1);
lcd.print("Monitor v1.0");
delay(2000);
lcd.clear();
}
void loop() {
int rawValue = analogRead(A0);
float voltage = rawValue * 5.0 / 1024.0;
float tempC = voltage * 100.0;
float tempF = tempC * 9.0 / 5.0 + 32.0;
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.print(tempC, 1);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(tempF, 1);
lcd.print((char)223);
lcd.print("F ");
delay(1000);
}
安装依赖库:
1. 打开Arduino IDE
2. 工具 - 管理库
3. 搜索 "LiquidCrystal I2C"
4. 安装 "LiquidCrystal I2C" by Frank de Brabander
进阶功能代码 - 带最高最低温度记录:
float maxTemp = -999;
float minTemp = 999;
void loop() {
int rawValue = analogRead(A0);
float tempC = rawValue * 5.0 / 1024.0 * 100.0;
if (tempC > maxTemp) maxTemp = tempC;
if (tempC < minTemp) minTemp = tempC;
lcd.setCursor(0, 0);
lcd.print("Now:");
lcd.print(tempC, 1);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("H:");
lcd.print(maxTemp, 1);
lcd.print(" L:");
lcd.print(minTemp, 1);
delay(1000);
}
项目扩展思路:
1. 加入蜂鸣器,超过设定温度报警
2. 加入DS18B20防水温度传感器测水温
3. 加入SD卡模块记录温度数据
4. 加入ESP8266实现WiFi远程监控
5. 做一个温湿度计(加DHT11传感器)
6. 加上继电器控制风扇自动开关
常见问题解答:
Q: LCD只亮背光不显示字符?
A: 调节I2C板上的蓝色电位器,或者检查I2C地址是否正确(用I2C Scanner扫描)
Q: 温度读数不准?
A: LM35精度约0.5度,如需更高精度建议换DS18B20
Q: LCD显示乱码?
A: 检查I2C地址,常见地址为0x27或0x3F
适合新手练习,代码简单易懂。有问题欢迎回帖交流! |
|