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 එක

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
