Ma - vr 10:00 - 18:00 (do tot 20:00), za 10:00 - 17:00

Pi Plaza: bouw een reactiespel met de Raspberry Pi Pico

Het lampje gaat aan op een willekeurig moment, en wie het eerst op zijn knop drukt, wint. Simpel, spannend en verslavend: perfect voor een regenachtige middag. Ondertussen leer je drie dingen die in bijna elk elektronicaproject terugkomen: een uitgang aansturen (het lampje), een ingang uitlezen (de knoppen) en met tijd rekenen. Reken op een half uur, inclusief een paar potjes.

Wat heb je nodig

  • Een Raspberry Pi Pico of Pico W met pinnetjes (headers)
  • Een breadboard en een paar jumperkabels
  • Eén ledje en een weerstand van 330 ohm
  • Twee drukknopjes
  • Een laptop met het gratis programma Thonny

Alles behalve de laptop zit in de Raspberry Pi Pico-kit.

Aansluiten

OnderdeelSluit aan opPin op de Pico
Ledje, lange pootVia de weerstand naar GP15Pin 20
Ledje, korte pootGND (min)Pin 18
Knop linksTussen GP14 en GNDPin 19 en pin 18
Knop rechtsTussen GP16 en GNDPin 21 en pin 23

Een weerstand voor de knoppen heb je niet nodig: de Pico heeft er zelf een ingebouwd, een zogeheten pull-up. Die houdt de ingang “hoog” (1), en als je drukt, verbind je hem met GND en wordt hij “laag” (0).

MicroPython op de Pico

Sluit de Pico aan op je laptop en open Thonny. Kies rechtsonder de interpreter “MicroPython (Raspberry Pi Pico)”. Staat er nog geen MicroPython op de Pico, dan biedt Thonny aan om het te installeren; houd daarvoor de witte BOOTSEL-knop ingedrukt terwijl je de usb-kabel insteekt.

De code

from machine import Pin
import time
import random

lampje = Pin(15, Pin.OUT)
links = Pin(14, Pin.IN, Pin.PULL_UP)
rechts = Pin(16, Pin.IN, Pin.PULL_UP)

while True:
    lampje.off()
    print("Klaar? Wacht op het lampje...")
    time.sleep_ms(random.randint(2000, 5000))
    lampje.on()
    start = time.ticks_ms()

    # wachten tot een van de knoppen wordt ingedrukt (ingedrukt = 0)
    while links.value() == 1 and rechts.value() == 1:
        pass

    tijd = time.ticks_diff(time.ticks_ms(), start)
    if links.value() == 0:
        print("Links wint in", tijd, "milliseconden!")
    else:
        print("Rechts wint in", tijd, "milliseconden!")
    time.sleep(3)

Sla het op de Pico op als main.py, dan start het spel voortaan vanzelf zodra de Pico stroom krijgt. De uitslag verschijnt onderin Thonny.

Hoe het werkt

Het programma draait in een eindeloze lus. Eerst gaat het lampje uit en wacht de Pico een willekeurige tijd tussen twee en vijf seconden, zodat niemand kan voorspellen wanneer het zover is. Dan gaat het lampje aan en onthoudt de Pico de tijd. De binnenste lus doet niets anders dan heel snel kijken of er al een knop laag is. Zodra dat zo is, rekent de Pico uit hoeveel milliseconden er verstreken zijn en wie er gedrukt heeft.

Maak het moeilijker

  • Valse start: wie drukt voordat het lampje aangaat, verliest de ronde.
  • Scorebord: houd bij wie er wint en stop bij vijf punten.
  • Geluid: een zoemer die piept bij een valse start.
  • Twee lampjes: laat ook het lampje van de winnaar oplichten.

Loop je vast, of wil je het samen bouwen? Neem je Pico mee naar de winkel of kom naar een Pi Plaza-workshop. En wie het hele gezin heeft verslagen, mag een foto sturen voor de Pi Plaza-muur.