Увод у И2Ц ЛЦД адаптер модул

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо погледати модул ЛЦД адаптера заснован на „И2Ц“ или „ИИЦ“ или „И скуаре Ц“, који ће смањити жичане везе између Ардуина и ЛЦД екрана на само 2 жице, такође штедећи тоне ГПИО пинова за остали сензори / погони итд.

Пре него што разговарамо о И2Ц ЛЦД адаптерском модулу, важно је разумети шта је И2Ц магистрала и како то ради.



Али у сваком случају не требате бити стручњак за И2Ц протокол да бисте радили са овим споменутим ЛЦД адаптером.

Илустрација везе И2Ц:

Илустрација везе И2Ц:

И2Ц или ИИЦ је скраћеница од „Интер-интегрисани круг“ је серијска рачунарска магистрала коју су измислили Пхилипс-ови полупроводници, данас познатији као НКСП-полупроводници. Овај систем аутобуса изумљен је 1982. године.



Шта је аутобус?

Сабирница је група каблова / жица која преноси податке са једног чипа на други чип / једну плочицу на другу плочицу.

Главна предност И2Ц магистралног протокола је у томе што подржани микроконтролер или сензори или чипови могу бити повезани само са две жице. Предност овог протокола која збуњује мисли је та што можемо повезати 127 различитих чипова или сензора / управљачких програма на један главни уређај који је обично микроконтролер са само 2 жице.

Које су две И2Ц жице?

Двије жице су СДА и СЦЛ које су серијски подаци и серијски сат.

Серијски сат или СЦЛ се користи за синхронизацију комуникације података преко И2Ц магистрале. СДА или серијски подаци су линија података у којој се стварни подаци преносе са главног на подређени и обрнуто. Главни уређај контролира серијски сат и одлучује за који славе уређај треба да комуницира. Ниједан помоћни уређај не може прво започети комуникацију, то може учинити само главни уређај.

Серијска линија података је двосмерна и робусна, након слања сваког скупа 8-битних података, пријемни уређај враћа бит потврде.

Колико је брз И2Ц протокол?

Оригинална верзија И2Ц протокола развијена 1982. године подржавала је 100 Кбпс. Следећа верзија је стандардизована 1992. године која је подржавала 400Кбпс (брзи режим) и подржавала до 1008 уређаја. Следећа верзија је развијена 1998. године са 3,4 Мбпс (режим велике брзине).

Неколико других верзија И2Ц је развијено у годинама 2000, 2007, 2012 (са ултра-брзим режимом од 5 Мбпс), а најновија верзија И2Ц је развијена 2014. године.

Зашто повлачни отпорници у И2Ц магистрали?

СДА и СЦЛ су „отворени одвод“, што значи да обе линије могу да иду НИСКО, али не могу да возе линије ВИСОКО, па је на сваку од линија повезан прикључни отпор.

Али код већине И2Ц модула, попут ЛЦД-а или РТЦ-а, уграђени су отпорници на извлачење, тако да не морамо да их повезујемо ако нису наведени.

Пулл-уп / Пулл-довн отпорник: Пулл-уп отпорник је отпорник повезан на + Ве линију напајања како би ниво логике линије био ВИСОК ако линија није ни висока ни ниска.

Отпорни отпорник је отпорник повезан на –Ве напајања како би ниво логике линије био НИЗАК ако линија није ни висока ни ниска.

Ово такође спречава улазак буке у водове.

Надамо се да смо огребали површину И2Ц протокола, ако су вам потребне додатне информације о И2Ц протоколу, сурфајте даље

ИоуТубе и Гоогле.

Погледајмо сада И2Ц ЛЦД модул:

И пин изводи И2Ц ЛЦД модула

Постоји 16 излазних пинова за ЛЦД екран који се могу залемити директно на задњу страну 16 Кс 2 ЛЦД модула.

Улазни пинови су + 5В, ГНД, СДА и СЦЛ. СДА и СЦЛ пинови на Ардуино Уно су пинови А4 и А5. За Ардуино мега СДА је пин # 20, а СЦЛ пин # 21.

Упоредимо како изгледа када повежемо ЛЦД са Ардуином без И2Ц адаптера и са адаптером.

Без И2Ц адаптера:

Ардуино без И2Ц адаптера

Са И2Ц адаптером:

Ардуино користећи И2Ц адаптер

Адаптер је залемљен на задњој страни ЛЦД екрана и као што видимо да смо сачували гомилу ГПИО пинова за друге задатке, а такође можемо да наставимо да додајемо још 126 И2Ц уређаја на пинове А4 и А5.

Имајте на уму да стандардна библиотека Ликуид Цристал неће радити са овим И2Ц ЛЦД адаптером, за то постоји посебна библиотека, која ће ускоро бити покривена, а ми ћемо вам показати како да користите овај модул са примером кодирања.

Како повезати И2Ц адаптер на екран 16 к 2

У горњим одељцима чланка научили смо основе И2Ц протокола и узели основни преглед И2Ц ЛЦД адаптерског модула. У овом посту ћемо научити како повезати модул И2Ц ЛЦД адаптера на ЛЦД екран 16 к 2 и видећемо како то програмирати на примеру.

Главна предност И2Ц протокола је што подржане сензоре / улазно / излазне уређаје можемо повезати у само две линије, а корисно је за Ардуино јер има ограничене ГПИО пинове.

Сада да видимо како повезати модул са ЛЦД екраном.

Модул има 16 излазних пина и 4 улазна пина. Можемо само залемити адаптер на задњу страну ЛЦД екрана од 16 к 2. Од 4 улазна пина, два су + 5В и ГНД, остала два су СДА и СЦЛ.

Видимо да смо на Ардуину сачували пуно пинова за друге улазно / излазне задатке.

Контраст екрана можемо прилагодити подешавањем потенциометра помоћу малог одвијача (истакнуто у црвеном оквиру).

Позадинским осветљењем се сада може контролисати у самом програмском коду:

лцд.бацклигхт ()

Ово ће укључити позадинско осветљење ЛЦД екрана.

лцд.ноБацклигхт ()

Ово ће ИСКЉУЧИТИ позадинско осветљење ЛЦД екрана.

Видимо да је спојен краткоспојник, који је означен црвеним оквиром, ако се краткоспојник уклони, позадинско осветљење остаје ИСКЉУЧЕНО без обзира на програмску команду.

Сада је подешавање хардвера завршено, сада да видимо како да кодирате. Имајте на уму да И2Ц ЛЦД модул треба посебно

и унапред инсталирана библиотека „ликуидцристал“ неће радити.

Одавде можете преузети И2Ц ЛЦД библиотеку и додати у Ардуино ИДЕ:

гитхуб.цом/марцосцхвартз/ЛикуидЦристал_И2Ц

Из претходног поста сазнали смо да И2Ц уређаји имају адресу по којој мастер или микроконтролер могу да идентификују уређај и комуницирају.

У већини случајева, за И2Ц ЛЦД модул адреса би била „0к27“. Али различита производња може имати различиту адресу. У програм морамо унети тачну адресу, само тада ће ваш ЛЦД екран функционисати.

Да бисте пронашли адресу, само спојите 5 В на Вцц и ГНД на ГНД Ардуина и СЦЛ пин И2Ц модула на А5 и СДА на А4 и отпремите доњи код.

Ово ће скенирати повезане И2Ц уређаје и приказати њихову адресу.

// -------------------------------- //
#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)
}
// -------------------------------- //

Отпремите код и отворите серијски монитор.

Као што видимо два уређаја су откривена и њихове адресе су приказане, али ако желите да пронађете само адресу И2Ц ЛЦД модула, не би требало да повезујете ниједан други И2Ц уређај током скенирања.
Дакле, у закључку смо добили адресу „0к27“.

Сада ћемо за пример направити дигитални сат, јер постоје два И2Ц уређаја, ЛЦД модул и РТЦ или модул сата у реалном времену. Оба модула ће бити повезана са две жице.

Преузмите следећу библиотеку:
РТЦ библиотека: гитхуб.цом/ПаулСтоффреген/ДС1307РТЦ
ТимеЛиб.х: гитхуб.цом/ПаулСтоффреген/Тиме

Како поставити време на РТЦ

• Отворите Ардуино ИДЕ и дођите до Датотека> Пример> ДС1307РТЦ> подесите време.
• Отпремите код са завршеним хардвером и отворите серијски монитор и готови сте.

Шема кола:

Програм:

//------------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Ц (0к27, 16, 2)

„0к27“ је адреса коју смо пронашли скенирањем, а 16 и 2 су број редова и колона на ЛЦД дисплеју.

За РТЦ не треба да пронађемо адресу, али смо је пронашли док смо скенирали „0к68“, али у сваком случају РТЦ библиотека ће то решити.

Сада да видимо колико смо смањили загушење жица и сачували ГПИО пинове на Ардуину.

На ЛЦД заслон су повезане само 4 жице, означене црвеним оквиром.

Такође су само 4 жице повезане са Ардуина и РТЦ модул дели исте линије.

До сада сте стекли основно знање о И2Ц и како се користи И2Ц ЛЦД адаптер модул.
Да ли вам се свиђа овај пост? Имате било каквих питања? Изнесите у одељку за коментаре, можда ћете добити брзи одговор.




Претходни: Једноставни круг испитивача диодних транзистора Следеће: Направите овај склоп за проширење домета ИР даљинског управљача