ఈ పోస్ట్లో మనం “I2C” లేదా “IIC” లేదా “I square C” ఆధారిత LCD అడాప్టర్ మాడ్యూల్ను పరిశీలించబోతున్నాము, ఇది Arduino మరియు LCD డిస్ప్లే మధ్య వైర్ కనెక్షన్లను కేవలం 2 వైర్లకు తగ్గిస్తుంది మరియు టన్నుల GPIO పిన్లను కూడా ఆదా చేస్తుంది ఇతర సెన్సార్లు / డ్రైవ్లు మొదలైనవి.
మేము I2C LCD అడాప్టర్ మాడ్యూల్ గురించి చర్చించే ముందు, I2C బస్సు అంటే ఏమిటి మరియు అది ఎలా పనిచేస్తుందో అర్థం చేసుకోవాలి.
ఏమైనప్పటికీ మీరు ఈ ప్రస్తావన LCD అడాప్టర్తో పనిచేయడానికి I2C ప్రోటోకాల్తో నిపుణులు కానవసరం లేదు.
I2C కనెక్షన్ యొక్క ఉదాహరణ:
I2C లేదా IIC అంటే “ఇంటర్-ఇంటిగ్రేటెడ్ సర్క్యూట్” అనేది ఫిలిప్స్ సెమీకండక్టర్స్ కనుగొన్న సీరియల్ కంప్యూటర్ బస్సు, దీనిని నేడు NXP సెమీకండక్టర్స్ అని పిలుస్తారు. ఈ బస్సు వ్యవస్థను 1982 లో కనుగొన్నారు.
బస్సు అంటే ఏమిటి?
బస్ అనేది కేబుల్స్ / వైర్ల సమూహం, ఇది ఒక చిప్ నుండి మరొక చిప్ / ఒక సర్క్యూట్ బోర్డ్ నుండి మరొక సర్క్యూట్ బోర్డ్కు డేటాను తీసుకువెళుతుంది.
I2C బస్ ప్రోటోకాల్ యొక్క ప్రధాన ప్రయోజనం ఏమిటంటే, మద్దతు ఉన్న మైక్రోకంట్రోలర్ లేదా సెన్సార్లు లేదా చిప్లను కేవలం రెండు వైర్లతో అనుసంధానించవచ్చు. ఈ ప్రోటోకాల్ యొక్క మైండ్ బ్లోయింగ్ ప్రయోజనం ఏమిటంటే, మేము 127 వేర్వేరు చిప్స్ లేదా సెన్సార్లు / డ్రైవర్లను ఒక మాస్టర్ పరికరానికి అనుసంధానించవచ్చు, ఇది సాధారణంగా కేవలం 2 వైర్లతో మైక్రోకంట్రోలర్.
రెండు ఐ 2 సి వైర్లు ఏమిటి?
రెండు వైర్లు వరుసగా SDA మరియు SCL, ఇవి వరుసగా సీరియల్ డేటా మరియు సీరియల్ క్లాక్.
I2C బస్సు ద్వారా డేటా కమ్యూనికేషన్ను సమకాలీకరించడానికి సీరియల్ క్లాక్ లేదా SCL ఉపయోగించబడుతుంది. SDA లేదా సీరియల్ డేటా అనేది డేటా నుండి లైన్, దీనిలో వాస్తవ డేటా మాస్టర్ నుండి బానిసకు తెలియజేయబడుతుంది మరియు దీనికి విరుద్ధంగా ఉంటుంది. మాస్టర్ పరికరం సీరియల్ గడియారాన్ని నియంత్రిస్తుంది మరియు ఏ బానిస పరికరం కోసం కమ్యూనికేట్ చేయాలో నిర్ణయిస్తుంది. ఏ బానిస పరికరం మొదట కమ్యూనికేషన్ను ప్రారంభించదు, మాస్టర్ పరికరం మాత్రమే చేయగలదు.
సీరియల్ డేటా లైన్ ద్వైపాక్షిక మరియు దృ is మైనది, ప్రతి 8 బిట్ డేటా పంపిన తర్వాత, స్వీకరించే పరికరం రసీదు బిట్ను తిరిగి పంపుతుంది.
I2C ప్రోటోకాల్ ఎంత వేగంగా ఉంటుంది?
1982 లో అభివృద్ధి చేయబడిన I2C ప్రోటోకాల్ యొక్క అసలు వెర్షన్ 100 Kbps కి మద్దతు ఇచ్చింది. తదుపరి వెర్షన్ 1992 లో ప్రామాణీకరించబడింది, ఇది 400Kbps (ఫాస్ట్ మోడ్) కు మద్దతు ఇచ్చింది మరియు 1008 పరికరాలకు మద్దతు ఇచ్చింది. తదుపరి వెర్షన్ 1998 లో 3.4 Mbps (హై స్పీడ్ మోడ్) తో అభివృద్ధి చేయబడింది.
అనేక ఇతర I2C వెర్షన్లు 2000, 2007, 2012 సంవత్సరాల్లో (5Mbps అల్ట్రా-ఫాస్ట్ మోడ్తో) అభివృద్ధి చేయబడ్డాయి మరియు I2C యొక్క ఇటీవలి వెర్షన్ 2014 లో అభివృద్ధి చేయబడింది.
ఐ 2 సి బస్సులో పుల్-అప్ రెసిస్టర్లు ఎందుకు?
SDA మరియు SCL “ఓపెన్-డ్రెయిన్” అంటే రెండు పంక్తులు తక్కువ వెళ్ళగలవు కాని అది అధిక పంక్తులను నడపలేవు, కాబట్టి ప్రతి పంక్తిలో పుల్-అప్ రెసిస్టర్ కనెక్ట్ చేయబడింది.
కానీ ఎల్సిడి లేదా ఆర్టిసి వంటి చాలా ఐ 2 సి మాడ్యూల్స్ పుల్ అప్ రెసిస్టర్లలో నిర్మించబడ్డాయి, కాబట్టి ఇది పేర్కొనబడకపోతే మనం ఒకదాన్ని కనెక్ట్ చేయవలసిన అవసరం లేదు.
పుల్-అప్ / పుల్-డౌన్ రెసిస్టర్: పల్-అప్ రెసిస్టర్ అనేది సరఫరా యొక్క + Ve లైన్తో అనుసంధానించబడిన ఒక రెసిస్టర్, ఇది లైన్ యొక్క లాజిక్ స్థాయిని HIGH కి ఉంచడానికి లైన్ ఎక్కువ లేదా తక్కువ కాకపోతే.
పుల్-డౌన్ రెసిస్టర్ అనేది ఒక రేఖ యొక్క లాజిక్ స్థాయిని తక్కువ లేదా తక్కువ స్థాయిలో లేనట్లయితే సరఫరా యొక్క రేఖకు అనుసంధానించబడిన ఒక నిరోధకం.
ఇది శబ్దాలను పంక్తులలోకి ప్రవేశించడాన్ని నిరోధిస్తుంది.
I2C ప్రోటోకాల్ యొక్క ఉపరితలంపై మేము గీయబడినట్లు మేము ఆశిస్తున్నాము, మీకు I2C ప్రోటోకాల్ గురించి మరింత సమాచారం అవసరమైతే, దయచేసి సర్ఫ్ చేయండి
YouTube మరియు Google.
ఇప్పుడు I2C LCD మాడ్యూల్ను పరిశీలిద్దాం:
LCD డిస్ప్లే కోసం 16 అవుట్పుట్ పిన్స్ ఉన్నాయి, వీటిని 16 X 2 LCD మాడ్యూల్ వెనుకకు నేరుగా కరిగించవచ్చు.
ఇన్పుట్ పిన్స్ + 5 వి, జిఎన్డి, ఎస్డిఎ మరియు ఎస్సిఎల్. Arduino Uno పై SDA మరియు SCL పిన్స్ వరుసగా పిన్స్ A4 మరియు A5. Arduino మెగా SDA పిన్ # 20 మరియు SCL పిన్ # 21.
I2C అడాప్టర్ లేకుండా మరియు అడాప్టర్తో ఎల్సిడిని ఆర్డునోకు వైర్ చేసినప్పుడు అది ఎలా ఉందో చూద్దాం.
I2C అడాప్టర్ లేకుండా:
I2C అడాప్టర్తో:
అడాప్టర్ LCD డిస్ప్లే వెనుక భాగంలో కరిగించబడుతుంది మరియు ఇతర పనుల కోసం మేము GPIO పిన్లను లోడ్ చేశామని చూడవచ్చు మరియు పిన్స్ A4 మరియు A5 లకు 126 I2C పరికరాలను జోడించడాన్ని కొనసాగించవచ్చు.
ప్రామాణిక లిక్విడ్ క్రిస్టల్ లైబ్రరీ ఈ I2C LCD అడాప్టర్తో పనిచేయదని దయచేసి గమనించండి, దీని కోసం ఒక ప్రత్యేక లైబ్రరీ ఉంది, ఇది త్వరలో కవర్ చేయబడుతుంది మరియు కోడింగ్ ఉదాహరణతో ఈ మాడ్యూల్ను ఎలా ఉపయోగించాలో మేము మీకు చూపుతాము.
I2C అడాప్టర్ను 16 x 2 డిస్ప్లేకి ఎలా కనెక్ట్ చేయాలి
వ్యాసం యొక్క పై విభాగాలలో మేము I2C ప్రోటోకాల్ యొక్క ప్రాథమికాలను నేర్చుకున్నాము మరియు I2C LCD అడాప్టర్ మాడ్యూల్పై ప్రాథమిక అవలోకనాన్ని తీసుకున్నాము. ఈ పోస్ట్లో మనం I2C LCD అడాప్టర్ మాడ్యూల్ను 16 x 2 LCD డిస్ప్లేకి ఎలా కనెక్ట్ చేయాలో నేర్చుకోబోతున్నాము మరియు ఒక ఉదాహరణతో ప్రోగ్రామ్ ఎలా ఉంటుందో చూద్దాం.
I2C ప్రోటోకాల్ యొక్క ప్రధాన ప్రయోజనం ఏమిటంటే, మేము మద్దతు ఉన్న సెన్సార్లు / ఇన్పుట్ / అవుట్పుట్ పరికరాలను కేవలం రెండు పంక్తులలో వైర్ చేయగలము మరియు ఇది పరిమిత GPIO పిన్నులను కలిగి ఉన్నందున Arduino తో సహాయపడుతుంది.
మాడ్యూల్ను ఎల్సిడికి ఎలా కనెక్ట్ చేయాలో ఇప్పుడు చూద్దాం.
మాడ్యూల్ 16 అవుట్పుట్ పిన్స్ మరియు 4 ఇన్పుట్ పిన్స్ కలిగి ఉంది. మేము 16 x 2 LCD డిస్ప్లే వెనుక భాగంలో అడాప్టర్ను టంకము చేయవచ్చు. 4 ఇన్పుట్ పిన్స్లో, రెండు + 5 వి మరియు జిఎన్డి, మిగిలినవి ఎస్డిఎ మరియు ఎస్సిఎల్.
ఇతర ఇన్పుట్ / అవుట్పుట్ పనుల కోసం మేము ఆర్డునో వద్ద చాలా పిన్నులను సేవ్ చేసాము.
పొటెన్షియోమీటర్ను చిన్న స్క్రూ డ్రైవర్తో సర్దుబాటు చేయడం ద్వారా మేము డిస్ప్లే యొక్క విరుద్ధతను సర్దుబాటు చేయవచ్చు (ఎరుపు పెట్టెలో హైలైట్ చేయబడింది).
ఇప్పుడు బ్యాక్లైటింగ్ను ప్రోగ్రామ్ కోడ్లోనే నియంత్రించవచ్చు:
lcd.backlight ()
ఇది ఎల్సిడి డిస్ప్లేలో బ్యాక్లైట్ను ఆన్ చేస్తుంది.
lcd.noBacklight ()
ఇది ఎల్సిడి డిస్ప్లేలో బ్యాక్లైట్ ఆఫ్ చేస్తుంది.
జంపర్ కనెక్ట్ చేయబడిందని మనం చూడవచ్చు, ఇది ఎరుపు పెట్టెలో హైలైట్ చేయబడింది, జంపర్ తొలగించబడితే ప్రోగ్రామ్ కమాండ్తో సంబంధం లేకుండా బ్యాక్లైట్ ఆఫ్లో ఉంటుంది.
ఇప్పుడు హార్డ్వేర్ సెటప్ పూర్తయింది, ఇప్పుడు ఎలా కోడ్ చేయాలో చూద్దాం. I2C LCD మాడ్యూల్కు ప్రత్యేక అవసరం ఉందని దయచేసి గుర్తుంచుకోండి
లైబ్రరీ మరియు ముందే ఇన్స్టాల్ చేసిన “లిక్విడ్క్రిస్టల్” లైబ్రరీ పనిచేయదు.
మీరు ఇక్కడ నుండి I2C LCD లైబ్రరీని డౌన్లోడ్ చేసుకోవచ్చు మరియు Arduino IDE కి జోడించవచ్చు:
github.com/marcoschwartz/LiquidCrystal_I2C
మునుపటి పోస్ట్ నుండి, I2C పరికరాలకు మాస్టర్ లేదా మైక్రోకంట్రోలర్ పరికరాన్ని గుర్తించి, కమ్యూనికేట్ చేయగల చిరునామాను కలిగి ఉన్నారని తెలుసుకున్నాము.
చాలా సందర్భాలలో, I2C LCD మాడ్యూల్ కోసం చిరునామా “0x27” అవుతుంది. కానీ వేర్వేరు తయారీకి వేరే చిరునామా ఉండవచ్చు. మేము ప్రోగ్రామ్లో సరైన చిరునామాను నమోదు చేయాలి, అప్పుడు మాత్రమే మీ ఎల్సిడి డిస్ప్లే పనిచేస్తుంది.
చిరునామాను కనుగొనడానికి 5V ను Vcc కి మరియు GND ని Arduino యొక్క 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” చిరునామా వచ్చింది.
రెండు ఐ 2 సి పరికరాలు, ఎల్సిడి మాడ్యూల్ మరియు ఆర్టిసి లేదా రియల్ టైమ్ క్లాక్ మాడ్యూల్ ఉన్నందున ఇప్పుడు మనం డిజిటల్ వాచ్ను ఉదాహరణగా చేయబోతున్నాం. రెండు గుణకాలు రెండు వైర్లతో అనుసంధానించబడతాయి.
కింది లైబ్రరీని డౌన్లోడ్ చేయండి:
RTC లైబ్రరీ: github.com/PaulStoffregen/DS1307RTC
TimeLib.h: github.com/PaulStoffregen/Time
ఆర్టీసీకి సమయాన్ని ఎలా సెట్ చేయాలి
Ar Arduino 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 LCD డిస్ప్లేలోని వరుసలు మరియు నిలువు వరుసల సంఖ్య.
RTC కోసం మేము చిరునామాను కనుగొనవలసిన అవసరం లేదు, కానీ “0x68” ను స్కాన్ చేస్తున్నప్పుడు మేము కనుగొన్నాము, అయితే ఏమైనప్పటికీ RTC లైబ్రరీ దీన్ని నిర్వహిస్తుంది.
ఇప్పుడు మనం వైర్ రద్దీని ఎంత తగ్గించాము మరియు ఆర్డునోలో GPIO పిన్లను సేవ్ చేసాము.
ఎరుపు పెట్టెలో హైలైట్ చేయబడిన 4 వైర్లు మాత్రమే LCD డిస్ప్లేకి అనుసంధానించబడి ఉన్నాయి.
Arduino నుండి 4 వైర్లు మాత్రమే అనుసంధానించబడి ఉన్నాయి మరియు RTC మాడ్యూల్ ఒకే పంక్తులను పంచుకుంటుంది.
ఇప్పుడు మీరు I2C పై ప్రాథమిక జ్ఞానాన్ని పొందారు మరియు I2C LCD అడాప్టర్ మాడ్యూల్ను ఎలా ఉపయోగించాలి.
మీకు ఈ పోస్ట్ నచ్చిందా? మీకు ఏమైనా ప్రశ్నలు ఉన్నాయా? దయచేసి వ్యాఖ్య విభాగంలో వ్యక్తీకరించండి, మీకు శీఘ్ర సమాధానం లభిస్తుంది.
మునుపటి: సింపుల్ ట్రాన్సిస్టర్ డయోడ్ టెస్టర్ సర్క్యూట్ తర్వాత: ఈ ఐఆర్ రిమోట్ కంట్రోల్ రేంజ్ ఎక్స్టెండర్ సర్క్యూట్ చేయండి