from machine import Pin, SPI
from time import sleep
# Initialiseer SPI
spi = SPI(1, baudrate=1000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23))
ss = Pin(5, Pin.OUT)
ss.value(1)
# MAX7221 registers
DECODE_MODE = 0x09
INTENSITY = 0x0A
SCAN_LIMIT = 0x0B
SHUTDOWN = 0x0C
DISPLAY_TEST = 0x0F
# Smiley patroon (8x8)
SMILEY = [
0b00111100, # Rij 1
0b01000010, # Rij 2
0b10100101, # Rij 3
0b10000001, # Rij 4
0b10100101, # Rij 5
0b10011001, # Rij 6
0b01000010, # Rij 7
0b00111100 # Rij 8
]
def write_to_max7221(register, data):
"""Schrijf data naar een register van de MAX7221."""
ss.value(0)
spi.write(bytearray([register, data]))
ss.value(1)
def setup_max7221():
"""Configureer de MAX7221 voor gebruik."""
write_to_max7221(SHUTDOWN, 0x01) # Normale werking
write_to_max7221(DISPLAY_TEST, 0x00) # Display test uit
write_to_max7221(DECODE_MODE, 0x00) # Geen decodeermodus
write_to_max7221(SCAN_LIMIT, 0x07) # Gebruik alle 8 digits
write_to_max7221(INTENSITY, 0x08) # Helderheid (0x00 - 0x0F)
def display_smiley():
"""Toon een smiley op het dot-matrix display."""
for row, data in enumerate(SMILEY, start=1):
write_to_max7221(row, data)
# Setup MAX7221 en toon smiley
setup_max7221()
display_smiley()
while True:
sleep(1) # Houd het programma actief