Inhoudsopgave:
- Stap 1: Benodigde materialen
- Stap 2: Een LED-matrix bouwen
- Stap 3: De LED's bedienen
- Stap 4: De joystick aansluiten
- Stap 5: Het spel programmeren
- Stap 6: Uw LED-matrix aansluiten
- Stap 7: Het snijden van de pompoen
- Stap 8: De stuurpen op de joystick monteren
- Stap 9: Plaatsing LED en joystick
- Stap 10: Het spel spelen
Video: Pumpktris - de Tetris-pompoen - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Wie wil er grijnzende gezichten en kaarsen als je deze Halloween een interactieve pompoen kunt hebben? Speel je favoriete blokstapelspel op een 8x16 raster uitgehouwen in het gezicht van de kalebas, verlicht door LED's en gebruik de steel als controller. Dit is een redelijk geavanceerd project en vereist ervaring met solderen en programmeren in de Arduino-omgeving. Je zult werken met organisch materiaal en al zijn inherente eigenaardigheden, dus de afmetingen moeten mogelijk worden aangepast aan de pompoen die je gebruikt.
Stap 1: Benodigde materialen
Om je eigen Pumpktris te bouwen heb je het volgende nodig: Componenten
- 128 amberkleurige LED's van 5 mm (ik heb deze van Mouser gebruikt) Koop wat extra om eventuele fouten of tests te dekken. Ik heb 140. Amber lijkt het meest op de vlam die in een traditionele jack-o-lantern zou zitten, maar je bent vrij om elke gewenste kleur te gebruiken.
- Arduino-microcontroller
- 1/16" krimpkous (11 voet, of 256 1/2" lange stukken)
- Arcade-joystick met een afneembare handgreep (deze van SparkFun werkte goed voor mij)
- 4 #6 nylon gipsplaatankers Dit is niet het soort met de knevels, maar het soort dat eruitziet als schroeven met diepe schroefdraad
- 4 halve inch lange schroeven van dezelfde maat en hetzelfde type als die bij de gipsplaatankers. Degenen die met de ankers komen, zullen te lang zijn.
- 6 mm x 50 mm bout (of welke maat dan ook past bij de houder voor uw joystickhandgreep)
- 6 mm koppelmoer (of welke maat dan ook nodig is om bij de bovenstaande bout te passen) Een koppelmoer ziet eruit als een gewone moer, maar is ongeveer 2,5 cm lang en wordt gebruikt om twee bouten of stukken draadstang aan elkaar te koppelen.
En last but not least heb je 1 pompoen nodig. Je hebt er maar één nodig, maar ik raad er twee aan, zodat je er een hebt waarmee je kunt oefenen met boren en snijden. Je LED-matrix beslaat een gebied van ongeveer 4 "breed bij 8" hoog, dus je wilt een pompoen met een gebied dat zo glad en plat mogelijk is, zodat je matrix niet te ver om zich heen wikkelt. Je zou een schuimpompoen kunnen gebruiken, maar waar is de magie daarin? Ik kan niet spreken over de snijtechnieken die nodig zijn op een schuimpompoen. Gereedschap en verbruiksartikelen
- Soldeerbout
- Soldeer
- Draadsnijders
- Draadstrippers
- Boormachine
- Metaalzaag
- X-Acto mes
- 13/64 "boor
- 1-1/8 "boor (ik heb een Forstner-bit gebruikt, maar een schoppenbit kan ook werken)
- 1/4" schuimkernplaat
Stap 2: Een LED-matrix bouwen
Elke matrix is gemaakt van 64 LED's en 128 stukjes draad. Het is het gemakkelijkst om alle draden voor elke matrix van tevoren te knippen en te strippen. Snijd 112 in stukken van 2,5 "en strip 1/4" van elk uiteinde. Snijd de resterende 16 in stukken van 12 "en strip beide uiteinden. Hoe consistenter u uw draadlengtes kunt krijgen, hoe gemakkelijker het zal zijn om te bouwen en te installeren.
Je begint met het bouwen van zestien acht-segments daisy-chains van draden, elk met 7 korte en 1 lange draad. Draai elk uiteinde samen met het volgende stuk en soldeer. Om de draden op de LED's aan te sluiten, heb je een mal nodig om de LED's vast te houden. Teken een 8x8-raster met een tussenruimte van een halve inch op een stuk 1/4 "dikke schuimkernplaat en gebruik vervolgens een priem om op elke kruising een gat te prikken dat iets kleiner is dan de LED. Je hebt 64 gaten wanneer je bent klaar. Steek in de bovenste rij gaten 8 LED's. De schuimkern zal zich uitstrekken om op de LED's te passen en ze stevig vast te houden. Lijn de LED's uit zodat het langere been - de anodekabel - op elk naar u toe is gericht. Controleer het nogmaals, want als je er een verkeerd doet, werkt de matrix niet. Klem elke anodekabel tot ongeveer 1/4 "lang en vertin deze met soldeer om het gemakkelijker te maken om de draden aan te sluiten. Snijd 8 stukken krimpkous in 1/2" segmenten. Schuif een stuk leiding over de eerste draadverbinding, duw het terug zodat het niet wordt beïnvloed door de hitte van het soldeer, soldeer vervolgens de draadverbinding met de LED-anode. Schuif de slang naar beneden over de verbinding zodra deze is afgekoeld. Ga verder met de volgende LED en herhaal nog zeven keer het proces van het op een stuk slang schuiven, de verbinding solderen en vervolgens de slang over de verbinding laten zakken. Als u een set van acht LED's die allemaal met elkaar zijn verbonden, verwijder ze uit de mal en herhaal nog zeven rijen, zorg ervoor dat alle verbindingen met de anodedraad van elke LED worden gemaakt. U kunt de rij van de mal gebruiken die het gemakkelijkst te bereiken is, omdat je er maar met één tegelijk werkt. Nadat alle acht rijen zijn gesoldeerd, is het tijd om de kolommen samen te voegen en een matrix te maken. Steek alle LED-strings in de mal die je hebt gemaakt. Houd de lange draad op dezelfde kant van elke snaar. Knip en vertin de kathodedraad van elke LED in de eerste kleur umn, net zoals je deed om de string te bouwen. Neem nog een draadketting en herhaal het proces om het aan de LED's te solderen, maar deze keer sluit je het op 90 graden aan op de eerste set draden die je deed. Houd de lange draad aan dezelfde kant van de matrix. Terwijl u elke kolom voltooit, verwijdert u deze uit de mal met schuimkern en klapt u deze uit de weg om toegang te krijgen tot de volgende kolom. Als je helemaal klaar bent, heb je 64 LED's samengevoegd in 8 rijen en 8 kolommen. Helaas moet u het proces voor de tweede matrix herhalen. Als je even pauze nodig hebt, ga dan naar stap 3, 4 en 5 om aan de code te werken, en kom hier dan op terug.
Stap 3: De LED's bedienen
De LED-matrices die je hebt gemaakt, worden bestuurd door twee Mini 8x8 LED Matrix-rugzakken van Adafruit. Met elke controller kun je 64 LED's aansturen met slechts twee draden van de Arduino, en je kunt meerdere controllers aan elkaar koppelen op dezelfde twee draden. Volg de aanwijzingen die bij de LED Matrix-rugzak worden geleverd om op de 4-pins stroom/data/klok-header te solderen. Soldeer dan, in plaats van te solderen op de meegeleverde LED-matrix, twee rijen vrouwelijke headers aan de rugzak. Steek de meegeleverde mini LED-matrix in de headers. Steek de matrix in een breadboard en sluit deze als volgt aan:
- Sluit de CLK-pin op de rugzak aan op analoge pin 5 op de Arduino.
- Verbind de DAT-pin met analoge pin 4 op de Arduino.
- Sluit GND aan op de grondpin op de Arduino.
- Sluit VCC+ aan op 5v stroom.
Download de Adafruit LED Backpack-bibliotheek en Adafruit GFX-bibliotheken en installeer ze op uw computer door ze allemaal te kopiëren naar de map "bibliotheken" van de Arduino-schetsmap van uw computer. Upload het "matrix8x8"-bestand naar uw Arduino en controleer of de LED-rugzak werkt. De pinnen van de LED-matrix maken mogelijk geen goed contact in de vrouwelijke headers, dus u moet deze mogelijk wiebelen of gedeeltelijk verwijderen om contact te maken en alle rijen en kolommen te laten oplichten. Herhaal het proces met de tweede LED-rugzak, maar deze keer moet je er een nieuw adres voor instellen door een jumper over de A0-pads op de rugzak te solderen. Voer de code "matrix8x8" opnieuw uit, maar verander de regel "matrix.begin(0x70)" in "matrix.begin(0x71)" zodat de code de nieuwe LED-rugzak adresseert.
Stap 4: De joystick aansluiten
Uw joystick moet vier schakelaars hebben met elk twee terminals. Wanneer u uw joystick naar rechts beweegt, activeert hij de schakelaar aan de linkerkant, wanneer u hem naar beneden beweegt, activeert hij de schakelaar bovenaan, enzovoort. Op één aansluiting van elke schakelaar soldeert u een draad van 3 ". Draai het andere uiteinde van alle vier deze draden samen en soldeer ze aan een 12" draad. Dit is de gemeenschappelijke basis voor alle vier de schakelaars. Soldeer een 12" draad aan de resterende aansluiting van elke schakelaar en sluit ze dan als volgt aan:
- Sluit de onderste schakelaar (geactiveerd wanneer je omhoog duwt) aan op analoge pin 0 op de Arduino.
- Sluit de linker schakelaar (geactiveerd wanneer je naar rechts duwt) aan op analoge pin 1 op de Arduino.
- Sluit de bovenste schakelaar (geactiveerd wanneer u naar beneden duwt) aan op analoge pin 2 op de Arduino.
- Sluit de rechter schakelaar (geactiveerd wanneer u naar links duwt) aan op analoge pin 3 op de Arduino.
- Sluit de gemeenschappelijke aardedraad aan op de aardingspin op de Arduino.
Stap 5: Het spel programmeren
Download het bijgevoegde Pumpktris.ino.zip, pak het uit en open het bestand in de Arduino-ontwikkelomgeving. Compileer en upload het naar je Arduino. Je zou nu moeten kunnen spelen op de mini-LED-matrix die je in de vorige stap hebt ingesteld. Ik heb geprobeerd de code zoveel mogelijk te becommentariëren, maar hier is een algemeen overzicht van de belangrijkste processen: De vormen beschrijven Er zijn zeven tetrominos, elk met 4 pixels, en elk met vier mogelijke rotaties. We slaan dit alles op in een multidimensionale array: de eerste dimensie bestaande uit de zeven vormen, de tweede dimensie met de vier rotaties voor elke vorm, de derde met vier pixelbeschrijvingen die elk bestaan uit een X- en Y-coördinaat. Dit beschrijft bijvoorbeeld de "T"-vorm:/* T */ { /* hoek 0 */ { {0, 1}, {1, 1}, {2, 1}, {1, 2} }, / * hoek 90 */ { {1, 0}, {1, 1}, {2, 1}, {1, 2} }, /* hoek 180 */ { {1, 0}, {0, 1}, {1, 1}, {2, 1} }, /* hoek 270 */ { {1, 0}, {0, 1}, {1, 1}, {1, 2} } }
Het actieve stuk volgen Om bij te houden welk stuk momenteel in het spel is, houdt het programma een activePiece-variabele bij. Dit is de index van de actieve vorm op het hoogste niveau van de array. Het houdt ook een rotatievariabele bij die de index van de huidige rotatie bevat. Een xOffset-variabele houdt bij hoe ver naar links of rechts (0-7) elk stuk is, en yOffset houdt bij hoe ver naar beneden (0-15) het bord is gevallen. Om het actieve stuk te tekenen, voegt het programma de X- en Y-offsetwaarden toe aan de X- en Y-coördinaten van elke pixel die is getrokken uit de huidige rotatie van het geselecteerde stuk. De vaste stukken volgen Het programma gebruikt een array van 16 bytes om de vaste stukken bij te houden. stukjes, waarbij elke byte een rij vertegenwoordigt. De onderstaande array zou bijvoorbeeld een L-vorm vertegenwoordigen die in het midden van de onderste twee rijen zit (zoals aangegeven door de enen in de laatste twee bytes): byte sampleGrid[16]= { B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00111000 }; Botsingsdetectie Wanneer een poging wordt gedaan om het actieve stuk te verplaatsen, controleert het programma eerst de nieuwe positie ten opzichte van de reeks vaste stukken. Als er geen botsingen zijn, is de verplaatsing toegestaan en wordt de matrix opnieuw getekend. Als een botsing wordt gedetecteerd terwijl u probeert naar links, rechts of te draaien, is de actie verboden. Als er een botsing wordt gedetecteerd tijdens een poging om een stuk te laten vallen, wordt het stuk gefixeerd in zijn positie en toegevoegd aan de reeks vaste pixels. Stukken automatisch laten vallen Het tempo van het spel wordt bepaald door de variabelen gravityTrigger en stepCounter. Elke lus van het programma verhoogt stepCounter, en elke keer dat stepCounter de telling bereikt die is opgeslagen in gravityTrigger, wordt het actieve stuk met één niveau verlaagd. Naarmate het spel vordert, wordt de zwaartekrachtTrigger verlaagd, zodat het actieve stuk steeds vaker valt totdat het uiteindelijk in elke lus van het programma valt. Elke keer dat een actief stuk aan het raster wordt bevestigd, controleert het programma op volledige bytes/rijen (B11111111). Als hij er een vindt, knippert hij drie keer aan en uit, verwijdert ze en laat de rijen erboven vallen om het gat te vullen. Problemen oplossen Als de stukjes niet van boven naar beneden vallen, maar in plaats daarvan van links naar rechts waarde doorgegeven in de regels "matrixTop.setRotation(1);" en/of "matrixBottom.setRotation(1);" in de "setup()"-lus. Als de stukjes in de verkeerde matrix beginnen, verander dan de fysieke locatie van elke matrix of keer de adressen om die zijn opgegeven in de "matrixTop.begin(0x70);" en "matrixBottom.begin(0x71);" regels van de "setup()"-lus. Als sommige rijen of kolommen niet oplichten, beweegt u de mini-LED-matrix in de vrouwelijke headers. Misschien maken ze geen goed contact.
Stap 6: Uw LED-matrix aansluiten
Wanneer alle code en bedieningselementen zijn geverifieerd als werkend met de mini-LED-matrices, is het tijd om de grote LED-matrices die u zelf hebt gesoldeerd aan te sluiten.
Je zou elke draad afzonderlijk in de headers op de matrixrugzak kunnen steken, maar je zult waarschijnlijk veel inpluggen en loskoppelen, dus dat kan een heel gedoe worden. In plaats daarvan wil je elke draad op een mannelijke headerstrip solderen en die in de matrixrugzak steken. Ik heb de header-strips op een stuk prototyping-bord gemonteerd, zodat ik alle 16 pinnen samen kon aansluiten en loskoppelen. Rijen 1-4 zijn verbonden met pinnen 1-4 op de matrixrugzak (de nummering van de pin begint linksboven terwijl je naar beneden kijkt op de rugzak met de 4-pins stroom-/grond-/data-/klokpinnen bovenaan). Kolommen 1-4 worden aangesloten op pinnen 5-8. De pinnummering loopt om zodat pin 9 rechtsonder zit. Rijen 5-8 verbinden met pinnen 12-9 en kolommen 5-8 verbinden met pinnen 16-13. Zie het diagram voor meer duidelijkheid. Sluit elke matrix aan op een rugzak en voer hetzelfde "matrix8x8"-programma uit dat u deed voor de mini-LED-matrices in stap 4. Als elk werkt, kunt u het spelprogramma laden. Als het niet werkt, controleer dan of de rijen en kolommen van de grote LED-matrix zijn aangesloten op de juiste pinnen van de rugzak. Door de LED-matrix te monteren in de mal met schuimkern die u voor montage hebt gemaakt, kan het gemakkelijker worden om het hele systeem te testen.
Stap 7: Het snijden van de pompoen
Maak geen snijwerk aan de pompoen totdat al je elektronica werkt. Een uitgesneden pompoen heeft een beperkte houdbaarheid, en als je hem eerst kerft en dan 2 dagen aan de elektronica besteedt, zijn dat twee dagen speelplezier die je kwijt bent.
Zoek de platste kant van de pompoen, zodat je LED-paneel niet te ver omwikkeld is, en snijd dan een opening aan de tegenoverliggende zijde. Wees genereus; je hebt ruimte nodig om je handen erin te krijgen om te werken. Je gaat de bovenkant niet afsnijden zoals bij een traditionele pompoen, want die moet intact worden gelaten voor de joystick. Pompoenslijm en elektronica zijn niet de beste vrienden, dus maak de binnenkant goed schoon. Voor de best uitziende Pumpktris wil je dat je raster van LED's recht en goed uitgelijnd is met de pompoen. Een PDF is bijgevoegd met een tussenruimte van 8x16, een halve inch uit elkaar. Druk dit af (of maak er zelf een met uw eigen tussenruimte), knip langs de randen en plak het op de voorkant van de pompoen. Zorg ervoor dat het recht op en neer gaat. Prik met een spijker, tandenstoker of ander soortgelijk gereedschap een geleidegat in het midden van elke LED die op het papier is gemarkeerd. Rechtstreeks door het papier boren wordt afgeraden, omdat het dan kan verschuiven of scheuren. Zodra alle geleidegaten zijn geprikt, verwijdert u de papieren sjabloon en gebruikt u een 13/64"-bit in uw boormachine om elk gat te boren. Plaats de boor niet loodrecht op het oppervlak van de pompoen! Als u dit doet, kromming van de pompoen kan gaten veroorzaken die aan de buitenkant een halve inch uit elkaar liggen om aan de binnenkant samen te komen en het zal moeilijk zijn om de LED's in te voegen. Probeer in plaats daarvan alle gaten parallel te houden. Wanneer alle gaten zijn geboord, gebruik je X-Acto-mes om een vierkante "pixel" rond elk gat te snijden. Draai het mes naar het midden van elk gat en laat ongeveer 1/8 "tussen de pixels. Ik raad aan om een oefenpompoen te kopen en deze te gebruiken om je boor- en pixelcarving-techniek te perfectioneren. Beheers het daar voordat je de kans neemt om de perfecte pompoen die je voor het eindproduct hebt gevonden, te verpesten.
Stap 8: De stuurpen op de joystick monteren
Nu ga je de stuurpen aanpassen om als joystick te gebruiken om het spel te besturen.
Snijd de stengel zo dicht mogelijk bij de basis af. Als de snede niet glad en schoon is, gebruik dan een schuurblok om het vlak te maken. Boor een gat van 1-1/8" recht door de basis van de stengel en in de pompoen. Schroef de bal van de joystick los en lijn de as uit met het midden van het gat vanaf de binnenkant van de pompoen. Zorg ervoor dat de voorkant van de de joystick staat vierkant met de voorkant van de pompoen - als je speelt, wil je naar links en rechts duwen om stukken te verplaatsen, niet in een hoek. Als het gecentreerd en vierkant is, gebruik je een spijker of tandenstoker om gaten in de binnenkant van de pompoen boven de montagegaten in de joystickbasis. Verwijder de joystick. Knip met uw draadknippers de uitzettende uiteinden van de gipsplaatankers zodat ze korter zijn dan de dikte van de huid van de pompoen. Schroef deze verkorte, stompe gipsplaatankers vast in de geleidegaten die je hebt gemaakt. De details van het volgende onderdeel zijn afhankelijk van de joystick die je hebt gekocht. De joystick die ik gebruikte van SparkFun had een bevestiging van 6 mm voor de kogelhendel die zal worden vervangen door de stuurpen. Als uw joystick anders is, gebruik de maat bouten en moeren die bij elkaar passen midden van de stuurpen en boor een gat van 13/64" (dezelfde maat die je gebruikte voor de LED-gaten, toevallig) ongeveer 2,5 cm recht in de stuurpen. Dit zou een goede stap zijn om te testen op je oefenpompoen, om er zeker van te zijn dat de bout stevig in het gat wordt geschroefd. Snijd de kop af van een bout van 6 mm x 50 mm met een ijzerzaag. Breng epoxy- of houtlijm aan op de schroefdraad in de buurt van het afgesneden uiteinde van de schroef en schroef deze in de steel. Je wilt een centimeter of zo in de stengel en een centimeter buiten. Schroef de 6 mm wartelmoer op de joystick-as, maar monteer de joystick nog niet in de pompoen.
Stap 9: Plaatsing LED en joystick
Steek vanaf de binnenkant van de pompoen de LED's rij voor rij in hun gaten totdat hun basis gelijk ligt met het binnenoppervlak van de pompoen. Als ze allemaal op hun plaats zitten, gebruik je een bamboespies om ze dieper naar voren te duwen. Ik liet hun voorkant ongeveer 1/4 "tot 3/8" onder het buitenoppervlak zitten. Als ze te ver onder het oppervlak zitten, zal het licht in het vruchtvlees van de pompoen vallen en zal elke pixel minder duidelijk zijn.
Voeg een laag plastic folie toe aan de bovenkant van de joystick, met de schacht zelf erdoorheen. Dit zorgt ervoor dat er in ieder geval wat vocht niet in kan sijpelen. Bevestig de joystick met 1/2 schroeven in de gipsplaatankers. De schroeven die bij de ankers zijn geleverd, zullen te lang zijn en door de pompoen prikken.
Stap 10: Het spel spelen
Zet een kom of plastic voedselopslagcontainer op de bodem van de pompoen om te voorkomen dat bungelende elektronica de bodem raakt. Sluit de joystick aan op je Arduino, de LED-rugzakken in de Arduino en de LED-matrices in de rugzakken. Sluit een stroombron aan op uw Arduino. Speel nu zelf wat Pumpktris!Ideeën voor verder onderzoek In plaats van de joystick op de bovenkant van de pompoen te monteren met de LED's, zou je een externe pompoen kunnen gebruiken, draadloos of met een kabel die eruitziet als een wijnstok. In plaats van een spel zou je scrollende berichten op je jack-o-lantern kunnen weergeven. Misschien wilt u de matrijzen zijwaarts monteren (16 breed bij 8 hoog), of zelfs maar één matrix gebruiken. Het onvermijdelijke verval Uw pompoen zal uiteindelijk gaan rotten en schimmel en schimmel ontwikkelen. Dit kan gevaarlijk zijn voor uw gezondheid en kan leiden tot storingen in uw elektronica. Het is het beste om al je elektronica eruit te halen zodra je groei op of in de pompoen ziet, zodat je ze later opnieuw kunt gebruiken zonder dat je de Haz-Mat hoeft op te ruimen.
Tweede prijs in de Halloween Decorations-wedstrijd
Aanbevolen:
ESP32 VGA Tetris: 3 stappen
ESP32 VGA Tetris: In deze Instructables zal ik laten zien hoe je een kloon van het klassieke spel Tetris kunt bouwen, met behulp van een ESP32 en het genereren van de output voor een VGA-monitor. Deze game wordt mogelijk gemaakt door de verbazingwekkende ESP32Lib Arduino-bibliotheek van bitluni. Je hebt de ESP32 b