Mục tiêu
- Đọc nhiệt độ từ cảm biến LM35 qua chân analog.
- Hiển thị nhiệt độ lên màn hình LCD 16x2 (I2C) hoặc OLED I2C.
Phần cứng cần có
- Arduino Uno/Nano
- Cảm biến LM35
- Dây nối Breadboard
Kết nối phần cứng
LM35
- Chân 1 (VCC) → 5V
- Chân 2 (OUT) → A0
- Chân 3 (GND) → GND
LCD 16x2 I2C
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
Cài thư viện
Vào Tools → Manage Libraries và cài đặt:
LiquidCrystal_I2C
(cho LCD)
Code hiển thị nhiệt độ từ LM35 lên LCD 16x2 I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int analogPin = A0;
const float voltage = 5.0;
const float sensitivity = 0.01;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Địa chỉ có thể là 0x27 hoặc 0x3F
// Định nghĩa ký tự độ (°)
byte degree[8] = {
0b00000,
0b00110,
0b01001,
0b00110,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup() {
lcd.init();
lcd.backlight();
// Tạo ký tự độ tại vị trí 0 trong bộ nhớ CGRAM của LCD
lcd.createChar(0, degree);
}
void loop() {
int sensorValue = analogRead(analogPin);
float voltageRead = sensorValue * voltage / 1023.0;
float temperatureC = voltageRead / sensitivity;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Nhiet do:");
lcd.print(temperatureC);
lcd.write(byte(0));
lcd.print("C");
lcd.setCursor(2, 1);
lcd.print("LM35 Sensor");
delay(1000);
}
Demo
Giải thích các hàm quan trọng
lcd.init()
: Khởi tạo giao tiếp I2C cho LCDlcd.setCursor(x, y)
: Đặt vị trí con trỏ để in dữ liệulcd.print()
: In ra màn hình LCDlcd.clear()
: Xóa màn hìnhanalogRead(A0)
: Đọc giá trị điện áp từ chân analog (0–1023).voltageRead = sensorValue * 5.0 / 1023.0
: Chuyển giá trị ADC về điện áp thực.temperatureC = voltageRead / 0.01
: LM35 xuất 10mV cho mỗi °C, nên chia để ra nhiệt độ.lcd.setCursor(x, y)
vàlcd.print()
: Hiển thị dữ liệu trên LCD.
Mở rộng
- Thêm nút nhấn để chuyển đổi giữa °C và °F.
- Lưu nhiệt độ cao nhất/thấp nhất trong ngày.
- Hiển thị biểu tượng hoặc biểu đồ nhỏ trên OLED.
Lưu ý: LM35 không cần thư viện, chỉ cần đọc analog và tính toán điện áp → nhiệt độ. Hãy đảm bảo dây nối chắc chắn để tránh nhiễu tín hiệu.
Tags
Arduino basic
Nhận xét