📟 نمایشگر LCD 16×2 با ماژول I2C (LCD 16x2 I2C)
| اسم انگلیسی | LCD 16x2 I2C |
|---|---|
| در ووکوی (Wokwi) | wokwi-lcd1602 |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود آردوینو · رایگان |
نمایشگر LCD 16×2 با ماژول I2C (LCD 16x2 I2C) همان LCD کاراکتری دو خط و شانزده ستونی است که یک برد کوچک پشتش لحیم شده تا بهجای دوازده سیم، فقط با چهار سیم وصل شود. برای نمایش دما، منو، شمارنده، پیام قفل رمزدار و هر عددی که باید بدون کامپیوتر دیده شود، سادهترین نمایشگر آردوینو است.
LCD I2C در ووکوی (Wokwi)
در ووکوی همان قطعهی wokwi-lcd1602 است، با ویژگی "pins": "i2c" که آن را از نسخهی شانزدهپایه به نسخهی چهارپایهی I2C تبدیل میکند. پایهها GND، VCC، SDA و SCL هستند و آدرس 0x27:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-lcd1602", "id": "lcd1", "top": -120, "left": 0, "attrs": { "pins": "i2c" } }
],
"connections": [
[ "lcd1:GND", "uno:GND.1", "black", [] ],
[ "lcd1:VCC", "uno:5V", "red", [] ],
[ "lcd1:SDA", "uno:A4", "green", [] ],
[ "lcd1:SCL", "uno:A5", "blue", [] ]
]
}
| پایهی ماژول I2C | آردوینو Uno | مگا / ESP32 |
|---|---|---|
| GND | GND | GND |
| VCC | 5V | 5V / VIN |
| SDA | A4 | 20 / GPIO21 |
| SCL | A5 | 21 / GPIO22 |
اگر نسخهی بدون ماژول را میخواهی، صفحهی LCD 16×2 معمولی را ببین. LCD I2C در تینکرکد فارسی جزو اشتراک پلاس است؛ مثالهایش برای خواندن رایگان باز میشوند و برای اجرا پلاس لازم داری.
سیمکشی با آردوینو (مدار واقعی)
پشت LCD واقعی یک برد کوچک با تراشهی PCF8574 لحیم شده که چهار پایه دارد. ترتیب این چهار پایه روی ماژولهای مختلف یکی نیست، پس به نوشتهی کنار هر پایه نگاه کن، نه به جای آن.
| پایهی ماژول | آردوینو Uno | نکته |
|---|---|---|
| GND | GND | زمین مشترک |
| VCC | 5V | با ۳٫۳ ولت نور پسزمینه و کنتراست ضعیف میشوند |
| SDA | A4 | دادهی I2C |
| SCL | A5 | کلاک I2C |
روی همین ماژول یک پیچ آبی کوچک (پتانسیومتر کنتراست) و معمولاً یک جامپر برای نور پسزمینه هست. اگر LCD روشن شد ولی متنی ندیدی، اول همان پیچ را آرام بچرخان؛ اگر جامپر نور برداشته شده باشد، صفحه تاریک میماند. چون آدرس I2C این ماژول با OLED و ساعت RTC فرق دارد، میتوانی هر سه را همزمان روی همان A4 و A5 داشته باشی.
کد نمونه: کرنومتر
// LCD 16x2 I2C: a simple mm:ss stopwatch
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // address, columns, rows
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Stopwatch");
}
void loop() {
unsigned long s = millis() / 1000;
int minutes = s / 60;
int seconds = s % 60;
lcd.setCursor(0, 1);
if (minutes < 10) lcd.print('0');
lcd.print(minutes);
lcd.print(':');
if (seconds < 10) lcd.print('0');
lcd.print(seconds);
delay(200);
}
LCD هر چیزی را که رویش نوشتهای نگه میدارد تا رویش بنویسی؛ برای همین صفر جلوی عددهای تکرقمی را خودمان چاپ میکنیم تا طول متن همیشه ثابت بماند و رقم اضافهای از قبل باقی نماند. نسخهی کامل با تاریخ و ساعت را در پروژهی ساعت دیجیتال (Digital Clock) میبینی.
اشتباههای رایج
- رقم جامانده: وقتی عدد از ۱۰ به ۹ میرسد و جای خالی را پاک نمیکنی، روی صفحه «90» میبینی. یا صفر جلویش بگذار یا بعد از عدد چند فاصله چاپ کن.
- آدرس اشتباه: ماژولهای 0x3F با کد 0x27 هیچ چیزی نشان نمیدهند.
- init یا begin: نسخههای مختلف کتابخانهی LiquidCrystal_I2C تابع شروع متفاوتی دارند؛ اگر خطای کامپایل گرفتی، نسخهی کتابخانه را چک کن.
- پایهی I2C در مگا و ESP32: روی این بردها A4 و A5 جای I2C نیستند؛ از جدول بالا استفاده کن.
آموزشهای مرتبط
- نمایشگر LCD کاراکتری ۱۶×۲ با ماژول I2C در آردوینو
- LCD I2C با میکروپایتون روی پیکو
- کیپد ۴×۴ برای ساختن منو کنار LCD
- سنسور DHT برای نمایش دما روی LCD
سؤالهای رایج
آدرس LCD I2C چند است، 0x27 یا 0x3F؟
بستگی به تراشهی ماژول پشت LCD دارد: PCF8574 معمولاً 0x27 و PCF8574A معمولاً 0x3F. در ووکوی 0x27 است. اگر روی مدار واقعی چیزی نمایش داده نشد، اول آدرس را عوض کن.
LCD روشن است ولی فقط مربع سفید یا هیچ نوشتهای نشان نمیدهد؛ چرا؟
یا کنتراست تنظیم نیست یا آدرس اشتباه است. پیچ کوچک آبی پشت ماژول (پتانسیومتر کنتراست) را آرام بچرخان و مطمئن شو آدرس در کد درست است.