HHF
Published © CC0

128x64 OLED Display an Calliope Mini über I2C

Um ein paar Zeilen Text darzustellen, soll so ein schickes kleines OLED Display an den Calliope angeschlossen werden.

IntermediateWork in progress1 hour764
128x64 OLED Display an Calliope Mini über I2C

Things used in this project

Hardware components

Calliope mini
Calliope mini
×1
Seeed Studio SeeedStudio 4 Pin Female Jumper To Grove 4 Pin Conversion Cable
Amazon Product ID B01AD62W56
×1
AZDelivery 1x 128 x 64 Pixel 0,96 Zoll OLED Display
Amazon Product ID B01L9GC470
×1
Resistor 4.75k ohm
Resistor 4.75k ohm
Pull up Widerstände laut Doku benötigt, ging aber auch so.
×2

Software apps and online services

Calliope mini Calliope PXT Editor

Story

Read more

Code

Initialisierung des OLED Displays

JavaScript
Initialisierung des Displays. Betriebsspannung kommt vom Calliope (External VCC). 128x64 Punkte.
Der Code initialisiert vier I2C Adressen, funktioniert hat bei mir 0x3C.
Der Befehl 0xA7 am Ende invertiert das Display, man sollte also auf jeden Fall etwas sehen.
let adr:number[]=[0x3C,0x3D,0x78,0x7A]
let ini:number[]=[0x00AE,0x00D5,0x0080,0x00A8,0x003F,0x00D3,0x0000,0x008D,0x0014,0x0020,0x0000,0x00A1,0x00C8,0x00DA,0x0012,0x0081,0x00CF,0x00D9,0x00F1,0x00DB,0x0040,0x00A4,0x00A6,0x002E,0x00AF,0x00A7]
for (let i = 0; i < adr.length; i++) {
    basic.showNumber(adr[i])
    for (let j = 0; j < ini.length; j++) {
        pins.i2cWriteNumber(adr[i], ini[j], NumberFormat.UInt16BE)
        control.waitMicros(40)
    }
}

Hallo auf das Display schreiben

JavaScript
Der Code initialisiert das Display, setzt die Schreibposition auf 0, löscht das Display und schreibt HALLO
// I2C Adresse setzen
let adr = 0x3C
// Display initialisieren
let ini: number[] =[0x00AE, 0x00D5, 0x0080, 0x00A8, 0x003F, 0x00D3, 0x0000, 0x008D, 0x0014, 0x0020, 0x0000, 0x00A1, 0x00C8, 0x00DA, 0x0012, 0x0081, 0x00CF, 0x00D9, 0x00F1, 0x00DB, 0x0040, 0x00A4, 0x00A6, 0x002E, 0x00AF]
for (let i = 0; i < ini.length; i++) {
    pins.i2cWriteNumber(adr, ini[i], NumberFormat.UInt16BE)
    control.waitMicros(40)
}
// Position auf 0 setzen und Display löschen
let cpn: number[] =[0x0021, 0x0000, 0x007F, 0x0022, 0x0000, 0x0007]
for (let j = 0; j < cpn.length; j++) {
    pins.i2cWriteNumber(adr, cpn[j], NumberFormat.UInt16BE)
}
for (let k = 0; k < 1023; k++) {
    pins.i2cWriteNumber(adr, 0x4000, NumberFormat.UInt16BE)
    control.waitMicros(40)
}
// HALLO schreiben
let hw: number[] =[0x4000, 0x407F, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x407F, 0x4000, 0x4040, 0x4070, 0x401C, 0x4017, 0x401C, 0x4070, 0x4040, 0x4000, 0x407F, 0x4040, 0x4040, 0x4040, 0x4040, 0x4040, 0x4000, 0x4000, 0x407F, 0x4040, 0x4040, 0x4040, 0x4040, 0x4040, 0x4000, 0x4000, 0x401C, 0x4022, 0x4041, 0x4041, 0x4041, 0x4022, 0x401C]
for (let p = 0; p < hw.length; p++) {
    pins.i2cWriteNumber(adr, hw[p], NumberFormat.UInt16BE)
    control.waitMicros(40)
}

Credits

HHF

HHF

12 projects • 14 followers
"Papa, warum hast Du Dir auch einen Calliope gekauft?" - "Weil Ihr Eure ja nicht mehr hergebt!"

Comments