Innholdsfortegnelse:

Space Invaders Clock (on a Budget!): 6 trinn (med bilder)
Space Invaders Clock (on a Budget!): 6 trinn (med bilder)

Video: Space Invaders Clock (on a Budget!): 6 trinn (med bilder)

Video: Space Invaders Clock (on a Budget!): 6 trinn (med bilder)
Video: Words of Cheer for Daily Life | Charles H. Spurgeon | Christian Audiobook 2024, Juli
Anonim
Image
Image
Samle deler
Samle deler

Nylig så jeg et kult bygg av GeckoDiode, og jeg ville umiddelbart bygge det selv. The Instructable is Space Invaders Desktop Clock, og jeg anbefaler at du tar en titt på den etter å ha lest dette.

Prosjektet var nesten utelukkende bygget av deler hentet fra Adafruit med et 3D -trykt kabinett og laserskåret facia. Å legge alt til byggekostnaden blir veldig kostbart! (rundt £ 100 eller mer). Problemet er at hvis du ikke eier en 3D -skriver, må du betale for å få modellen din skrevet ut, eller kjøpe en stygg innkapsling fra ebay som ofte er litt for liten, for smal, for kort eller motsatt.

De fleste av mine bygg må gjøres på et hobbybudsjett, og vedlegg blir alltid den dyreste delen. Så jeg bestemte meg for å bygge den samme klokken, men på et anstendig budsjett.

Hvis du liker å se på rare klokker, kan du sjekke ut min Steampunk Voltmeter Clock, som bruker de samme byggematerialene til kabinettet:-)

Trinn 1: Samle deler

For å lage dette prosjektet trenger du følgende. Husk på materialene til skapet du vil ha mange rester som du kan bruke i andre prosjekter (noe som gjør kostnadene for fremtidige bygg enda billigere). Jeg har lastet opp PDF -filer av tingene du trenger hvis du vil sjekke pris osv. På ebay.

Verktøy (jeg antar at du allerede har disse)

  • Loddejern
  • Lodding
  • Loddepumpe (hvis du gjør en feil og må fjerne loddetinn)
  • Varm limpistol
  • Varme limpinner
  • Håndverkskniv (alias Stanley Knife)
  • Linjal / målebånd / Vernier -tykkelse
  • Batteridrevet bor + borekroner (1 mm til 13 mm)
  • Roterende multiverktøy med skjæreplate (også kjent som Dremel)
  • Rengjøringsvæske som isopropylalkohol (billig aftershave fungerer også)
  • Sikkerhetsmaske (brukes ved spraymaling)

Elektronikk (kostnad for elektronikk = £ 13,05)

Noen av disse hadde jeg gratis. Gamle elektroniske leker har disse fine Mylar -høyttalerne inne hvis du tar dem fra hverandre. Mens du er der kan du sannsynligvis også få en DC -fat og en trykknapp.

  • Dupont / jumperkabler - 0,99 kr
  • DS1307 Sanntidsklokke -modul - £ 0,99 (jeg vil anbefale å kjøpe DS3231 i stedet der det er tilgjengelig)
  • Arduino nano + usb -kabel - 2,23 kr
  • 8 Ohm Mylar -høyttaler - 0,99 kr
  • SPST øyeblikkelig trykknapp - 1,49 kr
  • 5,5 mm DC fatuttak - 1,26 kr
  • 5v, 0,5A DC strømforsyning - £ 2,83
  • MAX7219 Dot matriseskjerm - £ 3,76

Vedlegg (Kostnad for vedleggsmateriale = £ 17,19)

  • 60 mm firkantet avløpsrør - £ 5,99 (du vil ha MYE av dette igjen for flere prosjekter)
  • Svart spraymaling - £ 4,85
  • Svart PVC (skumplate) - £ 2,99
  • Superlim - 0,99 kr
  • 60 mm endehett - 2,37 kr

Total kostnad = £ 30,24:-) …….. per i dag tilsvarer dette 38 USD for alle internasjonale lesere.

Jeg liker å jobbe med PVC -firkantrøret. De er enkle å bore, kutte, male, og jeg brukte en til min Steampunk -klokke.

Trinn 2: Klargjør avløpsrøret

Forbered deg på avløpsrøret
Forbered deg på avløpsrøret

Merk av hvor du vil legge tingene

Dette var så enkelt. Jeg brukte ikke noe fancy. Først kuttet jeg 2,5 m lengden ned til en rimelig størrelse for benken min hjemme (ca 30 cm) med en hacksag. Jeg kuttet dette senere med en dremel for å gjøre kantene fine og rette. Deretter hvilte jeg komponentene på overflaten av røret og brukte et permanent marked for å markere hvor jeg ønsket å bore og kutte. Jeg sporet rundt utsiden av LED-matrisen, og brukte et roterende multiverktøy til å kutte et firkantet hull for at det skulle passe inn. Jeg brukte en digital tykkelse til å måle diameteren på trykknappen og DC -fatet for å kutte hullene i riktig størrelse på baksiden og toppen.

Klipp en ramme

Jeg har masse PVC -skumplater som ligger rundt fra tidligere prosjekter. De er flotte for å montere kretser i skap, bruke den til å blande epoksy sammen på den og lage andre biter og bobber. Ta et A4- eller A5 -stykke og skjær en firkantet 5 mm surround eller ramme for å ramme inn LED -matrisen. Dette vil skjule eventuelle sprø ender du gjorde da du skar det firkantede hullet til matrisen. For dette tegnet jeg en liten mal på Inkscape og skrev den ut (SVG -fil vedlagt). Jeg limte den deretter ned med maskeringstape til skumplaten og skar forsiktig rundt den med en håndverkskniv. Det er vanskelig å få det riktig, jeg anbefaler å kutte innsiden først og deretter utsiden.

Mal alt

Når alle hullene er boret og kuttet, fjerner du eventuelle hull. Rengjør overflatene med noen alkoholservietter for å fjerne støv eller forurensning (eller billig etterbarbering hvis du ikke har noen IPA). Prøv å spray på et godt ventilert område og bruk en maske der det er mulig. Jeg gjorde dette utenfor med litt papp på gulvet, men det er ikke ideelt, selv en liten bris kan føre til at maling flyr tilbake i ansiktet ditt. Vær forsiktig og bruk verneutstyr der det er mulig.

Spray røret, rammen og endehettene slik at de alle er av samme sort, og la dem tørke i noen timer.

Trinn 3: Programmer Arduino

Programmer Arduino
Programmer Arduino

Litt informasjon om koden

Takk til GeckoDiode da jeg har tatt koden hans og endret den for å fungere med MAX7219 Chip. Adafruit -versjonen bruker I2C -buss og MAX bruker SPI -bussen. Til dette brukte jeg MaxMatrix -biblioteket, som jeg lastet ned og installerte i Arduino IDE. Hvis du vil lære mer om MaxMatrix og hvordan LED -matrisen fungerer i hovedsak, er det en veldig kort opplæring på HowToMechatronics.com. LED-matrisen består utelukkende av en enkelt LED-farge i stedet for å ha en flerfarget skjerm.

En frustrasjon jeg hadde er at det IKKE er noen klare definisjoner på hva funksjonene er for biblioteket og hvilke argumenter som må føres inn i hver. Heldigvis var jeg i stand til å finne ut hva som gjorde hva ved prøving og feiling, og til slutt var det ikke så vanskelig å få det til å fungere skikkelig. Det første du må forstå er at du må definere hvor mange 8x8 moduler som er i matrisen. I koden min er dette lagret i et heltall kalt "moduler" slik:

"int moduler = 4;"

Dette er ANTALL av 8x8 moduler du har koblet sammen i skjermen. Ikke antall lysdioder eller hvilken pin du bruker sendedataene. Den neste tingen å huske er at hvis "sprite" eller hva som dekker alle fire matriser, må byte -matrisen defineres slik:

"byte text_start_bmp = {32, 8, …*noen byte data*…};"

Tallene angir mengden rader og kolonner i matrisen. Ved denne anledningen vises byten med navnet "text_start_bmp" over 32 kolonner og 8 rader. Tallene vises bare på en enkelt 8x8 matrise, så minutt nummer 10 ser slik ut:

"byte minute_ten_bmp = {8, 8, …*noen byte data*…};"

Angriperne dekker to matriser, så byten vil bli gitt 16, 8 i byte data.

Den andre tingen som fanget meg var posisjoneringen av sprite -dataene. Du kan be Arduino om å vise sprite i en annen X/Y -posisjon på matrisen fra standard hjemmeposisjon. Koden ser slik ut for minutt null:

"matrix.writeSprite (8, 0, minute_zero_bmp);"

Ett tall er X -justering og et annet er Y. Husker ikke hvilket nummer som er nå, men hvis du vil skyve sprite opp eller ned med 1 rad eller kolonne, øker du ganske enkelt tallet positivt eller minus. Enkelt nok for 8x8 matrise, men når spriteen din dekker mer enn én matrise, må du angi hjemmeposisjonen tilsvarende. "POP" sprite er vist nedenfor:

"matrix.writeSprite (16, 0, invader_pop_bmp);"

Legg merke til nå hvordan hjemmeposisjonen er 16 ikke 8? Her angir koden at sprite vises fra venstre til høyre fra posisjon rad/kolonne 16. Den anser to 8x8 skjermer for å være en enkelt 16x8 skjerm, selv om det er 4! Derfor er det viktig å tenke på hvor mange skjermer sprite vil bli vist på tvers og størrelsen på hver sprites byte -array tilsvarende. Ellers vil du ha noen veldig interessante sprites!

DS1307 RTC

Selv om DS1307 fungerer fint med Adafruit RTClib.h -biblioteket, kan du ikke stille inn tiden som er smertefullt. Jeg gikk bare med dette fordi det betydde mindre kode å endre. DS1307 angir klokkeslettet med klokkeslett og dato koden ble kompilert fra datamaskinens tid. Lær i stedet hvordan du bruker DS3231 -biblioteket og sett det en gang i ett eller to minutter fremover. Den har også mindre "drift", så den holder tiden bedre over tid. Begge modulene bruker I2C -bussen, og jeg tror DS3231 kan brukes med RTClib.h hvis du vil fortsette å bruke den.

Last opp koden

Når du er fornøyd med koden, laster du den opp til Arduino. Jeg har lagt ved Arduino -skissen min for vurdering.

Trinn 4: Montering av elektronikk

Montering av elektronikk
Montering av elektronikk

Mens jeg laster opp koden, vil jeg anbefale at elektronikken settes sammen med dupont/jumper -ledninger på et brødbrett først, så når du laster opp koden, vet du at alt fungerer etter hensikten. Dette lar deg stryke ut eventuelle problemer med å vise sprites osv. Før du begynner å lime og lime. I koden min kan du se at jeg bruker digitale pinner 4, 5, 6, 7, 9, men du kan endre disse om nødvendig. Du må kanskje lodde kabler på knappen, DC -kontakten og høyttaleren, men de fleste bør være enkle push fit -kontakter.

Når du er fornøyd, fungerer elektronikken etter hensikten, bør du vurdere å lodde tilkoblingene. Du kan gjøre dette med kobberlister/veroboard, men for den lille mengden komponenter kan du lodde direkte til pinnene på Arduino. Det vil se ut som et rottered, men ingen vil se inne i skapet når det er montert uansett, bare sørg for at alle metalldeler er adskilt, du vil ikke ha noe kortslutning i saken.

Jeg har fått trykknappen til å fungere når "mainButton" -pinnen trekkes lavt. Jeg fant at Arduino gjenkjente en falsk trykknapp da flytende elektronikk slo seg ned på den. Ved å bruke en 10K nedtrekksmotstand på trykknappen og sette pinnen til "INPUT_PULLUP" løste jeg dette problemet.

Vedlagt er skjemaet i PDF og PNG, slik at du vet hvor du skal koble pinnene.

Trinn 5: Monter elektronikken og lukk opp

Monter elektronikken og nærbilde
Monter elektronikken og nærbilde
Monter elektronikken og nærbilde
Monter elektronikken og nærbilde

For klokken min monterte jeg elektronikken med varmt lim, men vær forsiktig så du ikke bruker for mye (elektronikk liker ikke å bli oppvarmet for lenge). Jeg brukte en liten dråpe superlim prikket rundt rammen og presset den mot fronten. Jeg avsluttet kabinettet ved å skyve inn endelokkene i hver ende. Selvfølgelig kan du lime endehettene for å helt omslutte forsamlingen, men jeg lot den ene siden av meg være åpen slik at jeg fortsatt kan få tilgang til USB -porten på arduinoen for å tilbakestille dato og klokkeslett i fremtiden.

Trinn 6: Nyt

Nyt
Nyt
Nyt
Nyt

Totalt sett er jeg fornøyd med måten dette kom ut på, med tanke på at det bare var noe takrør og spraymaling. Jeg håper du liker det og gi meg beskjed hvis du kan tenke deg noen kule oppgraderinger som kan legges til. Jeg ville være interessert i å vite om noen kan gjøre dette billigere eller om det er en annen sparsom måte å lage et kabinett jeg kan prøve i mitt neste prosjekt.

Anbefalt: