I2C LCD اڈاپٹر ماڈیول کا تعارف

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





اس پوسٹ میں ہم “I2C” یا “IIC” یا “I I C C” پر مبنی LCD اڈاپٹر ماڈیول پر ایک نظر ڈال رہے ہیں ، جس سے Ardino اور LCD ڈسپلے کے درمیان تار رابطے صرف 2 تاروں تک کم ہوجائیں گے ، اور اس کے لئے GPIO پنوں کی ٹن کی بچت ہوگی۔ دوسرے سینسر / ڈرائیوز وغیرہ

I2C LCD اڈاپٹر ماڈیول کے بارے میں بات کرنے سے پہلے ، یہ سمجھنا ضروری ہے کہ I2C بس کیا ہے اور یہ کیسے کام کرتی ہے۔



لیکن ویسے بھی آپ کو اس ذکر LCD اڈاپٹر کے ساتھ کام کرنے کے لئے I2C پروٹوکول کے ماہر ہونے کی ضرورت نہیں ہے۔

I2C کنکشن کی مثال:

I2C کنکشن کی مثال:

I2C یا IIC کا مطلب ہے 'انٹر انٹیگریٹڈ سرکٹ' ، ایک سیریل کمپیوٹر بس ہے جس کی ایجاد فلپس سیمیکمڈکٹرز نے کی تھی ، جسے آج NXP سیمی کنڈکٹر کہا جاتا ہے۔ یہ بس سسٹم ایجاد 1982 میں ہوا تھا۔



بس کیا ہے؟

بس کیبلز / تاروں کا ایک گروپ ہے جو ایک چپ سے دوسرے چپ / ایک سرکٹ بورڈ میں دوسرے سرکٹ بورڈ میں ڈیٹا لے کر جاتا ہے۔

I2C بس پروٹوکول کا سب سے بڑا فائدہ یہ ہے کہ ، معاون مائکروکونٹرولر یا سینسر یا چپس صرف دو تاروں کے ساتھ جڑ سکتے ہیں۔ اس پروٹوکول کا ذہن اڑانے والا فائدہ یہ ہے کہ ، ہم 127 مختلف چپس یا سینسرز / ڈرائیوروں کو ایک ماسٹر ڈیوائس سے جوڑ سکتے ہیں جو عام طور پر مائکروکانٹرولر صرف 2 تاروں سے ہوتا ہے۔

دو I2C تاروں کیا ہیں؟

دو تاریں ایس ڈی اے اور ایس سی ایل ہیں جو بالترتیب سیریل ڈیٹا اور سیریل گھڑی ہیں۔

سیریل گھڑی یا ایس سی ایل I2C بس میں ڈیٹا مواصلات کی مطابقت پذیری کے لئے استعمال کیا جاتا ہے۔ ایس ڈی اے یا سیریل ڈیٹا وہ ڈیٹا لائن ہے جس میں اصل اعداد و شمار کو ماسٹر سے غلام تک اور اس کے برعکس پہنچایا جاتا ہے۔ ماسٹر ڈیوائس سیریل گھڑی کو کنٹرول کرتی ہے اور فیصلہ کرتی ہے کہ کس غلام آلہ کے لئے بات چیت کرنے کی ضرورت ہے۔ کوئی بھی غلام آلہ پہلے مواصلات کا آغاز نہیں کرسکتا ، صرف ماسٹر ڈیوائس ہی کر سکتی ہے۔

سیریل ڈیٹا لائن دو سمتاتی اور مضبوط ہے ، 8 بٹ ڈیٹا بھیجنے کے بعد ، وصول کرنے والا آلہ ایک اعتراف سا واپس بھیج دیتا ہے۔

I2C پروٹوکول کتنا تیز ہے؟

1982 میں تیار کردہ I2C پروٹوکول کا اصل ورژن 100 KBS کی حمایت کرتا ہے۔ اگلے ورژن کو 1992 میں معیاری بنایا گیا جس نے 400KBS (فاسٹ موڈ) کی حمایت کی اور 1008 ڈیوائسز تک تعاون کیا۔ اگلا ورژن 1998 میں 3.4 ایم بی پی ایس (ہائی اسپیڈ موڈ) کے ساتھ تیار کیا گیا تھا۔

2000 ، 2007 ، 2012 (5 ایم بی پی ایس الٹرا فاسٹ موڈ کے ساتھ) میں کئی دیگر I2C ورژن تیار کیے گئے تھے اور I2C کا حالیہ ورژن 2014 میں تیار کیا گیا تھا۔

آئی 2 سی بس میں پل اپ ریزٹرز کیوں؟

ایس ڈی اے اور ایس سی ایل 'اوپن ڈرین' ہیں جس کا مطلب ہے کہ دونوں لائنیں کم جاسکتی ہیں لیکن یہ HIGH لائنوں کو نہیں ڈرائیو کرسکتی ہیں ، لہذا ہر ایک لائن پر پل اپ رزسٹر جڑا ہوا ہے۔

لیکن بیشتر I2C ماڈیول جیسے LCD یا RTC نے پل اپ ریزسٹرس بنائے ہیں ، لہذا ہمیں کسی سے رابطہ کرنے کی ضرورت نہیں جب تک کہ اس کی وضاحت نہیں کی جاتی ہے۔

پل-اپ / پل-ڈاون ریزسٹر: پل اپ اپ ریزٹر ایک ریزٹر ہے جو سپلائی کے + وی لائن سے منسلک ہوتا ہے تاکہ لائن کی منطق کی سطح کو HIGH پر رکھنے کے ل. اگر لائن نہ تو زیادہ ہو اور نہ ہی کم۔

پل ڈاون ریزٹر ایک رزسٹر ہوتا ہے جو سپلائی کی لائن لائن سے منسلک ہوتا ہے تاکہ لائن کی منطقی سطح کو LOW پر رکھیں جب لائن نہ تو زیادہ ہے اور نہ ہی کم ہے۔

یہ لائنوں میں داخل ہونے والے شور کو بھی روکتا ہے۔

ہم امید کرتے ہیں کہ ہم نے I2C پروٹوکول کی سطح کو نوچا ، اگر آپ کو I2C پروٹوکول کے بارے میں مزید معلومات کی ضرورت ہو تو ، براہ کرم سرفر کریں

یوٹیوب اور گوگل۔

آئیے I2C LCD ماڈیول پر ایک نظر ڈالیں:

I2C LCD ماڈیول پن آؤٹ

ایل سی ڈی ڈسپلے کے لئے 16 آؤٹ پٹ پن ہیں جنہیں 16 ایکس 2 LCD ماڈیول کے پیچھے سیدھا سولڈر کیا جاسکتا ہے۔

ان پٹ پن +5 وی ، جی این ڈی ، ایس ڈی اے اور ایس سی ایل ہیں۔ ارڈوینو یونو پر ایس ڈی اے اور ایس سی ایل پنوں میں بالترتیب پنوں A4 اور A5 ہیں۔ ارڈینوو میگا کے لئے ایس ڈی اے پن # 20 ہے اور ایس سی ایل پن # 21 ہے۔

آئیے موازنہ کرتے ہیں کہ کیسا لگتا ہے جب ہم L2 Ardino پر I2C اڈاپٹر کے بغیر اور اڈیپٹر کے ساتھ تار لگاتے ہیں۔

I2C اڈاپٹر کے بغیر:

ارڈوینو I2C اڈاپٹر کے بغیر

I2C اڈاپٹر کے ساتھ:

I2C اڈاپٹر کا استعمال کرتے ہوئے ایردوینو

اڈیپٹر ایل سی ڈی ڈسپلے کے پچھلے حصے پر سولڈرڈ ہے اور جیسا کہ ہم دیکھ سکتے ہیں کہ ہم نے دوسرے کاموں کے لئے جی پی آئی او پنوں کا بوجھ بچایا ہے اور ہم پنوں اے 4 اور اے 5 میں 126 مزید آئی 2 سی ڈیوائسز شامل کرنا جاری رکھ سکتے ہیں۔

براہ کرم نوٹ کریں کہ معیاری مائع کرسٹل لائبریری اس I2C LCD اڈاپٹر کے ساتھ کام نہیں کرے گی ، اس کے لئے ایک خصوصی لائبریری موجود ہے ، جس کا جلد ہی احاطہ کیا جائے گا اور ہم آپ کو نمونہ مثال کے ساتھ اس ماڈیول کو استعمال کرنے کا طریقہ دکھائیں گے۔

I2C اڈاپٹر کو 16 x 2 ڈسپلے میں کیسے جوڑیں

مضمون کے مذکورہ بالا حصوں میں ہم نے I2C پروٹوکول کی بنیادی باتیں سیکھیں اور I2C LCD اڈاپٹر ماڈیول پر ایک بنیادی جائزہ لیا۔ اس پوسٹ میں ہم سیکھنے جارہے ہیں کہ I2C LCD اڈاپٹر ماڈیول کو 16 x 2 LCD ڈسپلے سے کیسے جوڑنا ہے اور ہم دیکھیں گے کہ مثال کے ساتھ کس طرح کا پروگرام ہے۔

I2C پروٹوکول کا سب سے بڑا فائدہ یہ ہے کہ ہم تائید شدہ سینسر / ان پٹ / آؤٹ پٹ آلات کو صرف دو لائنوں میں تار کرسکتے ہیں اور یہ ارڈینو کے ساتھ مددگار ہے کیونکہ اس میں محدود جی پی آئی او پن ہیں۔

اب آئیے دیکھتے ہیں کہ ماڈیول کو LCD سے کیسے جوڑنا ہے۔

ماڈیول میں 16 آؤٹ پٹ پن اور 4 ان پٹ پن ہیں۔ ہم صرف 16 x 2 LCD ڈسپلے کے پچھلے حصے میں ایڈاپٹر کو سولڈر کرسکتے ہیں۔ 4 ان پٹ پنوں میں سے ، دو + 5V اور GND ہیں ، باقی دو ایس ڈی اے اور ایس سی ایل ہیں۔

ہم دیکھ سکتے ہیں کہ ہم نے دیگر ان پٹ / آؤٹ پٹ کاموں کے ل A آرڈینو میں بہت ساری پنوں کو بچایا ہے۔

ہم چھوٹے سکرو ڈرائیور (ریڈ باکس میں روشنی ڈالی گئی) کے ساتھ پوٹینومیٹر ایڈجسٹ کرکے ڈسپلے کے برعکس کو ایڈجسٹ کرسکتے ہیں۔

بیک لائٹنگ کو اب پروگرام کوڈ میں ہی کنٹرول کیا جاسکتا ہے:

lcd.backlight ()

یہ LCD ڈسپلے میں بیک لائٹ کو آن کر دے گا۔

lcd.noBacklight ()

یہ LCD ڈسپلے پر بیک لائٹ بند کردے گا۔

ہم دیکھ سکتے ہیں کہ ایک جمپر منسلک ہے ، جس کو سرخ خانے میں روشنی ڈالی گئی ہے ، اگر جمپر کو ہٹا دیا جاتا ہے تو ، پروگرام کمانڈ سے قطع نظر ، بیک لائٹ بند رہتا ہے۔

اب ہارڈویئر سیٹ اپ ہوچکا ہے ، اب آئیے دیکھتے ہیں کوڈ کیسے کریں۔ براہ کرم یاد رکھیں I2C LCD ماڈیول کو خصوصی کی ضرورت ہے

لائبریری اور پہلے سے نصب 'مائع کرسٹل' لائبریری کام نہیں کرے گی۔

آپ یہاں سے I2C LCD لائبریری ڈاؤن لوڈ کرسکتے ہیں اور Ardino IDE میں شامل کرسکتے ہیں:

github.com/marcoschwartz/ LiquidCrystal_I2C

پچھلی پوسٹ سے ہمیں معلوم ہوا کہ I2C ڈیوائسز کا پتہ ہوتا ہے جس کے ذریعہ ماسٹر یا مائکروکینٹرلر آلہ کی شناخت کرسکتے ہیں اور بات چیت کرسکتے ہیں۔

زیادہ تر معاملات میں ، I2C LCD ماڈیول کے لئے پتہ '0x27' ہوگا۔ لیکن مختلف تیاری کا مختلف پتہ ہوسکتا ہے۔ ہمیں پروگرام میں صحیح ایڈریس داخل کرنا ہے تب ہی آپ کا LCD ڈسپلے کام کرے گا۔

پتہ ڈھونڈنے کے لئے صرف 5V کو Vcc اور GND سے Ardino کی GND اور I2C ماڈیول کا SCL پن A5 اور SDA کو A4 سے جوڑیں اور نیچے والا کوڈ اپ لوڈ کریں۔

یہ منسلک I2C آلات کو اسکین کرے گا اور ان کا پتہ دکھائے گا۔

// -------------------------------- //
#include
void setup()
{
Wire.begin()
Serial.begin(9600)
while (!Serial)
Serial.println('-----------------------')
Serial.println('I2C Device Scanner')
Serial.println('-----------------------')
}
void loop()
{
byte error
byte address
int Devices
Serial.println('Scanning...')
Devices = 0
for (address = 1 address <127 address++ )
{
Wire.beginTransmission(address)
error = Wire.endTransmission()
if (error == 0)
{
Serial.print('I2C device found at address 0x')
if (address <16)
{
Serial.print('0')
}
Serial.print(address, HEX)
Serial.println(' !')
Devices++
}
else if (error == 4)
{
Serial.print('Unknown error at address 0x')
if (address <16)
Serial.print('0')
Serial.println(address, HEX)
}
}
if (Devices == 0)
{
Serial.println('No I2C devices found ')
}
else
{
Serial.println('-------------- done -------------')
Serial.println('')
}
delay(5000)
}
// -------------------------------- //

کوڈ اپ لوڈ کریں اور سیریل مانیٹر کھولیں۔

جیسا کہ ہم دیکھ سکتے ہیں کہ دو آلات کا پتہ چلا اور ان کے پتے دکھائے گئے ہیں ، لیکن اگر آپ صرف I2C LCD ماڈیول کا پتہ ڈھونڈنا چاہتے ہیں تو ، آپ کو اسکیننگ کے دوران کسی بھی دوسرے I2C آلات سے متصل نہیں ہونا چاہئے۔
تو آخر میں ہمیں '0x27' پتہ ملا۔

اب ہم مثال کے طور پر ایک ڈیجیٹل گھڑی بنانے جارہے ہیں کیونکہ یہاں دو I2C ڈیوائسز ، LCD ماڈیول اور RTC یا ریئل ٹائم کلاک ماڈیول موجود ہیں۔ دونوں ماڈیول دو تاروں سے منسلک ہوں گے۔

مندرجہ ذیل لائبریری ڈاؤن لوڈ کریں:
آر ٹی سی لائبریری: github.com/PaulStoffregen/DS1307RTC
ٹائم لِب۔ github.com/PaulStoffregen/Time

آر ٹی سی کو وقت کیسے طے کریں

A آرڈینوو IDE کھولیں اور فائل> مثال> DS1307RTC> مقررہ وقت پر جائیں۔
completed مکمل ہارڈ ویئر کے ساتھ کوڈ اپ لوڈ کریں اور سیریل مانیٹر کھولیں اور آپ کام کر چکے ہیں۔

سرکٹ ڈایاگرام:

پروگرام:

//------------Program Developed by R.Girish-------//
#include
#include
#include
#include
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
}
void loop()
{
tmElements_t tm
lcd.clear()
if (RTC.read(tm))
{
if (tm.Hour >= 12)
{
lcd.setCursor(14, 0)
lcd.print('PM')
}
if (tm.Hour <12)
{
lcd.setCursor(14, 0)
lcd.print('AM')
}
lcd.setCursor(0, 0)
lcd.print('TIME:')
if (tm.Hour > 12)
{
if (tm.Hour == 13) lcd.print('01')
if (tm.Hour == 14) lcd.print('02')
if (tm.Hour == 15) lcd.print('03')
if (tm.Hour == 16) lcd.print('04')
if (tm.Hour == 17) lcd.print('05')
if (tm.Hour == 18) lcd.print('06')
if (tm.Hour == 19) lcd.print('07')
if (tm.Hour == 20) lcd.print('08')
if (tm.Hour == 21) lcd.print('09')
if (tm.Hour == 22) lcd.print('10')
if (tm.Hour == 23) lcd.print('11')
}
else
{
lcd.print(tm.Hour)
}
lcd.print(':')
lcd.print(tm.Minute)
lcd.print(':')
lcd.print(tm.Second)
lcd.setCursor(0, 1)
lcd.print('DATE:')
lcd.print(tm.Day)
lcd.print('/')
lcd.print(tm.Month)
lcd.print('/')
lcd.print(tmYearToCalendar(tm.Year))
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0)
lcd.print('RTC stopped!!!')
lcd.setCursor(0, 1)
lcd.print('Run SetTime code')
} else {
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Read error!')
lcd.setCursor(0, 1)
lcd.print('Check circuitry!')
}
}
delay(1000)
}
//------------Program Developed by R.Girish-------//

نوٹ:

لیکویڈ کرسٹل_ آئی 2 سی ایل سی ڈی (0x27 ، 16 ، 2)

'0x27' وہ پتہ ہے جو ہمیں اسکیننگ کے ذریعہ ملا ہے اور ایل سی ڈی ڈسپلے پر قطار اور کالم کی تعداد 16 اور 2 ہے۔

آر ٹی سی کے لئے ہمیں پتہ تلاش کرنے کی ضرورت نہیں ہے لیکن ہمیں '0x68' اسکین کرتے ہوئے مل گیا ہے ، لیکن بہرحال آر ٹی سی لائبریری اس کو سنبھال لے گی۔

اب ہم دیکھتے ہیں کہ ہم نے تار کی بھیڑ کو کتنا کم کیا اور ارڈوینو پر جی پی آئی او پنوں کو بچایا۔

صرف 4 تاریں LCD ڈسپلے سے منسلک ہوتی ہیں ، جو سرخ خانے میں نمایاں ہوتی ہیں۔

نیز صرف 4 تاریں ارڈینو سے منسلک ہیں اور آر ٹی سی ماڈیول ایک ہی لائنوں کو بانٹتا ہے۔

اب تک آپ نے I2C اور I2C LCD اڈاپٹر ماڈیول کو کس طرح استعمال کرنا ہے اس کے بارے میں بنیادی معلومات حاصل کرلی ہیں۔
کیا آپ کو یہ پوسٹ پسند ہے؟ کیا آپ کو کوئی سوال ہے؟ برائے کرم تبصرہ سیکشن میں اظہار کریں ، آپ کو فوری جواب مل سکتا ہے۔




پچھلا: سادہ ٹرانجسٹر ڈایڈڈ ٹیسٹر سرکٹ اگلا: اس IR ریموٹ کنٹرول رینج ایکسٹینڈر سرکٹ بنائیں