Arduino + LM35/36 + LCD1602 制作数字温度计
物料清单
| 元件 | 数量 |
|---|---|
| Arduino UNO R3 | 1 |
| LM35 或 LM36 模拟温度传感器 | 1 |
| LCD1602 字符液晶 (HD44780, 16×2) | 1 |
| 10kΩ 电位器 (调对比度) | 1 |
| 面包板 + 跳线 | 1套 |
接线图

- LCD 引脚:RS→D12, E→D11, D4~D7→D5~D2, RW→GND, VSS→GND, VDD→5V, A→3.3V(或5V限流), K→GND, VO→电位器中间脚
- LM35:VCC→5V, GND→GND, OUT→A0
- ⚠️ LM35 引脚顺序为 VCC-OUT-GND(面对标面),接反会烧毁并发热至 280°C!
代码版本 A:华氏度显示 (Gaige Kerns 版)
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int sensorPin = A0;
void setup() { lcd.begin(16, 2); }
void loop() {
int raw = analogRead(sensorPin);
float voltage = raw * 5.0 / 1024.0;
float tempC = (voltage - 0.5) * 100; // LM35: 10mV/°C, 0°C=0.5V
float tempF = tempC * 9 / 5 + 32;
lcd.setCursor(0, 0);
lcd.print(tempF, 1);
lcd.print(" \xDF""F"); // °F
delay(200);
}
代码版本 B:摄氏/华氏双行显示 (简化版)
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int inPin = A0;
void setup() { lcd.begin(16, 2); }
void loop() {
int val = analogRead(inPin);
float mv = val * 5000.0 / 1024.0;
float c = mv / 10.0; // LM35: 10mV/°C
float f = c * 9 / 5 + 32;
lcd.clear();
lcd.setCursor(0, 0); lcd.print(c, 1); lcd.print("C");
lcd.setCursor(0, 1); lcd.print(f, 1); lcd.print("F");
delay(1000);
}
常见问题
- 显示全黑/方块 → 调节电位器对比度
- 读数偏高/跳变 → 检查 LM35 接线、加 0.1µF 滤波电容靠近引脚、USB 供电噪声大可改外部 5V
- LM36 与 LM35 引脚定义不同,数据手册核对后再接线
进阶建议
- 换用 DS18B20 (1-Wire) 获得更高精度、多点测量
- 加入 SD 卡记录温度日志、或 ESP8266 上传云端
- 外壳设计:3D 打印/激光切割,做成桌面气象站
🌡️ 十分钟上手:最经典的 Arduino 入门项目,零库依赖、原理透明,适合课堂教学、亲子制作、快速验证模拟传感器读取。
制造工艺
- 树莓派 + Arduino UNO + 三星 SAMI 极速构建火灾检测系统
- Arduino Nano飞行模拟2020控制面板——LCD与CDI显示
- 自制 Arduino 伊斯兰祷告时间实时时钟
- Arduino UNO 驱动 16x2 LCD 实现动画与小游戏
- Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
- Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
- u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
- 在 Arduino Due 上实现语音识别与语音合成 - BitVoicer Server 方案
- Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
- 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目
- 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟
- Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试