from machine import Pin, ADC
from time import sleep, time
import random
# Definieer LEDs en knop
leds = [Pin(2, Pin.OUT), Pin(3, Pin.OUT), Pin(4, Pin.OUT), Pin(5, Pin.OUT), Pin(6, Pin.OUT), Pin(7, Pin.OUT), Pin(8, Pin.OUT), Pin(9, Pin.OUT)]
button1 = Pin(22, mode=Pin.IN, pull=Pin.PULL_UP) # Startknop
button2 = Pin(10, mode=Pin.IN, pull=Pin.PULL_UP) # Controleknop
potentiometer = ADC(28) # Potentiometer
def main():
led = Pin(2, Pin.OUT)
while True:
led.on()
time.sleep(1)
led.off()
time.sleep(1)
def clear_leds():
for led in leds:
led.off()
def flash_leds(times=5, interval=0.2):
for _ in range(times):
for led in leds:
led.on()
sleep(interval)
for led in leds:
led.off()
sleep(interval)
def leds_bij_verloren(times=5, interval=0.2):
for _ in range(times):
for led in leds:
led.on()
sleep(interval)
led.off()
def start_ping(duration=3, interval=0.2):
end_time = time() + duration
while time() < end_time:
for led in leds:
led.on()
sleep(interval)
for led in leds:
led.off()
sleep(interval)
while True:
if button1.value() == 0: # Start het spel wanneer button1 wordt ingedrukt
clear_leds()
start_ping() # LED's laten pingen voor 3 seconden bij start van het spel
leds[1].on() # LED 2 aan gedurende spel
target_position = random.randint(0, 10) # Willekeurige doelpositie
print(f"Doelpositie: {target_position}") # Debug print, kan verwijderd worden
start_time = time() # Start de timer
while time() - start_time < 20: # 20 seconden timer
potentiometer_value = int(potentiometer.read_u16() / (2**16 / 10)) # Potentiometerwaarde normaliseren naar 0-9
if button2.value() == 0: # Controleer of button2 wordt ingedrukt
if potentiometer_value == target_position: # Controleer of de juiste positie is bereikt
flash_leds() # Knipperende LED's als succesindicatie
break
else:
sleep(0.5) # Debouncing delay voor button2
else: # Deze else hoort bij de while, wordt uitgevoerd als de timer afloopt
leds_bij_verloren() # LED chase effect als de tijd op is
sleep(1) # Wachten voordat het spel opnieuw begint
'''
Instructie
Naam van de Spel kluis
Het spel begint na het indrukken van knop 1 (deze knop bevindt zich aan de rechterkant, naast de potentiometer,
zodat het spel gemakkelijker te spelen is).
Bij het starten van het spel knipperen alle lichten gedurende 3 seconden. Tijdens het spel blijft LED2 branden
als teken van een groen licht.
De speler heeft 20 seconden om de juiste positie te raden, die willekeurig door het programma is gekozen.
De speler kan telkens controleren of de gekozen positie juist is door op knop 2 te drukken, die zich aan de
linkerzijde van het bord bevindt.
De potentiometer is verdeeld over 10 posities, en telkens wordt er een nieuwe positie gekozen na het
beëindigen van het spel.
Als de speler de juiste positie ontdekt, knipperen de LED-lichten 5 keer. Als de tijd om is,
heeft de speler verloren, en de LED-lichten zullen gedurende 20 seconden van rechts naar links aan- en uitgaan.
'''