Es besteht die Möglichkeit ein 128x64 OLED Display über I2C an den Arduino Alvik anzuschließen. Hierzu muss man zuerst die notwendige Bibliothek auf den Arduino Alvik übertragen. Klicken sie hierzu in der Software Thonny im Menü Werkzeuge auf den Bereich verwaltete Pakete und suchen sie nach SSD1306. Installieren Sie diese Bibliothek auf den Arduino Alvik.
Es bietet sich nun an Messwerte aus dem Alvik auf dem OLED Display auszugeben, hier ein Beispiel:

Dieser Code gibt den Abstand eines Objektes und die Farbe des Untergrundes über den Farbsensor.
from machine import Pin, I2C
import ssd1306
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
# Initialisierung OELD Display
i2c = I2C(sda=Pin(11), scl=Pin(12))
display = ssd1306.SSD1306_I2C(128, 64, i2c)
alvik = ArduinoAlvik()
alvik.begin()
while True:
color = alvik.get_color_label() # Farbe auslesen
lt, clt, ct, crt, rt = alvik.get_distance() # mittleren TOF sensors auslesen
display.text(f'Abstand: {ct}', 0, 0, 1) # Abstand ausgeben
display.text(f'Farbe: {color}', 0, 20, 1) # Farbe ausgeben
display.show()
sleep_ms(2000)
display.fill(0) #löscht das Display nach jeder Messung
Man kann nun z.B. auch die Sensorwerte eines bme680 auslesen und auf dem Oled Display ausgeben lassen. Hier ein Beispielcode:
from machine import Pin, I2C
import bme680
import time
import ssd1306
# I2C initialisieren (GPIO 12 = SCL, GPIO 11 = SDA)
i2c = I2C(0, scl=Pin(12), sda=Pin(11), freq=100000)
# Display initialisieren
display = ssd1306.SSD1306_I2C(128, 64, i2c)
try:
# Sensor initialisieren
sensor = bme680.BME680_I2C(i2c=i2c, address=0x76)
print("BME680 erfolgreich erkannt!")
except OSError:
print("Sensor nicht gefunden. Mögliche Ursachen:")
print("- Falsche I2C-Adresse (versuche address=0x76 oder 0x77)")
print("- Defekte Verkabelung")
raise SystemExit
# Hauptschleife
while True:
try:
# Sensordaten auslesen
temperature = sensor.temperature
humidity = sensor.humidity
pressure = sensor.pressure
gas_resistance = sensor.gas
# Display löschen
display.fill(0)
# Text anzeigen (max. 6 Zeilen bei 8px Höhe)
display.text("Sensordaten:", 0, 0)
display.text(f"T: {temperature:.1f} C", 0, 10)
display.text(f"RH: {humidity:.1f} %", 0, 20)
display.text(f"P: {pressure:.1f} hPa", 0, 30)
display.text(f"Gas: {gas_resistance/1000:.1f} kOhm", 0, 40)
display.show()
time.sleep(2)
except Exception as e:
print("Fehler beim Lesen:", str(e))
time.sleep(3)
Challenge: OLED Display
Teste dein Wissen über Displays und I2C!
📝 Quiz
Was macht der Befehl display.fill(0)?
💻 Programmier-Challenge
Aufgabe: Erweitere das erste Programm so, dass auch die Geschwindigkeit des Alvik auf dem Display angezeigt wird.
alvik.get_drive_speed() und zeige die Geschwindigkeit mit display.text() an Position y=40 an.
✅ Selbsttest
Hake ab, was du gelernt hast: