zondag 9 december 2012

Arduino - Experiment 6 - 16x2 I2C LCD scherm

In dit experiment heb ik een LCD schermpje aangesloten op de Arduino. Dit is handig voor toekomstige experimenten om bijv. bepaalde output te kunnen weergeven.
In veel voorbeelden wordt gebruik gemaakt van seriele output, maar helaas is een laptop met een com-poort steeds lastiger te vinden. Daarom de keus voor een LCD scherm.

Nu heeft zo'n LCD scherm ook wat nadelen, onder andere dat er 8 datalijntjes nodig zijn om iets weer te kunnen geven. Daarom heb ik gekozen voor een seriele versie: een LCD op basis van I2C: een seriele databus voor IC's.


I2C is een bus met een klok (SCL) en data (SDA) lijnen met 7-bits adressering. De bus heeft twee rollen voor nodes: master en slave:
Master node - Node die de klok en slave adressen verstuurt
Slave node - Node die de klok en het adres ontvangt.

De bus is een multi-master bus: een aantal Master nodes kunnen aanwezig zijn. Bovendien is het mogelijk master en slave rollen worden gewijzigd tussen de berichten (nadat een STOP wordt verzonden).

Dit is dus ideaal voor de Arduino, in toekomstige experimenten kunnen er nog een aantal componenten toegevoegd worden aan de Arduino terwijl we het schermpje kunnen blijven gebruiken.

Aansluitingen (LCD - Arduino UNO):
Vcc - 5V
GND - GND
SCL - analoog 5
SDA - analoog 4 

Voor dit experiment heb ik gebruik gemaakt van een stukje sample code, aangepast voor mijn scherm (adres aangepast):

//DFRobot.com

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()

{

 lcd.init();                      // initialize the lcd

 // Print a message to the LCD.

 lcd.backlight();

 lcd.print("Het Arduino - de");
 lcd.setCursor(0, 1);
 lcd.print("Lange Programma");

}
void loop()
{
}


En dat ziet er dan zo uit: