راه اندازی lcd کاراکتری با i2c و اردوینو توضیحات کامل
در این آموزش از ساخت پروژه نحوه تست و راه اندازی lcd کاراکتری با مبدل i2c و اردوینو را اموزش خواهیم داد در مقاله قبل نحوه راه اندازی lcd را بدون i2c اموزش دادیم برای دیدن اینجا کلیک کنید
اگر تا به حال سعی کرده اید یک صفحه نمایش LCD را به یک آردوینو متصل کنید ، ممکن است متوجه شده باشید که پین های زیادی بر روی آردوینو مصرف می کند.
راه حل استفاده از ماژول I2C است. این فقط دو پایه ورودی / خروجی مصرف می کند که حتی بخشی از مجموعه پایه های ورودی / خروجی دیجیتال نیستند و همچنین می توانند با سایر دستگاه های I2C به اشتراک گذاشته شوند.
مبدل i2c
مانند تصویر زیر مبدل i2c به lcd متصل میشه
کل پایه های lcd رو با i2c به 4 تا پایه تبدیل کردیم. اتصالات به شرح زیر است:
GND یک پایه زمین است و باید به زمین آردوینو متصل شود.
VCC ولتاژ ماژول و LCD را تأمین می کند. آن را به خروجی 5 ولت آردوینو یا منبع تغذیه جداگانه وصل کنید.
SDA یک پین سریال داده است. این خط هم برای انتقال و هم برای دریافت استفاده می شود. به پین SDA موجود در Arduino متصل شوید.
SCL یک پین سریال است. این یک سیگنال زمان بندی است که توسط دستگاه Bus Master ارائه می شود. به پین SCL موجود در Arduino متصل شوید.
شماتیک راه اندازی lcd کاراکتری 2×16 با مبدل i2c
در راه اندازی lcd 2×16 با i2c اتصال به صورت i2c بسیار آسان تر از اتصال LCD به صورت ساده به اردوینو است. فقط به جای 12 پایه باید 4 پایه را به اردوینو متصل کنید.
اکنون ما با پین هایی که برای ارتباطات I2C استفاده می شوند به اردوینو متصل کنیم توجه داشته باشید که هر برد آردوینو دارای پین های I2C مختلف است که باید به همین ترتیب متصل شوند. در برد های آردوینو با طرح R3 ، SDA (خط داده) و SCL (خط ساعت) روی هدرهای پین نزدیک به پایه AREF قرار دارند. آنها همچنین به عنوان A5 (SCL) و A4 (SDA) شناخته می شوند.
اگر از برد آردوینو دیگری استفاده می کنید ، لطفاً به جدول زیر مراجعه کنید.
SDA | SCL | Arduino |
---|---|---|
A4 | A5 | Arduino Uno |
A4 | A5 | Arduino Nano |
20 | 21 | Arduino Mega |
2 | 3 | Leonardo/Micro |
بعد از اینکه LCD را توسط i2c به lcd متصل کردید ، باید کنتراست نمایشگر را تنظیم کنید. در ماژول I2C پتانسیومتر را با یک پیچ گوشتی کوچک بچرخانید.
اتصال USB Arduino را به سیستم متصل کنید تا LCD را روشن شود. باید ببینید نور پس زمینه روشن است. حالا پتانسیومتر را بچرخانید تا اولین سطر lcd ظاهر شود.
نصب کتابخانه I2C برای اردوینو
برای پروگرامر کد رو اردوینو باید کتابخانه ای به نام LiquidCrystal_I2C نصب کنید. البته اگه روی اردوینو شما نصب هست دیگه نیازی به نصب نیست این کتابخانه نسخه بهبود یافته کتابخانه LiquidCrystal است که همراه با Arduino IDE شما ارائه می شود.
برای نصب کتابخانه در نرم افزار اردوینو به منو Sketch بعد Include Library بروید و روی Manage Libraries کلیک کنید
در قسمت جستجو liquidcrystal تایپ کنید و کتابخانه LiquidCrystal I2C توسط Frank de Brabander نصب کنید
کد تست و راه اندازی i2c با اردوینو و LCD
قبل از اینکه کد اصلی رو روی اردوینو اپلود کنیم و هر متنی که خواستیم روی lcd بنویسیم باید ادرس ماژول i2c رو پیدا کنیم راه اندازی i2c با اردوینو
آدرس I2C شما به سازنده بستگی دارد. اگر LCD شما دارای تراشه PCF8574 از Texas Instruments است ، آدرس I2C پیش فرض آن 0x27Hex است. اگر LCD شما دارای تراشه PCF8574 از نیمه هادی های NXP باشد ، آدرس I2C پیش فرض آن 0x3FHex است.
بنابراین LCD شما احتمالاً دارای آدرس I2C 0x27Hex یا 0x3FHex است. با این وجود توصیه می شود قبل از استفاده از میزان واقعی I2C مطلع شوید. خوشبختانه یک روش ساده برای انجام این کار وجود دارد توسط کد زیر میتونیم ادرس i2c رو پیدا کنیم طبق شماتیک بالا i2c رو به اردوینو متصل کنید و کد زیر را پروگرام کنید
#include <Wire.h>
void setup() {
Serial.begin (9600);
while (!Serial)
{
}
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 8; i < 120; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1);
}
}
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");
}
void loop() {}
بعد از اینکه کد رو اپلود کردید سریال مانیتور رو اجرا کنید و مانند تصویر زیر ادرس رو نوشته اینو یادداشت کنید
بعد از اینکه ادرس رو دریافت کردیم بریم سراغ کد اصلی قبل از اینکه کد رو پروگرام کنیم باید یه تغییراتی رو داخل کد بدیم
متن آزمایشی زیر متن @megatronic.ir و LCD test را بر روی LCD نمایش میدهد. و شما میتوانید متن را تغییر دهید
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.begin();
lcd.clear();
}
void loop()
{
lcd.setCursor(1, 0);
lcd.print("@megatronic.ir");
lcd.setCursor(4, 1);
lcd.print("LCD test");
}
داخل کد زیر باید ادرس i2c رو وارد کنیم به جای 0x27 اون ادرس i2c خودتون رو بنویسید در غیر اینصورت متنی روی lcd نوشته نخواهد شد
LiquidCrystal_I2C lcd(0x27,16,2);
و برای عدد 2 و 16 این دوتا عدد سایز lcd هستن من چون از lcd 2×16 استفاده میکنم این عدد رو گذاشتم در صورتی که شما از هر نمونه ای از lcd کارکتری استفاده میکنید مثلا 20×4 شما باید عدد 20 و 4 رو قرار بدید
در کد بعدی توسط اعدادی ( 1 , 0 ) که در جلوی setCursor نوشته شده میتونیم مکان متن رو مشخص کنیم که بستگی به نوع lcd داره اگه از نمونه lcd 2×16 استفاده میکنید ( 1 , 0 ) به جای 0 عدد 1 بزاریم متن ما در ستون دوم قرار میگیره و اگه 0 باشه در ستون اول.
به جای عدد 1 میتونید عددی بین 0 تا 16 قرار بدیدم حرف اول متن ما قرار میگیره روی اون کارکتری که ما مشخص کردیدم به تصویر زیر دقت کنید متوجه خواهید شد
lcd.setCursor(1, 0);
lcd.print("@megatronic.ir");
امیدوار که مطالب راه اندازی i2c lcd با اردوینو برایتان مفید بوده باشه
ممنونم بسیار مفید بود
سلام
خواهش میکنیم