Whack a Mole Light Box

by andriesdg199 in Circuits > Arduino

561 Views, 2 Favorites, 0 Comments

Whack a Mole Light Box

IMG_20210528_135147.jpg
IMG_20210528_130700.jpg
IMG_20210525_093309.jpg
IMG_20210505_105510.jpg

Dit concept is heel vergelijkbaar met wat ik vorig jaar deed, maar dat was toen nogal miserabel. Het heeft meerdere knoppen aan lichtjes gelinkt, deze knoppen moet je indrukken op het moment dat het bijbehorende lichtje aan gaan. Als je te laat bent, ben je af, en als je op de knop drukt zonder dat het lichtje aan is, ook. Ik wou me dit jaar bewijzen en het goed doen. Het vorige ontwerp had alleen twee knoppen en lichtjes en die werkte met aparte functies. Deze keer heb ik er vier en ze maken allemaal gebruik van dezelfde functie. Gebruikmakend van for-loops, deze had ik nog niet eerder gebruikt met Arduino. Dus mooi leermoment. Deze verbetering gaat ook samen met de grote en complexiteit van het spel. Daarbij zit er nu ook een scherm op die de score laat zien en vertelt hoe het spel gaat. Dit idee had ik voor vorig jaar ook, maar dat was er toen niet van gekomen. Voor deze display moest ik moeilijk doen met libraries en het feit dat de die veel te groot was, daardoor had de arduino te weinig ruimte in het dynamische geheugen, waardoor het spel niet meer werkte. Maar met een sub-library heb ik het laten werken, wat mooi is om te weten voor de volgende keer. Met het nieuwe design heb ik heel veel geïtereerd met de code en veel nagedacht over het doosje. Ik heb uiteindelijk 10 verschillende scripts geschreven, die allemaal wat anders toevoegen. Hier heb ik goed leren itereren, met hulp van Ferdy. Die heeft mij een goede manier laten zien hoe ik het kan opslaan dat het daarna ook makkelijk terug te vinden is.

Supplies

1x Arduino UNO

4x Reset Light-Up Buttons

4x 10 KOhm resistor

1x OLED Display

1x On/Off Switch

1x Box

Soldering Stuff

Iteraties

IMG_20210322_111730.jpg
IMG_20210215_100813.jpg
IMG_20191230_120706_400.jpg
IMG_20210216_171305.jpg

Terugkomend op de iteraties, ik heb met veel verschillende gespeeld om te kijken wat werkte en wat leuk zou zijn met dit project. Van een vriendin van me heb ik een seeeduino lotus gekregen met alle onderdelen eraan vast. Ik heb gekeken naar luchtdrukmeter, om te kijken of er naar geblaast wordt. De accelerometer, als de doos bewogen wordt. En nog een paar andere, maar ik werd bang dat het dan te vervelend of te gecompliceerd werd. Ook gezien deze allemaal libraries nodig hadden, had het nooit gepast op de Arduino. Ik heb het wel geprobeerd en er veel van geleerd. Het schermpje komt hier ook vandaan, daarvan heb ik de aansluiting opnieuw moeten solderen, omdat het aan de verkeerde kant zat en omdat ik het niet had kunnen gebruiken met mijn Arduino Uno.

Hier laat ik verder nog een paar iteraties zien, vooral waar ik mee begonnen ben en een ander concept wat ik in mijn hoofd had. De druksensor en de servo. Die zouden dan aan je arm vastgemaakt worden en als een soort mantis blades werken, zoals in Cyberpunk 2077, maar daar heb ik uiteindelijk niet voor gekozen. Omdat het niet comfortabel zou passen. Ik heb nog een ander concept tussendoor geprobeerd. Dit was een puzzelbox, maar daar had ik het probleem dat ik niet twee servo’s kon aansluiten, gezien de Arduino dan niet genoeg stroom had. De laatste twee zijn van dit project. Beginnend met twee lampjes zoals vorig jaar, maar dan toch de keuze maken om het te proberen met vier. En daar dan mee verder gaan.

Toen ik de buttons die ik had besteld binnen had, ben ik goed naar het doosje gaan kijken, hier had ik meerdere dingen geprobeerd met karton. Deze doosjes waren simpel met ducktape aan elkaar geplakt om het bij elkaar te houden. En vooral voor de grote, om te zien of alles paste. Daarnaast had ik de knoppen in een stuk oud MDF van vorig jaar gezet, om te kijken hoe goed ze blijven zitten, en voor de grote van de gaten die ze nodig hadden. Wanneer alles duidelijk was ben ik online een generator gaan opzoeken, waarmee je DXF file doosjes kan maken, zodat ik die op de lasercutter kon uitsnijden. Waar ik ook een hoop van heb geleerd. Hier vond ik dat het ook met ronde kanten kon. En dat kon ik niet laten liggen.

​Solderen

image (1).png
IMG_20210521_143349.jpg
IMG_20210521_231718.jpg
IMG_20210521_232111.jpg
IMG_20210518_004135.jpg

Het solderen kwam erna, hier had ik al wat ervaring mee, maar gezien ik net een nieuw soldeerstation had, moest ik daar nog even aan wennen. Het solderen ging me best makkelijk af. Het is zeker een grote verbetering in vergelijking met vorig jaar, vooral qua netheid. Het is dit jaar ook aanmerkelijk groter, daarom heb ik de allemaal wat meer ruimte gegeven, waar ik vorig jaar alles direct na elkaar had gezet. Dit gaf mij veel meer overzicht, en ik had meer ruimte per connectie, waardoor het wat makkelijker werd te solderen.

Als eerste staan de connecties die er gemaakt worden, de knoppen hadden nog wel een weerstand nodig. Anders zouden ze alsnog worden doorgebrand. Waar de lampjes er eigenlijk geen nodig hadden. Voor dit voorbeeld staan ze er wel bij, als je het wilt namaken.

Code

image (3).png
image (2).png
image (4).png

Qua code is het best wel simpel. Alle knoppen en lampjes maken gebruik van hetzelfde stuk code, die als eerste is laten zien. Deze gaat langs elke knop om te kijken wat de states zijn en wat hij aan het doen is. Het zorgt er ook voor dat de knop maar één keer wordt aangeroepen in plaats van zolang je de knop in drukt. Gebaseerd op of het bijbehorende lichtje aan is, zal er iets anders gebeuren. Of je bent af, of het lichtje gaat uit en je score gaat omhoog. Als het lichtje te lang aan is, dan gaat hij na drie seconde uit, en dan ga je ook af, omdat je te laat bent.

Het schermpje maakt gebruik van de U8x8 library, dit is een display library. Het heeft alle fonts en de code die het laat werken erin zitten. Zoals ik al eerder zei was dit een sub-library van U8g2, deze heeft meer fonts en net andere commands. Maar deze hele library was veel te groot, waardoor ik te weinig memory over had om de code zelf op te kunnen runnen. Dus ik moest een oplossing zoeken. Gelukkig werkte U8x8, anders was ik bang dat ik het helemaal anders had moeten doen. De code zelf is ongelofelijk simpel. Want je hoeft alleen maar naar de lijn te gaan waar je je tekst op wilt zetten, en te zeggen wat er moet staan. En dan de lijn die je anders wilt even clearen. Na alle sequences te schrijven is het alleen een questie van het runnen en het werkt.

Leermomenten

IMG_20210525_094848.jpg
IMG_20210505_120709.jpg
IMG_20210525_111829.jpg

Wat ik vooral geleerd heb door dit project, is goed itereren. Echt verschillende versies apart opslaan en labelen. Kleine onderdelen maken en dat later een groot geheel laten worden. Daarbij natuurlijk ook meer arduino code en complexere onderdelen ervan, zoals for-loops en display libraries. Ik zal in de toekomst dit nu veel beter kunnen toepassen. Daarnaast is het physiek bouwen van dingen voor mij veel leuker en makkelijker geworden. Zoals het doosje uitproberen en maken en het solderen vond ik super leuk en ik ben er ook beter in.

Wat ik wel graag nog wil leren is beter gebruik maken van het memory dat erop zit, zodat dat niet zo snel vol raakt of dat het efficiënter gebruikt wordt. En ik zou graag nog een keer alle sensoren die ik van de Seeeduino had gekregen gebruiken, zodat ik weet hoe ze werken en hoe ik ze kan toepassen op andere dingen die ik nog kan maken.