Sada je vrijeme da se pozabavimo jednim od osnovnih koraka u našim projektima a to je prikazivanje poruka na LCD ekranu. Danas ćemo proučiti LCD s I2C kontrolerom, vrlo praktičan i jednostavan modul kada ga jednom naučite koristiti.
Dijelovi:
- Arduino
- LCD s I2C kontrolerom
Uvod
Pomoću I2C adaptera možemo sa svega dva pina upravljati našim ekranom. Ne moramo se više gnjaviti sa spajanjem velikog broja pinova koji su potrebni za klasične LCD ekrane. Kako ga spojiti? Samo pratite tablicu.
Arduino | LCD |
A4 | SDA |
A5 | SCL |
GND | GND |
VCC | VCC |
No postoje dva dijela koja često znaju raditi probleme prilikom korištenja, adresa i biblioteka
I2C adresa
Je adresa koja našem mikrokontroleru govori s kojim uređajem treba komunicirati, budući da možemo spajati više uređaja putem istih I2C pinova. Postoje dva načina spajanje više I2C uređaja a to su: korištenje muliplexera ili pomoću korištenja različitih adresa. Većina LCD modula na stražnjoj strani ima 3 lemne točke koje s različitim spajanjem možemo dobiti različite adrese. Prvi bajt zadužen je za označivanje početka te imamo 7 bitova za adresu što znači da na raspolaganju imamo 128 mogućih adresa. U tablici ispod možemo vidjeti kako različite binarne kombinacije lemnih točaka(padova) generiraju različite adrese. 0 spojeni padovi 1 ne spojeni padovi
A0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
A1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
A2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
Adresa | 0x27 | 0x26 | 0x25 | 0x24 | 0x23 | 0x22 | 0x21 | 0x20 |
Određivanje I2C adresa
Ako naš modul nema mogućnosti mijenjanja adresa možete pronašli adresu putem našeg programa. Spajanjem I2C ekrana i pokretanjem programa na serial monitoru možete očitati adresu koju spremite kako bi ju u poslije mogli iskoristiti.
I2C scanner
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("I2C skener"); } void loop() { byte adresa; int broj_uredaja; Serial.println("Trazenje..."); broj_uredaja = 0; for(adresa = 1; adresa < 127; adresa++ ) { Wire.beginTransmission(adresa); if (Wire.endTransmission() == 0) { Serial.print("I2C device found at adresa 0x"); if (adresa<16) Serial.print("0"); Serial.print(adresa,HEX); Serial.println(""); broj_uredaja++; } } if (broj_uredaja == 0) Serial.println("Nije pronaden niti jedan I2C uredaj"); else Serial.println("kraj\n"); delay(5000); }
Testiranje
Sada ćemo ispisati poruku na naš LCD ekran. Za to nam je potrebna biblioteka LiquidCrystal_I2C koju možete vidjeti preuzeti ovdje. Jedina stvar koju moramo promijeniti u testnom programu je adresa.(Testni program HelloWorld nalazi se u primjeru biblioteke). U liniji 4 postavite adresu koju ste pronašli i vaš I2C LCD je spreman za korištenje, ako koristite 20 x 4 LCD samo promjenite taj uvjeti i možete koristi 20×4 ekran.