Onderzoek en Componenten
Inventarisatie en selectie van de hardwarecomponenten voor de handheld console.
Het kiezen van de juiste onderdelen om een mobiel en draadloos communiceerbaar Space Invaders-spel te realiseren.
Gekozen voor een Arduino Uno als basis, een ST7735 1.77" TFT-scherm voor de graphics, een analoge joystick voor de besturing, en een IR-led met IR-receiver voor de draadloze koppeling met de centrale box.
Simulatie in Wokwi
Virtueel testen van de spel-logica en de hardware-aansturing.
De werking van het scherm en de joystick valideren in een online omgeving voordat er fysiek gesoldeerd wordt.
Omdat het ST7735-scherm niet standaard in Wokwi aanwezig is, is er succesvol gesimuleerd met een ILI9341-scherm om de basis van de Space Invaders-code en spel-logica foutloos werkend te krijgen.
Prototyping en Testen
Het fysiek opbouwen van het circuit op een tijdelijk breadboard.
Controleren of de Adafruit GFX en ST7735 bibliotheken de hardware correct aansturen en of de joystick-inputs accuraat worden geregistreerd.
De hardwarematige koppeling tussen de Arduino, het fysieke 1.77" TFT-scherm and de joystick werkte perfect. Het spel reageerde direct op de input.
Prototyping en Schema
Het ontwerpen van een elektrisch schema en het bouwen van een fysiek testcircuit.
Controleren of de fysieke componenten buiten de simulator correct samenwerken via SPI (scherm) en I2C (sensor), zonder direct te solderen.
De tijdelijke opstelling op het breadboard functioneerde goed. Het scherm reageerde correct op de fysieke sensor. Groen licht voor de montage!
Assemblage en Solderen
Het definitief vastzetten en solderen van de elektronica.
Ervoor zorgen dat de handheld console compact, stevig en makkelijk te vervoeren is zonder loshangende breadboardkabels.
Alle componenten, inclusief de IR-led en IR-receiver, zijn succesvol aan elkaar gesoldeerd. De hardware vormt nu één robuust geheel.
Code Architectuur (Flowcharts)
Om de logica van de software visueel in kaart te brengen, is het programma opgedeeld in de eenmalige setup en de doorlopende hoofdloop. Hieronder staat de exacte werking stap voor stap uitgelegd.
1. De Spelervaring en de Flow van het Spel
Bij het opstarten van het systeem verschijnt direct de titel Space Invaders op het startscherm, waarna de speler het spel activeert met een simpele druk op de joystick. Eenmaal in de game bestuurt de speler een balk aan de onderkant van het scherm door de joystick naar links en rechts te bewegen, waarbij onzichtbare muren voorkomen dat het voertuig buiten het beeld verdwijnt. De actie barst los zodra de speler de joystick indrukt om raketten af te vuren op het buitenaardse leger, dat ondertussen in een strakke formatie van links naar rechts over het scherm marcheert. Telkens wanneer de vijanden de rand van het scherm raken, veranderen ze gezamenlijk van richting en zakken ze een stukje naar beneden, wat de druk op de speler vergroot. Het uiteindelijke doel is om alle vijf de levels te overleven; bij winst in het laatste level wordt er een signaal naar de centrale box gestuurd en is het spel uitgespeeld, maar als de speler voortijdig wordt geraakt door een vijandelijke raket, is het onherroepelijk Game Over en kan er met een druk op de knop direct een nieuwe poging worden gestart.
2. De Technische Logica en Programmering
Achter de schermen draait een constante programmeerlus die de hardware en de spelregels naadloos met elkaar verbindt. De microcontroller leest continu de analoge en digitale signalen van de joystick uit om de positie van de spelersbalk te berekenen en te bepalen wanneer er een raket moet worden gegenereerd. Tegelijkertijd berekent de software de gecoördineerde beweging van de vijandelijke zwerm, inclusief de logica die ervoor zorgt dat ze bij het raken van de schermrand omkeren en naar beneden zakken, en regelt een willekeurige timer wanneer de vijanden terugschieten. Tijdens elke cyclus voert het programma strenge botsingsdetectie uit om te controleren of coördinaten van raketten en objecten elkaar overlappen; een rake klap op een vijand verhoogt de score en update de interface bovenaan het OLED-scherm. Zodra de vijandelijke array leeg is, activeert de code een nieuw level waarbij de variabelen voor de snelheid direct worden opgeschroefd, totdat level 5 succesvol wordt afgerond en de software via een specifieke GPIO-pin de centrale box aanstuurt.