Innholdsfortegnelse:

Pumpktris - Tetris -gresskaret: 10 trinn (med bilder)
Pumpktris - Tetris -gresskaret: 10 trinn (med bilder)

Video: Pumpktris - Tetris -gresskaret: 10 trinn (med bilder)

Video: Pumpktris - Tetris -gresskaret: 10 trinn (med bilder)
Video: Pumpktris 2024, Juli
Anonim
Pumpktris - Tetris -gresskaret
Pumpktris - Tetris -gresskaret

Hvem vil glise ansikter og lys når du kan ha et interaktivt gresskar denne Halloween? Spill ditt favorittblokk-stablingsspill på et 8x16 rutenett hugget inn i kalebassen, opplyst av lysdioder og bruk stammen som kontroller. Dette er et moderat avansert prosjekt og krever erfaring med lodding og programmering i Arduino -miljøet. Du vil jobbe med organisk materiale og alle dets iboende særegenheter, så målingene må kanskje tilpasses gresskaret du bruker.

Trinn 1: Nødvendig materiale

Nødvendige materialer
Nødvendige materialer
Nødvendige materialer
Nødvendige materialer

For å bygge din egen Pumpktris trenger du følgende: Komponenter

  • 128 5 mm gule lysdioder (jeg brukte disse fra Mouser) Kjøp litt ekstra for å dekke eventuelle feil eller tester. Jeg fikk 140. Amber ligner mest på flammen som ville være inne i en tradisjonell jack-o-lanterne, men du er fri til å bruke hvilken som helst farge du liker.
  • Arduino mikrokontroller
  • 1/16 "varmekrympeslange (11 fot eller 256 1/2" lange stykker)
  • Arcade -joystick med avtagbart håndtak (denne fra SparkFun fungerte bra for meg)
  • 4 #6 nylon gipsankre Dette er ikke typen med vekslene, men den typen som ser ut som skruer med dype gjenger
  • 4 halvtommers lange skruer av samme størrelse og type som fulgte med gipsankrene. De som følger med ankrene blir for lange.
  • 6 mm x 50 mm bolt (eller hvilken størrelse som passer til festet for joystickhåndtaket)
  • 6 mm koblingsmutter (eller hvilken størrelse som er nødvendig for å matche bolten ovenfor) En koblingsmutter ser ut som en vanlig mutter, men er omtrent en tomme lang og brukes til å feste to bolter eller stykker gjengestang.

Og sist, men ikke minst, trenger du 1 gresskar. Du trenger bare en, men jeg anbefaler to slik at du har en du kan bruke til å øve på boring og skjæring. LED -matrisen din kommer til å dekke et område som er omtrent 4 "bredt og 8" høyt, så du vil ha et gresskar med et område som er så glatt og flatt som mulig, slik at matrisen din ikke vikles for langt rundt. Du kan bruke et skumgresskar, men hvor er magien i det? Jeg kan ikke snakke med utskjæringsteknikkene som trengs på et skumgresskar. Verktøy og forbruksvarer

  • Loddejern
  • Lodding
  • Avbitertang
  • Wire strippere
  • Bormaskin
  • Hacksag
  • X-Acto kniv
  • 13/64 "bor
  • 1-1/8 "bor (jeg brukte en Forstner-bit, men en spadebit kan også fungere)
  • 1/4 "skumkjernebrett

Trinn 2: Bygg en LED -matrise

Bygg en LED -matrise
Bygg en LED -matrise
Bygg en LED -matrise
Bygg en LED -matrise
Bygg en LED -matrise
Bygg en LED -matrise

Hver matrise er laget av 64 lysdioder og 128 trådstykker. Det er enklest å kutte og fjerne alle ledningene for hver matrise på forhånd. Skjær 112 i 2,5 "biter og fjern 1/4" av hver ende. Klipp de resterende 16 i 12 "biter og strip begge ender. Jo mer konsekvent du kan få ledningslengdene dine, jo lettere blir det å bygge og installere.

Du starter med å bygge seksten åttesegmenter daisy-chain av ledninger-hver med 7 korte og 1 lange ledninger. Vri hver ende sammen med neste stykke og loddetinn. For å koble ledningene til lysdiodene trenger du en jigg for å holde lysdiodene. Tegn et 8x8 rutenett med en halv tommers avstand på et stykke 1/4 "tykt skumkjernebrett, og bruk deretter en syl til å stikke et hull som er litt mindre i diameter enn LED-en i hvert kryss. Du har 64 hull når du er ferdig. I den øverste hullrekken setter du inn 8 lysdioder. Skumkjernen strekker seg for å passe til lysdiodene og holder dem tett. Juster lysdiodene slik at det lengre benet-anodeledningen-vender mot deg på hver. Dobbeltsjekk, for hvis du får en feil, fungerer ikke matrisen. Klipp hver anodeledning til omtrent 1/4 "lang, og tinn den med loddetinn for å gjøre det lettere å koble ledningene. Skjær 8 stykker varmekrympende rør i 1/2 "segmenter. Skyv et stykke rør over den første ledningstilkoblingen, skyv den tilbake så den ikke påvirkes av varmen i loddetinnet, og lodd deretter ledningstilkoblingen til LED-anoden. Skyv slangen ned over tilkoblingen når den er avkjølt. Fortsett til neste LED, gjenta syv ganger med å skyve på et stykke rør, lodde forbindelsen og senke slangen over skjøten. Når du har en sett med åtte lysdioder som alle er koblet til hverandre, fjern dem fra jiggen og gjenta igjen for syv rader, og sørg for å gjøre alle tilkoblinger til anodeledningen til hver LED. Du kan bruke den raden i jiggen som er lettest å nå, siden du bare jobber med en om gangen. Etter at alle åtte radene er loddet, er det på tide å bli med kolonnene og lage en matrise. Sett alle LED -strengene inn i jiggen du har laget. Hold den lange ledningen på samme Klipp og tinn katodeledningen til hver LED i den første kolonnen umn, akkurat som du gjorde for å bygge strengen. Ta en annen ledningskjede og gjenta prosessen med lodding til lysdiodene, bare denne gangen kobler du den på 90 grader til det første settet med ledninger du gjorde. Hold den lange ledningen på samme side av matrisen. Når du fullfører hver kolonne, fjerner du den fra skumkjernejiggen og bretter den ut av veien for å gi tilgang til den neste kolonnen. Når du er ferdig, har du 64 lysdioder forbundet i 8 rader og 8 kolonner. Dessverre må du gjenta prosessen igjen for den andre matrisen. Hvis du trenger en pause, hopper du til trinn 3, 4 og 5 for å jobbe med koden, så kom tilbake til dette.

Trinn 3: Kontroll av lysdiodene

Kontroll av lysdiodene
Kontroll av lysdiodene
Kontroll av lysdiodene
Kontroll av lysdiodene
Kontroll av lysdiodene
Kontroll av lysdiodene
Kontroll av lysdiodene
Kontroll av lysdiodene

LED -matrisene du har laget vil bli kontrollert av to Mini 8x8 LED Matrix -ryggsekker fra Adafruit. Hver kontroller lar deg kjøre 64 lysdioder med bare to ledninger fra Arduino, og du kan kjede flere kontrollere sammen på de samme to ledningene. Følg instruksjonene som følger med LED Matrix-ryggsekken for lodding på 4-pinners topp/data/klokkeoverskrift. Så, i stedet for lodding på LED -matrisen som følger med, lodder du to rader med kvinnelige hoder til sekken. Koble den medfølgende mini LED -matrisen til topptekstene. Koble matrisen til et brødbrett og koble den til på følgende måte:

  • Koble CLK -pinnen på ryggsekken til den analoge pinnen 5 på Arduino.
  • Koble DAT -pinnen til den analoge pinnen 4 på Arduino.
  • Koble GND til bakkenålen på Arduino.
  • Koble VCC+ til 5v strøm.

Last ned Adafruit LED -ryggsekkbiblioteket og Adafruit GFX -bibliotekene og installer dem på datamaskinen din ved å kopiere hver til "biblioteker" -mappen i datamaskinens Arduino -skissemappe. Last opp "matrix8x8" -filen til Arduino og bekreft at LED -ryggsekken fungerer. Pinnene på LED -matrisen får kanskje ikke god kontakt i kvinnelige overskrifter, så du må kanskje vrikke eller fjerne den delvis for å få kontakt og la alle rader og kolonner lyse. Gjenta prosessen med den andre LED -ryggsekken, men denne gangen må du angi en ny adresse for den ved å lodde en jumper over A0 -putene på ryggsekken. Kjør "matrix8x8" -koden igjen, men endre linjen "matrix.begin (0x70)" til "matrix.begin (0x71)" slik at koden adresserer den nye LED -ryggsekken.

Trinn 4: Koble til styrespaken

Koble til styrespaken
Koble til styrespaken
Koble til styrespaken
Koble til styrespaken

Styrespaken din skal ha fire brytere med to terminaler hver. Når du flytter joysticken til høyre, utløser den bryteren til venstre, når du beveger den ned, utløser den bryteren på toppen, og så videre. På en terminal på hver bryter, lodd en 3 "ledning. Vri den andre enden av alle fire av disse ledningene sammen og lodd dem til en 12" ledning. Dette er felles for alle fire brytere. Lodd en 12 "ledning til den gjenværende terminalen på hver bryter, og koble dem deretter som følger:

  • Koble den nederste bryteren (aktivert når du skyver opp) til analog pin 0 på Arduino.
  • Koble venstre bryter (aktivert når du skyver til høyre) til analog pin 1 på Arduino.
  • Koble toppbryteren (aktivert når du trykker ned) til analog pin 2 på Arduino.
  • Koble høyre bryter (aktivert når du skyver til venstre) til analog pin 3 på Arduino.
  • Koble den vanlige jordledningen til jordpinnen på Arduino.

Trinn 5: Programmering av spillet

Programmering av spillet
Programmering av spillet

Last ned den vedlagte Pumpktris.ino.zip, pakk den ut, og åpne filen i Arduino utviklingsmiljø. Kompiler og last den opp til Arduino. Du bør nå kunne spille på mini LED -matrisen du konfigurerte i forrige trinn. Jeg har prøvd å kommentere koden så mye som mulig, men her er en generell oversikt over hovedprosessene: Beskrivelse av figurene Det er syv tetrominoer, hver med 4 piksler, og hver med fire mulige rotasjoner. Vi lagrer alt dette i et flerdimensjonalt array: den første dimensjonen som består av de syv figurene, den andre dimensjonen inneholder de fire rotasjonene for hver form, den tredje inneholder fire pikselbeskrivelser som hver består av en X- og Y-koordinat. Dette beskriver for eksempel "T" -formen:/ * T */ {/ * vinkel 0 */ {{0, 1}, {1, 1}, {2, 1}, {1, 2}},/ * vinkel 90 */ {{1, 0}, {1, 1}, {2, 1}, {1, 2}},/ * vinkel 180 */ {{1, 0}, {0, 1}, {1, 1}, {2, 1}}, / * vinkel 270 * / {{1, 0}, {0, 1}, {1, 1}, {1, 2}}}

Spore det aktive stykket For å holde oversikt over stykket som spilles, opprettholder programmet en variabel i activePiece. Dette er indeksen for den aktive formen på det høyeste nivået i matrisen. Den beholder også en rotasjonsvariabel som inneholder indeksen for den nåværende rotasjonen. En xOffset-variabel sporer hvor langt venstre eller høyre (0-7) hvert stykke er, og yOffset sporer hvor langt ned (0-15) brettet det har falt. For å tegne det aktive stykket legger programmet til X- og Y -forskyvningsverdiene til X- og Y -koordinatene for hver piksel trukket fra gjeldende rotasjon av det valgte stykket. stykker, hvor hver byte representerer en rad. For eksempel vil matrisen nedenfor representere en L -form som sitter i midten av de to nederste radene (som angitt med 1s i de to siste byte): byte sampleGrid [16] = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00111000}; Kollisjonsdeteksjon Når det gjøres et forsøk på å flytte det aktive stykket, sjekker programmet først den nye posisjonen mot gruppen med faste brikker. Hvis det ikke er noen kollisjoner, er flyttingen tillatt og matrisen tegnes på nytt. Hvis det oppdages en kollisjon mens du prøver å flytte til venstre, høyre eller rotere, er handlingen forbudt. Hvis det oppdages en kollisjon mens du prøver å slippe en brikke, blir brikken fast i sin posisjon og legges til rekkefølge med faste piksler. Slippe brikker automatisk Tempoet i spillet styres av gravityTrigger og stepCounter -variablene. Hver loop av programmet øker stepCounter, og hver gang stepCounter når tellingen som er lagret i gravityTrigger, faller det aktive stykket ett nivå. Etter hvert som spillet utvikler seg, reduseres gravityTrigger slik at det aktive stykket faller oftere og oftere til det endelig faller i hver sløyfe i programmet. Hver gang et aktivt stykke er festet til rutenettet, sjekker programmet etter full byte/rad (B11111111). Hvis den finner noen, blinker den dem av og på tre ganger, fjerner dem deretter og slipper radene over for å fylle hullet. Feilsøking Hvis brikkene ikke faller fra topp til bunn, men i stedet går fra side til side, endrer du verdi passert i linjene "matrixTop.setRotation (1);" og/eller "matrixBottom.setRotation (1);" i "setup ()" loop. Hvis brikkene starter i feil matrise, bytter du den fysiske plasseringen til hver matrise eller reverserer adressene som er angitt i "matrixTop.begin (0x70);" og "matrixBottom.begin (0x71);" linjene i "setup ()" -sløyfen. Hvis noen rader eller kolonner ikke lyser, vri med mini LED -matrisen i kvinnelige overskrifter. De tar kanskje ikke god kontakt.

Trinn 6: Koble til LED -matrisen

Koble til LED -matrisen
Koble til LED -matrisen
Koble til LED -matrisen
Koble til LED -matrisen
Koble til LED -matrisen
Koble til LED -matrisen

Når alle koder og kontroller er bekreftet som å fungere med mini LED -matrisene, er det på tide å koble til de store LED -matrisene du loddet selv.

Du kan koble hver ledning til hodene på matrisesekken individuelt, men du vil sannsynligvis gjøre mye plugging og frakobling, slik at det kan bli en skikkelig problem. I stedet vil du lodde hver ledning på en mannlig topplist og koble den til matrisen. Jeg monterte topplistene på et stykke prototypebrett, slik at jeg kunne koble og koble fra alle de 16 pinnene. Rad 1-4 kobles til pinne 1-4 på matrisesekken (pinnummerering starter øverst til venstre mens du ser ned på ryggsekken med 4-pinners strøm/bakke/data/klokkepinner på toppen). Kolonne 1-4 kobles til pinne 5-8. Pinnummereringen brytes rundt slik at pinne 9 er nederst til høyre. Rad 5-8 kobles til pinner 12-9, og kolonner 5-8 kobles til pinner 16-13. Se diagrammet for mer klarhet. Koble hver matrise til en ryggsekk og kjør det samme "matrix8x8" -programmet som du gjorde for mini LED -matrisene i trinn 4. Hvis hver fungerer, kan du laste ned spillprogrammet. Hvis det ikke fungerer, må du kontrollere at radene og kolonnene i den store LED -matrisen er koblet til de riktige pinnene på ryggsekken. Montering av LED-matrisen i skumkjernegiggen du laget for montering kan gjøre det lettere å teste hele systemet.

Trinn 7: Carving the Pumpkin

Carving the Pumpkin
Carving the Pumpkin
Carving the Pumpkin
Carving the Pumpkin
Carving the Pumpkin
Carving the Pumpkin

Ikke skjær på gresskaret før all elektronikken din fungerer. Et utskåret gresskar har en begrenset holdbarhet, og hvis du skjærer det først og deretter bruker 2 dager på elektronikken, er det to dager med morsomt spill.

Finn den flateste siden på gresskaret slik at LED -panelet ikke vikles for langt rundt, og kutt deretter en åpning på siden motsatt den. Vær sjenerøs; du trenger rom for å få hendene der inne for å jobbe. Du kommer ikke til å kutte toppen som på et tradisjonelt gresskar fordi det må stå intakt for joysticken. Pumpkin goo og elektronikk er ikke de beste vennene, så rengjør innsiden godt. For den flotteste Pumpktris vil du at rutenettet med LED-er skal være rett og godt tilpasset gresskaret. En PDF er vedlagt med 8x16 mellomrom, en halv tomme fra hverandre. Skriv ut denne (eller lag din egen med din egen avstand), klipp rundt kantene og teip den på forsiden av gresskaret. Pass på at det er rett opp og ned. Med en spiker, tannpirker eller annet lignende verktøy stikker du et hull i midten av hver LED som er merket på papiret. Det anbefales ikke å bore direkte gjennom papiret fordi det sannsynligvis vil forskyve seg eller rive. Når alle pilothullene er stukket ut, fjerner du papirmalen og bruker en 13/64 "bit i motorboret for å bore hvert hull. Ikke rett boret vinkelrett på gresskarets overflate! Hvis du gjør dette, vil krølling av gresskaret kan føre til at hull som er en halv tomme fra hverandre på utsiden møtes på innsiden, og det vil være vanskelig å sette inn lysdiodene. Prøv i stedet å holde alle hullene parallelle. Når alle hullene er boret, bruk din X-Acto-kniv til å skjære en firkantet "piksel" rundt hvert hull. Vinkle kniven mot midten av hvert hull og la det være omtrent 1/8 "mellom pikslene. Jeg foreslår at du kjøper et gresskar og bruker det til å perfeksjonere bore- og pikselutskjæringsteknikken din. Mestre det der før du tar sjansen på å ødelegge det perfekte gresskaret du fant for det ferdige produktet.

Trinn 8: Montering av stammen på styrespaken

Montering av spindelen på styrespaken
Montering av spindelen på styrespaken
Montering av spindelen på styrespaken
Montering av spindelen på styrespaken
Montering av spindelen på styrespaken
Montering av spindelen på styrespaken
Montering av spindelen på styrespaken
Montering av spindelen på styrespaken

Nå vil du tilpasse stammen til å brukes som en joystick for å kontrollere spillet.

Klipp av stilken så nær basen som mulig. Hvis snittet ikke er glatt og rent, bruk en slipeblokk for å flate det ut. Bor et 1-1/8 "hull rett gjennom bunnen av stammen og inn i gresskaret. Skru ut ballen på joysticken og juster akselen med midten av hullet fra innsiden av gresskaret. Sørg for at fronten på styrespaken er firkantet med gresskarets forside-når du spiller vil du skyve til venstre og høyre for å flytte brikker, ikke på skrå. Når den er sentrert og firkantet, bruk en spiker eller tannpirker for å stikke hull inn i innsiden av gresskaret over monteringshullene i joystickbasen. Fjern joysticken. Med wire cutters, kutt de ekspanderende tipsene av gipsankrene slik at de er kortere enn tykkelsen på gresskarets hud. Skru disse forkortede, snubnose gipsankrene inn i styrehullene du laget. Detaljene i den neste delen vil avhenge av joysticken du kjøpte. Den jeg brukte fra SparkFun hadde et 6 mm feste for kulehåndtaket som blir erstattet av stammen. Hvis joysticken din er annerledes, bruk hvilken størrelse muttere og bolter som passer. Finn midten av stammen og bor et 13/64 "hull (samme størrelse som du brukte for LED -hullene, tilfeldigvis) omtrent en tomme rett inn i stammen. Dette ville være et godt skritt for å teste på gresskaret ditt for å sikre at bolten skrues godt inn i hullet. Skjær hodet av en 6 mm x 50 mm bolt med en baufil. Legg epoksy eller trelim på gjengene nær skruens avskårne ende, og skru den inn i stammen. Du vil ha en tomme eller så av det i stammen og en tomme utenfor. Skru 6mm koblingsmutteren på styrespaken, men ikke fest styrespaken i gresskaret ennå.

Trinn 9: Plassering av LED og joystick

Plassering av LED og joystick
Plassering av LED og joystick

Sett innsiden av gresskaret inn lysdiodene rad for rad i hullene til basene er i flukt med gresskarets indre overflate. Når alt er på plass, bruk et bambusspyd for å skyve dem dypere mot fronten. Jeg forlot frontkanten sittende ca 1/4 "til 3/8" under utsiden. Hvis de er for langt under overflaten, vil lyset søle inn i gresskarets kjøtt og hver piksel vil være mindre tydelig.

Legg et lag med plastfolie på toppen av joysticken, mens selve akselen stikker gjennom. Dette vil holde minst en del fuktighet fra å sive inn i det. Fest styrespaken med 1/2 skruer i gipsankrene. Skruene som fulgte med ankrene vil være for lange og ville stikke gjennom gresskaret.

Trinn 10: Spill spillet

Spiller spillet
Spiller spillet

Sett en bolle eller en matbeholder i plast nederst på gresskaret for å unngå at dinglende elektronikk berører bunnen. Plugg joysticken inn i Arduino, LED -ryggsekkene i Arduino og LED -matrisene i ryggsekkene. Koble en strømkilde til Arduino. Spill nå litt Pumpktris! Ideer for videre utforskning I stedet for å montere styrespaken på toppen av gresskaret med lysdiodene, kan du bruke et eksternt gresskar, enten trådløst eller med en kabel dekorert for å se ut som et vintre. I stedet for et spill kan du vise rullende meldinger på jack-o-lanterne. Du vil kanskje montere matrisene sidelengs (16 bredde og åtte høye), eller til og med bare bruke en matrise. Det uunngåelige forfallet Ditt gresskar vil til slutt begynne å råtne og spire mugg og sopp. Dette kan være helsefarlig og kan føre til feil i elektronikken din. Det er best å trekke ut all elektronikken din når du ser noen vekst på eller i gresskaret, slik at du kan bruke dem senere senere uten at det er nødvendig med en Haz-Mat-opprydding.

Halloween dekorasjonskonkurranse
Halloween dekorasjonskonkurranse
Halloween dekorasjonskonkurranse
Halloween dekorasjonskonkurranse

Andre pris i Halloween -dekorasjonskonkurransen

Anbefalt: