- I2C مواصلات پروٹوکول کیا ہے؟
- ضروری سامان
- I2C ماڈیول
- سرکٹ ڈایاگرام
- I2C کنٹرولر پتہ تلاش کرنے کے لئے کوڈ
- ESP32 کے لئے کوڈ
پچھلے سبق میں ، OLED کو ایس پی آئی مواصلات کا استعمال کرتے ہوئے ESP32 کے ساتھ انٹرفیس کیا گیا ہے جس میں 5 پن کا استعمال ہوتا ہے۔ اس ٹیوٹوریل میں ، ہم I2C مواصلات کی مدد سے ، صرف 2 پنوں کا استعمال کرتے ہوئے ، ESP32 کے ساتھ 16x2 LCD انٹرفیس کرتے ہیں ۔ یہ ESP32 کے ذریعہ استعمال ہونے والی پنوں کی تعداد کو کم کردیتا ہے تاکہ ESP32 پنوں کی زیادہ تعداد مختلف سینسروں میں مداخلت کرنے کے لئے آزاد رہے۔
I2C مواصلات پروٹوکول کیا ہے؟
I2C اصطلاح کا مطلب ہے " انٹر انٹیگریٹڈ سرکٹس" ۔ عام طور پر اس کو IIC یا I مربع C یا یہاں تک کہ کچھ جگہوں پر 2-تار انٹرفیس پروٹوکول (TWI) بھی کہا جاتا ہے لیکن اس کا مطلب ایک ہی ہے۔ I2C ایک مطابقت پذیر مواصلات کا پروٹوکول ہے ، اس کا مطلب یہ ہے کہ وہ دونوں ڈیوائس جو معلومات کو شیئر کررہی ہیں وہ عام گھڑی کا اشارہ شیئر کریں۔ اس میں معلومات کے تبادلے کے ل only صرف دو تاروں ، ایس ڈی اے اور ایس سی ایل ہیں ، جن میں سے ایس سی ایل کو گھڑی سگنل کے لئے استعمال کیا جاتا ہے اور ایس ڈی اے کو ڈیٹا بھیجنے اور وصول کرنے کے لئے استعمال کیا جاتا ہے۔
آپ I2C LCD ماڈیول خرید سکتے ہیں جس میں I2C1602 LCD کنٹرولر انبلٹ ہے یا آپ ESP32 کے ساتھ 16x2 LCD کو انٹرفیس کرنے کے لئے I2C کنٹرولر آسانی سے خرید سکتے ہیں۔
ضروری سامان
- ESP32
- 16 * 2 LCD ڈسپلے
- I2C LCD کنٹرولر
- تاروں
- بریڈ بورڈ
I2C ماڈیول
آئی 2 سی کنٹرولر کے پاس ایک آئی سی پی سی ایف 8574 ہے جو دو تار دو جہتی I2C- بس سیریل گھڑی (ایس سی ایل) اور سیریل ڈیٹا (ایس ڈی اے) کے ذریعہ عام مقصد سے ریموٹ I / O توسیع فراہم کرتا ہے۔ یہ بہت مفید آایسی ہے اور ایل ای ڈی سگنل بورڈ ، ڈسپلے ، کلیدی پیڈ ، صنعتی کنٹرول وغیرہ میں استعمال کیا جاسکتا ہے۔ I2C بس ایڈریس کے لئے 8 I / O پن ، 3 پن (A0 ، A1 ، A2) اور ایس ڈی اے ، ایس سی ایل پنوں ہیں.
LCD کے برعکس کو کنٹرول کرنے کے لئے LCD کنٹرولر بورڈ کے پاس ایک انبلٹ پوٹینومیٹر ہے۔
آئی سی اور ایل سی ڈی کنٹرولر کے پن آریگرام ذیل میں دئے گئے ہیں۔
سرکٹ ڈایاگرام
ESP32 کے ساتھ LCD انٹرفیس کرنے کے لئے رابطے ذیل میں دیئے گئے ہیں
- LCD ڈسپلے کے 1-16 پن پر I2C ماڈیول کے پن 1-16 کو مربوط کریں۔
- I2C ماڈیول کا ایس ڈی اے پن -> ESP32 کا ایس ڈی اے پن یعنی D21
- I2C ماڈیول کا ایس سی ایل پن -> ESP32 یعنی S22 کا SCL پن
میں نے صرف مظاہرے کے لئے IVC کے 3v کو I2C کے 5v سے جوڑا ہے لیکن اعداد و شمار کو صحیح طریقے سے ظاہر کرنے کے لئے ہمیں 5V سپلائی کی ضرورت ہے ، کیونکہ ESP32 صرف 3.3 وولٹ دے سکتا ہے جو I2C ماڈیول کے لئے کم ہے اور اعداد و شمار واضح طور پر نظر نہیں آئیں گے۔ تو ، بیرونی 5V فراہمی کو استعمال کرنا بہتر ہے۔
ہمیں ESP32 کے لئے بورڈ فائلوں کی ضرورت ہے ، لہذا اگر آپ ESP32 میں نئے ہیں تو پہلے ESP32 ٹیوٹوریل کے ساتھ شروعات کی پیروی کریں اور پھر یہاں واپس جائیں۔ آپ L2 کو ESP32 کے ساتھ I2C کے بغیر بھی جوڑ سکتے ہیں لیکن یہ ESP32 کے مزید پن لے گا۔
I2C کنٹرولر پتہ تلاش کرنے کے لئے کوڈ
مین کوڈ میں جانے سے پہلے ہمیں پہلے I2C ماڈیول کا پتہ تلاش کرنا ہوگا۔
I2C کنٹرولر میں ایڈریس بٹ لگایا گیا ہے جو I2C بس کو کنٹرول کرنے کے لئے استعمال ہوتا ہے۔ پہلے سے طے شدہ ADDRESS 0x27 ہے لیکن کچھ معاملات میں یہ 0x3f ہوسکتا ہے۔ لہذا ، I2C کنٹرولر کا پتہ چیک کرنے کے لئے ، سرکٹ کو جیسا کہ اوپر دکھایا گیا ہے ، نیچے دیئے گئے کوڈ اپ لوڈ کریں اور سیریل مانیٹر کھولیں ، آپ کو پتہ ہیکساڈیسمل میں نظر آئے گا۔
# شامل کریں
نوٹ ہم اس پتے کو اپنے LCD انٹرفیس کوڈ میں استعمال کرتے ہیں ۔
I2C کنٹرولر میں ، جیسا کہ آپ دیکھ سکتے ہیں کہ وہاں تین جمپر / سولڈرنگ پیڈ موجود ہیں جن کا لیبل لگا A0، A1 اور A2 ہے۔ یہ ماڈیول کا پتہ تبدیل کرنے کے لئے استعمال ہوتے ہیں۔ اگر آپ ایڈریس پیڈز کو آپس میں جوڑتے ہیں تو ، پتہ یہاں طے شدہ قیمت 0x27 یا 0x3F سے کیسے ہوتا ہے۔ (1 = متصل نہیں ہے۔ 0 = منسلک):
A0 |
A1 |
A2 |
ہیکس ایڈریس |
1 |
1 |
1 |
0x27 |
0 |
1 |
1 |
0x26 |
1 |
0 |
1 |
0x25 |
0 |
0 |
1 |
0x24 |
1 |
1 |
0 |
0x23 |
0 |
1 |
0 |
0x22 |
1 |
0 |
0 |
0x21 |
0 |
0 |
0 |
0x20 |
ESP32 کے لئے کوڈ
پہلے ہمیں I2C LCD ماڈیول کے لئے لائبریری LiquidCrystal_I2C کی ضرورت ہے ۔ عام مائع مائعات کی لائبریری کام نہیں کرے گی کیونکہ ہم یہاں I2C استعمال کررہے ہیں۔
لائبریری کو اس https://github.com/fdebrabender/Ardino-LiquidCrystal-I2C-library سے ڈاؤن لوڈ کریں
کوڈ کو اس طرح لکھا گیا ہے کہ سیریل مانیٹر پر جو بھی ٹائپ کیا جاتا ہے ، وہ LCD پر ڈسپلے ہوگا۔ ارڈینو آئی ڈی ای ہمارے کوڈ کو لکھنے اور اپلوڈ کرنے کے لئے استعمال ہوا ہے۔
پہلے ، ہمیں آئی 2 سی مواصلات کے ل wire تار لائبریری شامل کرنا ہوگی جو ارڈینو آئی ڈی ای کے ساتھ آتی ہے ۔
# شامل کریں
پھر I2C LCD کے ل L ، اس سے پہلے مائعات کو ڈاؤن لوڈ کی جانے والی LiquidCrystal_I2C.h شامل کریں ۔
# شامل کریں
اس کے بعد ایل سی ڈی I2C ایڈریس 0x27 پر سیٹ کریں یا پتہ جو آپ نے 16 چارس 2 لائن ڈسپلے کے لئے اوپر دیا ہوا اسکینر کوڈ چلا کر حاصل کیا ہے۔
لیکویڈ کرسٹل_ آئی 2 سی ایل سی ڈی (0x27 ، 16،2)؛
میں سیٹ اپ کی تقریب، 2 لائنوں 16 حروف کے لئے سیریل مواصلات اور LCD کی ابتدا اور backlight پر تبدیل. اگر آپ بیک لائٹ کو بند کرنا چاہتے ہیں تو lcd .noBacklight () کا استعمال کریں اور اپنی پسند کے مطابق سیٹ کرسر () فنکشن کو تبدیل کریں۔
باطل سیٹ اپ () { سیریل.بیگین (9600)؛ lcd.init ()؛ lcd.backlight ()؛ lcd.setCursor (0،0)؛ lcd.print ("ہیلو ، دنیا!")؛ تاخیر (1000)؛ lcd.setCursor (0،1)؛ lcd.print ("circuitdigest.com")؛ تاخیر (3000)؛
LCD سب سے پہلے سیریل مانیٹر استعمال کرنے اور ہدایات کو ظاہر کرنے کے لئے ٹائپ کریں گے۔
سیریل مانیٹر کے آپشن کو "لائن ختم نہ ہونے پر" سیٹ کریں۔
lcd.clear ()؛ lcd.setCursor (0،0)؛ lcd.print ("استعمال کریں سر۔ مانیٹر")؛ lcd.setCursor (0،1)؛ lcd.print ("ظاہر کرنے کے لئے ٹائپ کریں")؛ }
لوپ فنکشن سیریل ڈاٹ اےبلٹیبل () فنکشن کا استعمال کرتے ہوئے سیریل پورٹ سے آنے والے سیریل ڈیٹا کی مسلسل جانچ پڑتال کرے گا ۔ ایک پیغام ہے تو، یہ دوسری انتظار کریں اور استعمال کرتے ہوئے LCD پر پیغام کو پرنٹ LCD .write () اور Serial.read () کام کرتا ہے.
باطل لوپ () {{// جب حروف سیریل پورٹ پر پہنچ جاتے ہیں… اگر (سیریل۔ دستیاب ()) {تاخیر (100)؛ // پورے پیغام کے پہنچنے کے لئے تھوڑا سا انتظار کریں lcd.clear ()؛ // اسکرین کو صاف کرتے وقت (سیریل۔ دستیاب ()> 0) {// تمام دستیاب حروف کو پڑھیں lcd.write (Serial.read ())؛ // ہر کردار کو LCD میں ڈسپلے کریں}}}}
مقابلہ کوڈ ذیل میں دیا گیا ہے ، لہذا کوڈ اپ لوڈ کریں اور سیریل مانیٹر کھولیں۔ پھر میسج ٹائپ کریں اور انٹر کو دبائیں۔ آپ کا پیغام LCD پر آویزاں ہوگا۔
اگر آپ کو ایل سی ڈی پر مناسب یا کوئی جواب نہیں ملا تو پھر آپ کا I2C کنٹرولر ایڈریس چیک کریں یا صحیح ایڈریس حاصل کرنے کے لئے مذکورہ بالا کوڈ سے دوبارہ اسکین کریں ۔