ThingerBits
beginnerArduino

Arduino සමඟ I2C LCD එක භාවිතා කරන හැටි (PCF8574 Backpack)

by Test Admin10 Jul 2026 6 0 0
Arduino සමඟ I2C LCD එක භාවිතා කරන හැටි (PCF8574 Backpack)

සම්පූර්ණ Tutorial එක — Wiring, Diagrams, Code Examples සමඟ Sinhala + English Technical Terms

1. හැඳින්වීම (Introduction)

අපේ 16×2 LCD tutorial එකේදී display එක wire කරන්න pins 6ක්+ ගියා — potentiometer එකකුත් ඕන වුණා. I2C backpack එක ඒ ඔක්කොම විසඳනවා: PCF8574 chip එක I2C data එක LCD එකට ඕන parallel data වලට convert කරනවා — wires 4යි, contrast pot එකත් backpack එකේම!

මේ tutorial එකේදී: backpack එකේ වැඩ, I2C address හොයන හැටි, LiquidCrystal_I2C library + custom characters.

2. Backpack + Wiring එක

Arduino සමඟ I2C LCD එක භාවිතා කරන හැටි (PCF8574 Backpack)
රූපය 1: PCF8574 backpack — A4/A5 I2C bus එකට

2.1 I2C Address එක

Backpack chip brand එක අනුව address එක වෙනස්: Texas Instruments PCF8574 = 0x27, NXP PCF8574A = 0x3F. A0/A1/A2 solder jumpers වලින් addresses 8ක් දක්වා වෙනස් කරන්නත් පුළුවන් (LCDs කීපයක් එක bus එකේ!). Address එක sure නැත්නම්: File → Examples → Wire → i2c_scanner sketch එක run කරලා Serial Monitor එක බලන්න.

3. Library + Code

Library Manager: "LiquidCrystal I2C" by Frank de Brabander install කරන්න.

3.1 Hello World

#include <LiquidCrystal_I2C.h>
// address, columns, rows
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
  lcd.init();       // initialize
  lcd.backlight();  // backlight ON
  lcd.setCursor(0, 0);      // col 0, row 0
  lcd.print("Hello, world!");
  lcd.setCursor(0, 1);      // second row
  lcd.print("I2C = easy!");
}
void loop() { }

3.2 Custom Characters

// 5x8 pixel heart
byte heart[8] = {
  0b00000, 0b01010, 0b11111, 0b11111,
  0b01110, 0b00100, 0b00000, 0b00000
};
void setup() {
  lcd.init();
  lcd.backlight();
  lcd.createChar(0, heart);  // slot 0-7
  lcd.setCursor(0, 0);
  lcd.print("I ");
  lcd.write(0);              // heart print!
  lcd.print(" Arduino");
}
createChar(slot, array) — Custom 5×8 characters 8ක් දක්වා (slots 0–7). Online "LCD custom character generator" tools වලින් pixel art හදන්න ලේසියි.
lcd.clear() / noBacklight() / scrollDisplayLeft() — වෙනත් useful functions — old LCD tutorial එකේ API එකම.

4. වැදගත් Tips

  • Display blank / boxes විතරයි — Backpack එකේ contrast pot එක කරකවන්න — 90%ක් ඒකයි ප්‍රශ්නය!
  • Nothing at all — Address එක වැරදියි — i2c_scanner run කරන්න. 0x27 ↔ 0x3F මාරු කරලා බලන්න.
  • I2C bus sharing — RTC (0x68), OLED (0x3C), BME280 (0x76) — ඔක්කොම එකට LCD (0x27) එක්ක එක bus එකේ වැඩ!
  • lcd.begin() vs lcd.init() — Library versions අනුව — init() fail නම් begin() try කරන්න.

5. Project Ideas

  • Sensor Dashboard — DHT11 + soil moisture — line 1 temp, line 2 moisture.
  • Menu System — Rotary encoder tutorial එක — scroll + select UI.
  • Clock + Alarm — DS3231 + buzzer + custom bell character!
  • Multi-LCD Status Board — Addresses වෙනස් කරලා LCDs 2-3ක් එක bus එකේ.

6. සාරාංශය (Summary)

I2C LCD = 16×2 LCD + PCF8574 backpack — wires 4යි. මතක තියාගන්න: address 0x27/0x3F (scanner sketch එකෙන් confirm), contrast pot backpack එකේ, LiquidCrystal_I2C library, createChar custom symbols, I2C bus එක අනිත් devices එක්ක share. LCD projects දැන් clean + simple!

Reference / මූලාශ්‍රය:

මේ tutorial එක ලියුවේ පහත මූලාශ්‍රයේ තොරතුරු පදනම් කරගෙන (රූප සටහන් සහ code examples අලුතින්ම හදපු ඒවා): Last Minute Engineers — I2C LCD with Arduino