Arduino – Lektion 16: I2C OLED Display

I detta enkla lektion använder vi oss av följande produkter:
UNO R3 (Arduino Uno kompatibelt kort)
OLED 128×64 med I2C anslutning

Förutom detta krävs lödning av stiftlist/hylslist på displayen samt kablage.

I detta exempel använder Arduino IDE version 1.8.5 samt det populära u8g2 LIBet för grafiska displayer, detta LIB måste installeras först, detta gör man via menyn: Sketch -> Include Library -> Manage Libraries…

När “Library Manager” fönstret är uppe, sök efter “u8g2”, välj sedan “U8g2 by oliver” och “install”. Man kan behöva starta om Arduino IDE efter detta. I detta exempel har vi installerat version 2.21.8.

U8g2 har sin github här och där finns alla funktioner förklarade, vi kommer inte gå in på hur de fungerar utan i detta exempel kommer vi bara skriva ut 2 textrader för att verifiera att inkopplingen fungerar.

OLED displayen kan drivas med 5V eller 3.3V (vi kör med 5VDC i vårt exempel) och endast 4 anslutningar krävs. Anslut OLED displayen till matningen och jord (5VDC/VCC samt GND) och sedan I2C bussens 2 anslutningar, SCL på OLED till SCL på Arduino samt SDA på OLED till SDA på Arduino. I2C bussen finns även på A4 och A6 på Arduino Uno, men kan finnas på andra ställen på andra kort.

Ladda ner källkoden till testprojektet och öppna det i Arduino IDE, ställ in det kort du använder (i vårt fall Arduino/Genuino Uno) samt den port (i vårt fall COM38) som Arduinokortet är anslutit till. Välj därefter “Upload” och om allt funkar som det skall skall texten komma upp som bilden ovan.

Det finns många exempel som man kan testa, ni finner dem under File -> Examples -> U8g2. När ni väl öppnat ett exempel så finns det otroligt många displayer som stödjs, men för att få vår att fungera så skriv in raden som finns nedan (ni ser var den skall ligga i vårt exempel):

U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

Notera att man kan inte göra allt för komplicerade projekt med en Arduino Uno (kanske alla exempel inte fungerar eller är avsett för en annan displaystorlek), då libbet kräver en hel del Flash och Ram, men då kan man använda sig av en SAMD21 baserad Arduino såsom dessa för att få plats med mer kod, dessutom är den snabbare och har mer RAM minne. Detta demoprogram använder cirka 8Kb av 32Kb Flash (sen tar bootloadern lite till) och 1,5Kb av 2K RAM på en Arduino Uno med Atmega328P att jämföra med en SAMD21G18 som har 256K Flash samt 32K RAM!

SAMD21 körs med 3.3V, men denna OLED fungerar fint med den spänningen med.

 

Föregående Sida    –    Nästa Sida