from machine import Pin, SPI # Importeer Pin- en SPI-klassen om hardwarecomponenten aan te sturen
from time import sleep # Importeer sleep-functie voor vertragingen
# Initialiseer SPI
spi = SPI(1, baudrate=1000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23)) # Configureer SPI-bus met specifieke instellingen
ss = Pin(5, Pin.OUT) # Stel Pin 5 in als uitgang voor Slave Select (SS)
ss.value(1) # Zet SS hoog om communicatie met het apparaat te stoppen
# MAX7221 registers
DECODE_MODE = 0x09 # Register voor decodeermodus
INTENSITY = 0x0A # Register voor helderheidsinstelling
SCAN_LIMIT = 0x0B # Register om het aantal actieve rijen te bepalen
SHUTDOWN = 0x0C # Register om shutdown-modus te regelen
DISPLAY_TEST = 0x0F # Register voor display test-modus
# Smiley patroon (8x8)
SMILEY = [
0b00111100, # Rij 1 van de smiley (binaire weergave)
0b01000010, # Rij 2 van de smiley
0b10100101, # Rij 3 van de smiley
0b10000001, # Rij 4 van de smiley
0b10100101, # Rij 5 van de smiley
0b10011001, # Rij 6 van de smiley
0b01000010, # Rij 7 van de smiley
0b00111100 # Rij 8 van de smiley
]
def write_to_max7221(register, data):
#"""Schrijf data naar een register van de MAX7221."""
ss.value(0) # Zet SS laag om communicatie te starten
spi.write(bytearray([register, data])) # Stuur registeradres en data via SPI
ss.value(1) # Zet SS hoog om communicatie te beëindigen
def setup_max7221():
#"""Configureer de MAX7221 voor gebruik."""
write_to_max7221(SHUTDOWN, 0x01) # Zet de MAX7221 in normale werking (niet in shutdown)
write_to_max7221(DISPLAY_TEST, 0x00) # Schakel de display test-modus uit
write_to_max7221(DECODE_MODE, 0x00) # Stel geen decodeermodus in (directe dataweergave)
write_to_max7221(SCAN_LIMIT, 0x07) # Activeer alle 8 rijen (0-7)
write_to_max7221(INTENSITY, 0x08) # Stel helderheid in op een gemiddelde waarde (0x00 - 0x0F)
def display_smiley():
#"""Toon een smiley op het dot-matrix display."""
row = 1 # Begin met rij 1
for data in SMILEY: # Loop door elke rij van het patroon
write_to_max7221(row, data) # Schrijf de data van de rij naar de corresponderende displayrij
row += 1 # Verhoog de rij-teller
#def display_smiley():
# """Toon een smiley op het dot-matrix display."""
# for row, data in enumerate(SMILEY, start=1): # Loop door elke rij van het patroon
# write_to_max7221(row, data) # Schrijf de data van de rij naar de corresponderende displayrij
# Setup MAX7221 en toon smiley
setup_max7221() # Configureer de MAX7221 chip
display_smiley() # Toon de smiley op het display
while True:
sleep(1) # Houd het programma actief door elke seconde een vertraging in te voegen