Ausgabe auf dem OLED Display
Nun wollen wir etwas auf dem OLED Display der senseBox MCU-S2 anzeigen. Dafür nutzen wir die SSD1306 CircuitPython Bibliothek und die adafruit_display_text Bibliothek.
Entpacke die .zip Dateien und kopiere die .mpy Dateien aus den lib Ordnern in den lib Ordner deiner senseBox (CIRCUITPY Laufwerk).
Hier ist ein Beispielcode, der "Hi senseBox! :)" auf dem Display anzeigt:
import board
import displayio
import digitalio
import terminalio
from adafruit_display_text import label
import adafruit_displayio_ssd1306
# IO Enable
io_enable_pin = digitalio.DigitalInOut(board.IO_POWER)
io_enable_pin.direction = digitalio.Direction.OUTPUT
io_enable_pin.value = False
displayio.release_displays()
# Use for I2C
i2c = board.I2C()
display_bus = displayio.I2CDisplay(i2c, device_address=0x3D)
WIDTH = 128
HEIGHT = 64
BORDER = 5
display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=WIDTH, height=HEIGHT)
# Make the display context
splash = displayio.Group()
display.root_group = splash
color_bitmap = displayio.Bitmap(WIDTH, HEIGHT, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF # White
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)
# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(WIDTH - BORDER * 2, HEIGHT - BORDER * 2, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0x000000 # Black
inner_sprite = displayio.TileGrid(
inner_bitmap, pixel_shader=inner_palette, x=BORDER, y=BORDER
)
splash.append(inner_sprite)
# Draw a label with shorter text
text = "Hi senseBox!"
text_area = label.Label(
terminalio.FONT, text=text, color=0xFFFFFF, x=12, y=HEIGHT // 2 - 1
)
splash.append(text_area)
# Draw smiley face on the right side
smiley_palette = displayio.Palette(1)
smiley_palette[0] = 0xFFFFFF # White
# Left eye
left_eye = displayio.Bitmap(4, 4, 1)
left_eye_sprite = displayio.TileGrid(left_eye, pixel_shader=smiley_palette, x=95, y=20)
splash.append(left_eye_sprite)
# Right eye
right_eye = displayio.Bitmap(4, 4, 1)
right_eye_sprite = displayio.TileGrid(right_eye, pixel_shader=smiley_palette, x=110, y=20)
splash.append(right_eye_sprite)
# Mouth
mouth = displayio.Bitmap(25, 3, 1)
mouth_sprite = displayio.TileGrid(mouth, pixel_shader=smiley_palette, x=92, y=40)
splash.append(mouth_sprite)
# Mouth corners
left_corner = displayio.Bitmap(3, 3, 1)
left_corner_sprite = displayio.TileGrid(left_corner, pixel_shader=smiley_palette, x=90, y=38)
splash.append(left_corner_sprite)
right_corner = displayio.Bitmap(3, 3, 1)
right_corner_sprite = displayio.TileGrid(right_corner, pixel_shader=smiley_palette, x=114, y=38)
splash.append(right_corner_sprite)
while True:
pass