Bài 11: Hiển thị nhiệt độ LM35 lên LCD 16x2

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

GND VCC SD A SC L

Giải thích các hàm quan trọng

  • lcd.init(): Khởi tạo giao tiếp I2C cho LCD
  • lcd.setCursor(x, y): Đặt vị trí con trỏ để in dữ liệu
  • lcd.print(): In ra màn hình LCD
  • lcd.clear(): Xóa màn hình
  • analogRead(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)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.

Nhận xét

Mới hơn Cũ hơn