Programmeerwetenschappen 2025–2026

Raspberry Pi Reactiespel

Een timer-reactiespel gebouwd met een Raspberry Pi, een drukknop en een pull-up weerstand. Stop de timer zo dicht mogelijk bij de doeltijd — 10 pogingen, een scoreboard en eeuwige roem.

Inleiding
Wat is het project?

Dit is een klein project gemaakt voor het vak programmeerwetenschappen. De opdracht was om een eigen twist te geven aan een spelletje waarbij je een timer zo dicht mogelijk bij 10 seconden moet pauzeren.

In deze versie krijg je telkens een ander doelgetal. Je speelt 10 rondes en elke ronde krijg je een score van 1 tot 99, afhankelijk van hoe dicht je bij de doeltijd zat. Na alle rondes geef je je naam in en verschijn je op het scoreboard.

Scores worden opgeslagen in een JSON-bestand zodat ze bewaard blijven na het afsluiten van het programma. Bij een dubbele naam wordt automatisch de hoogste score bewaard.

⏱️

Timer-reactiespel

Stop de timer zo dicht mogelijk bij de opgegeven doeltijd. Hoe preciezer, hoe hoger je score.

🔘

Fysieke drukknop

Input via een echte drukknop op het breadboard, aangesloten op GPIO 14 van de Raspberry Pi.

🏆

Scoreboard

10 pogingen per speler. Scores worden bijgehouden in een JSON-bestand, inclusief highscore-systeem.

Pull-up weerstand

Een 10 kΩ weerstand zorgt voor een stabiel signaal en voorkomt zwevende spanning op de input-pin.

Hardware
Materiaal & componenten
Het project combineert een Raspberry Pi met eenvoudige elektronische componenten op een breadboard.
🖥️

Raspberry Pi

Centrale verwerkingseenheid. Voert het pygame-spel uit en verwerkt de input van de drukknop.

Controller
🔘

Drukknop

De spelersinterface. Indrukken pauzeert de timer. Heeft een LED om visuele feedback te geven.

Input
🔌

Breadboard

Verbindt alle componenten zonder te solderen. De voeding loopt via de plus- en minrail.

Verbinding

Weerstand (10 kΩ)

Pull-up weerstand tussen 5V en GPIO 14 voor een stabiel en betrouwbaar ingangssignaal.

Elektronica
🔗

Draadjes

Verbindingsdraden tussen Raspberry Pi, breadboard en drukknop. Wit, groen en rood gekleurd.

Bedrading
📺

Monitor, muis & toetsenbord

Randapparatuur voor de Raspberry Pi. De monitor toont het spel, het toetsenbord voor naarinvoer.

Periferie
Technische focus
Aansluiting & circuit
🔌

Waarom een pull-up weerstand?

Zonder pull-up weerstand zweeft de spanning op de GPIO-pin wanneer de knop niet ingedrukt is. Dit kan valse triggering veroorzaken of een input die langer gedetecteerd wordt dan de knop echt ingehouden wordt. De 10 kΩ weerstand legt de ingang vast op 5V bij rust.

Schema — Raspberry Pi → Breadboard → Drukknop

Raspberry Pi
GPIO 14 · 5V · GND
Draden
Breadboard
Plus- & minrail · 10 kΩ
Draden
Drukknop
Input & LED
PinFunctieVerbinding
Pin 2 (5V)VoedingPlus-rail breadboard
Pin 6 (GND)AardingMin-rail breadboard
Pin 8 (GPIO 14)SignaallijnWitte draad → knop

⚡ Pull-up weerstand (10 kΩ)

De weerstand staat tussen de 5V-voeding en GPIO 14. Bij rust houdt hij de ingang hoog (5V). Wanneer de knop ingedrukt wordt, loopt de stroom via de groene draad naar de min — GPIO 14 leest dan laag (0V). Zo is de toestand altijd duidelijk en stabiel.

Software
Spelregels & code
Het spel is gebouwd met Python en drie modules: pygame voor de weergave, time voor de timer en RPi.GPIO voor de knopinput.
🎮

Hoe werkt het spel?

De timer start automatisch bij het opstarten. Druk op de knop om te stoppen. Je score (1–99) is gebaseerd op hoe dicht je bij de doeltijd zat. Na 10 pogingen geef je je naam in en verschijn je op het scoreboard.

⏱️

Timer pauzeren

Druk op de knop om de lopende timer te stoppen. Hoe dichter bij de doeltijd, hoe hoger je score.

🔢

Wisselende doeltijden

Elke ronde krijg je een ander doelgetal. Je weet dus niet altijd exact op hoeveel seconden je moet mikken.

🎯

Score 1–99

Je score daalt naarmate het verschil tussen jouw tijd en de doeltijd groter wordt. Perfecte stop = 99.

🏆

Scoreboard + highscore

Scores blijven opgeslagen in een JSON-bestand. Bij een dubbele naam wordt automatisch de hoogste score bewaard.

Gebruikte modules

pygame

Tekent het spelvenster, toont de timer en verwerkt de weergave van score en boodschappen.

Weergave

time

Meet de verstreken tijd via time.time(). Gebruikt voor de timer en debounce-logica.

Timing

RPi.GPIO

Leest de toestand van de drukknop via GPIO 14. Configuratie in BCM-modus met pull-up.

Hardware I/O
Code — setup & gameloop
import pygame import time import RPi.GPIO as GPIO # GPIO setup BUTTON_PIN = 14 GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Pygame setup pygame.init() screen = pygame.display.set_mode((500, 300)) font = pygame.font.SysFont(None, 60) # Timer variabelen start_time = time.time() elapsed = 0 DEBOUNCE_MS = 200 # debounce in ms

De code werd grotendeels gegenereerd door AI (Claude) met aanpassingen door de leerling: het aantal rondes, het highscore-systeem en de min/max timerduur werden zelf aangepast en verfijnd.

Voortgang
Planning & logboek
Overzicht van de werkuren besteed aan het reactiespel en de bundel.
DatumActiviteitTijdLocatieProject
15 dec 2025Programma geplaytest, gedebugged. LCD-scherm geïnstalleerd.3 lesurenSchoolreactie game
16 dec 2025Knop geïnstalleerd, doosje gemaakt (nog niet gelijmd). Laatste versie geüpdate. Geplaytest.4 lesurenSchoolreactie game
20 apr 2026Logbook aangevuld en gestyled + begonnen aan voorwoord.2 lesurenSchoolbundel
21 apr 2026Logbook aanvullen + extra knikkers gaan halen.1 lesuurSchoolbundel
23 apr 2026Voorwoord afgemaakt.20 minSchoolbundel
Besluit
Wat heb ik geleerd?
Een eerste kennismaking met de Raspberry Pi, pull-up weerstanden en fysieke hardware-integratie in een Python-project.

Dit project was mijn eerste ervaring met de Raspberry Pi. Naast de technische kant — hoe GPIO werkt, waarom je een pull-up weerstand nodig hebt, en hoe je een breadboard aansluit — heb ik ook geleerd hoe ik beter kan prompten bij AI. Het was een eenvoudig maar leerrijk project dat mijn kennis van elektronica opfrist en me een stevige basis geeft voor complexere Raspberry Pi-projecten in de toekomst.