W najprostszym przypadku współpraca Arduino z modułem LCD (8 × 2, 16 × 2, 20 × 2) odbywa się za pośrednictwem 16 pinów, które należy odpowiednio ze sobą połączyć (zob.: Termometr z wykorzystaniem czujnika DS18B20 i wyświetlacza 16 × 2). W celu ograniczenia dużej liczby połączeń można wykorzystać komunikację za pośrednictwem magistrali I2C. Powoduje to ograniczenie liczby niezbędnych połączeń do 4: SCL (serial clock), SDA (serial data), VCC i GND (Fig. 1). Podłączenie wymaga użycia dodatkowego urządzenia - konwertera I2C (Fig. 2). Płytka prototypowa Arduino posiada dedykowane piny służące do komunikacji z magistralą I2C (SCL i SDA), które należy połączyć z odpowiednimi pinami konwertera. Z kolei konwerter należy podłączyć na płytce prototypowej z wyświetlaczem LCD. Poza zaletą wynikającą z ograniczenia używanych pinów Arduino, dodatkowym atut takiego rozwiązania wiąże się z brakiem potrzeby montażu potencjometru regulującego kontrast wyświetlacza, w który standardowo jest wyposażony konwerter LCM1602.
Montujemy układ wg. Tab. 1.
Arduino Leonardo | LCM1602 |
---|---|
5 V | VCC |
GND | GND |
SDA | SDA |
SCL | SCL |
Po podłączeniu zasialania, wyświetlacz ulega podświetleniu. Możemy teraz za pomocą potencjometra znajdującego się na konwerterze I2C zmienić jego kontrast. Aby skomunikować wyświetlacz LCD z Arduino za pośrednictwem konwertera I2C należy:
> Szkic > Importuj bibliotekę > Add Library
Teraz można już przejść do wgrania szkicu do Aruino.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // Ustawienie adresu ukladu na 0x27 void setup() { lcd.begin(16,2); lcd.backlight(); // zalaczenie podwietlenia lcd.setCursor(0,0); lcd.print("LCD & I2C"); delay(500); lcd.setCursor(0,1); lcd.print("**********"); } void loop() { lcd.backlight(); // zalaczenie podswietlenia delay(5000); lcd.noBacklight(); // wylaczenie podswietlenia delay(5000); }