Indholdsfortegnelse:

Space Invaders Clock (på et budget!): 6 trin (med billeder)
Space Invaders Clock (på et budget!): 6 trin (med billeder)

Video: Space Invaders Clock (på et budget!): 6 trin (med billeder)

Video: Space Invaders Clock (på et budget!): 6 trin (med billeder)
Video: Absolute TOP 20 Best THRIFT FLIP Decor & Furniture On a Budget! 2024, Juli
Anonim
Image
Image
Saml dele
Saml dele

For nylig så jeg et sejt byggeri af GeckoDiode, og jeg ville straks selv bygge det. Det instruerbare er Space Invaders Desktop Clock, og jeg anbefaler, at du kigger på det efter at have læst dette.

Projektet var næsten udelukkende bygget af dele, der stammer fra Adafruit med et 3D -trykt kabinet og laserskåret facia. At lægge alt sammen til omkostningerne ved byggeriet bliver meget dyrt! (omkring £ 100 eller mere). Problemet er, at hvis du ikke ejer en 3D -printer, skal du betale for at få din model udskrevet eller købe en grim kabinet fra ebay, som ofte bare er lidt for lille, for smal, til kort eller det modsatte.

De fleste af mine bygninger skal udføres på et hobby -budget, og kabinetter ender altid med at være den dyreste del. Så jeg besluttede at bygge det samme ur, men på et anstændigt budget.

Hvis du nyder at se på mærkelige ure, kan du tjekke mit Steampunk Voltmeter-ur, der bruger de samme byggematerialer til kabinettet:-)

Trin 1: Saml dele

For at lave dette projekt skal du bruge følgende. Husk på materialer til kabinettet, du vil have mange rester, som du kan bruge i andre projekter (hvilket gør omkostningerne ved fremtidige byggerier endnu billigere). Jeg har uploadet PDF'er af de ting, du har brug for, hvis du vil kontrollere pris osv. På ebay.

Værktøjer (jeg går ud fra, at du allerede har disse)

  • Loddekolbe
  • Lodde
  • Loddepumpe (hvis du laver en fejl og skal fjerne loddetin)
  • Varm limpistol
  • Varme limpinde
  • Håndværkskniv (alias Stanley -kniv)
  • Lineal / målebånd / Vernier -tykkelse
  • Batteridrevet bor + bor (1 mm til 13 mm)
  • Roterende multiværktøj med skæreskive (også kendt som Dremel)
  • Rengøringsvæske som isopropylalkohol (billig aftershave virker også)
  • Sikkerhedsmaske (bruges ved spraymaling)

Elektronik (omkostninger ved elektronik = £ 13,05)

Nogle af disse havde jeg gratis. Gamle elektroniske legetøj har disse flotte Mylar -højttalere indeni, hvis du skiller dem ad. Mens du er der, kan du sandsynligvis også få en DC -tønde og en trykknap.

  • Dupont / Jumper kabler - 0,99 kr
  • DS1307 Real -time urmodul - £ 0,99 (jeg vil anbefale at få DS3231 i stedet, hvor det er tilgængeligt)
  • Arduino nano + usb -kabel - 2,23 kr
  • 8 Ohm Mylar højttaler - 0,99 kr
  • SPST øjeblikkelig trykknap - £ 1,49
  • 5,5 mm DC -fatning - 1,26 kr
  • 5v, 0,5A DC strømforsyning - 2,83 £
  • MAX7219 Dot matrix display - £ 3,76

Kabinet (omkostninger ved kabinetmaterialer = £ 17,19)

  • 60 mm firkantet afløbsrør - £ 5,99 (du vil have meget af det tilovers til flere projekter)
  • Sort spraymaling - 4,85 £
  • Sort PVC (skumplade) - 2,99 £
  • Super lim - 0,99 kr
  • 60 mm endehætter - 2,37 kr

Samlede omkostninger = £ 30,24:-) ……..som i dag svarer det til 38 USD for alle internationale læsere.

Jeg nyder at arbejde med PVC -firkantrøret. De er lette at bore, klippe, male, og jeg brugte en til mit Steampunk -ur.

Trin 2: Forbered din afløbsrør

Forbered din afløbsrør
Forbered din afløbsrør

Markér, hvor du vil placere tingene

Dette var så let. Jeg brugte ikke noget fancy. Først klippede jeg 2,5 m længden ned til en rimelig størrelse til min bænk derhjemme (ca. 30 cm) med en hackesav. Jeg skar senere dette ned med en dremel for at gøre kanterne pæne og lige. Derefter hvilede jeg komponenterne på rørets overflade og brugte et permanent marked til at markere, hvor jeg ville bore og skære. Jeg spores rundt på ydersiden af LED-matrixen og brugte et roterende multi-værktøj til at skære et firkantet hul, så det kunne passe ind. Jeg brugte en digital tykkelse til at måle diameteren på trykknappen og DC -tønde til at skære huller i den korrekte størrelse i ryg og top.

Skær en ramme

Jeg har masser af PVC -skumplader, der ligger fra tidligere projekter. De er gode til at montere kredsløb i kabinetter, bruge det til at blande epoxy sammen på det og lave andre bits og bobs. Tag et stykke A4 eller A5 og skær en firkantet 5 mm surround eller ramme for at indramme LED -matricen. Dette vil skjule alle storslåede ender, du lavede, når du skar det firkantede hul til matrixen. Til dette tegnede jeg en lille skabelon på Inkscape og udskrev den (SVG -fil vedhæftet). Jeg tapede det derefter ned med malertape til skumpladen og skar forsigtigt rundt om det med en håndværkskniv. Det er vanskeligt at få det rigtigt, jeg anbefaler at skære indersiden først og derefter ydersiden.

Mal alt

Når alle huller er boret og skåret, fjernes eventuelle hullede kanter. Rengør overfladerne med nogle alkoholservietter for at fjerne støv eller forurening (eller en billig efterbarbering, hvis du ikke har nogen IPA). Prøv og sprøjt i et godt ventileret område, og brug en maske, hvor det er muligt. Jeg gjorde dette udenfor med noget pap på gulvet, men det er ikke ideelt, selv en lille brise kan få maling til at flyve tilbage i dit ansigt. Vær forsigtig, og brug beskyttelsesudstyr, hvor det er muligt.

Sprøjt røret, ringen og endehætterne, så de alle er af samme sort, og lad dem tørre i et par timer.

Trin 3: Programmer Arduino

Programmer Arduino
Programmer Arduino

Nogle oplysninger om koden

Tak til GeckoDiode, da jeg har taget hans kode og ændret den til at fungere med MAX7219 Chip. Adafruit -versionen bruger I2C -bus, og MAX bruger SPI -bussen. Til dette brugte jeg MaxMatrix -biblioteket, som jeg downloadede og installerede i Arduino IDE. Hvis du vil lære mere om MaxMatrix og hvordan LED -matrixen fungerer i princippet, er der en meget kort vejledning på HowToMechatronics.com. LED-matricen består udelukkende af en enkelt farve af LED'er frem for at have et flerfarvet display.

En frustration, jeg havde, er, at der IKKE er nogen klare definitioner på, hvad funktionerne er for biblioteket, og hvilke argumenter der skal føres ind i hver. Heldigvis var jeg i stand til at finde ud af hvad der gjorde hvad ved forsøg og fejl, og i sidste ende var det ikke så svært at få det til at fungere korrekt. Den første ting at forstå er, at du skal definere, hvor mange 8x8 moduler der er i din matrix. I min kode er dette gemt i et heltal kaldet "moduler" sådan her:

"int moduler = 4;"

Dette er ANTALET af 8x8 moduler, du har knyttet sammen i din skærm. Ikke antallet af LED'er eller hvilken pin du bruger sendedataene. Den næste ting at huske er, at hvis din "sprite" eller hvad som helst dækker alle fire matricer, skal byte array defineres sådan:

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

Tallene angiver mængden af rækker og kolonner i matrixen. Ved denne lejlighed vises byte med navnet "text_start_bmp" over 32 kolonner og 8 rækker. Tallene vises kun på en enkelt 8x8 matrix, så minutnummer 10 ser sådan ud:

"byte minut_ten_bmp = {8, 8,…*nogle byte data*…};"

Angriberne dækker to matricer, så byten vil blive givet 16, 8 i byte data.

Den anden ting, der fangede mig, var placeringen af sprite -data. Du kan bede Arduino om at vise sprite i en anden X/Y position på matrixen fra standard hjemmeposition. Koden ser sådan ud for minutnullen:

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

Et tal er X -justering og et andet er Y. Kan ikke huske, hvilket nummer der er nu, men hvis du vil skubbe sprite op eller ned med 1 række eller kolonne, øger du blot tallet positivt eller minus. Simpel nok til 8x8 matrix, men når din sprite dækker mere end en matrix, skal du indstille hjemmepositionen i overensstemmelse hermed. "POP" sprite er vist nedenfor:

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

Læg nu mærke til, hvordan hjemmepositionen er 16 ikke 8? Her angiver koden, at sprite vises fra venstre mod højre fra position række/kolonne 16. Det anser to 8x8 displays for at være et enkelt 16x8 display, selvom der er 4! Derfor er det vigtigt at tænke over, hvor mange skærme spriteen vil blive vist på tværs og dimensionere hver sprites byte -array i overensstemmelse hermed. Ellers får du nogle meget interessante sprites!

DS1307 RTC

Selvom DS1307 fungerer fint med Adafruit RTClib.h -biblioteket, kan du ikke manuelt indstille tiden, der bare er en smerte. Jeg gik bare med dette, fordi det betød mindre kode at ændre. DS1307 indstiller klokkeslættet ved hjælp af klokkeslæt og dato, koden blev kompileret fra din computers tid. Lær i stedet at bruge DS3231 -biblioteket og indstil det en gang i et eller to minutter fremover i fremtiden. Det har også mindre "drift", så det holder tiden bedre over tid. Begge moduler bruger I2C -bussen, og jeg tror, at DS3231 kan bruges sammen med RTClib.h, hvis du vil fortsætte med at bruge den.

Upload koden

Når du er tilfreds med koden, skal du uploade den til Arduino. Jeg har vedhæftet min Arduino -skitse til din overvejelse.

Trin 4: Montering af elektronik

Montering af elektronik
Montering af elektronik

Mens jeg uploader koden, vil jeg anbefale, at elektronikken samles med dupont/jumper -ledninger på et brødbræt først, så når du uploader koden, ved du, at alt fungerer efter hensigten. Dette giver dig mulighed for at udrydde eventuelle problemer med at vise sprites osv., Før du begynder at lime og klæbe. I min kode kan du se, at jeg bruger digitale ben 4, 5, 6, 7, 9, men du kan ændre disse om nødvendigt. Du skal muligvis lodde kabler på knappen, DC -stikket og højttaleren, men størstedelen bør være letstikstilpasningsstik.

Når du er glad, fungerer elektronikken efter hensigten, bør du overveje at lodde forbindelserne. Du kan gøre dette med kobberbånd/veroboard, men for den lille mængde komponenter kan du lodde direkte til stifterne på Arduino. Det vil ligne en rotterede, men ingen vil se inde i kabinettet, når det alligevel er samlet, bare sørg for, at alle metaldele er adskilt, du vil ikke have noget kortslutning i sagen.

Jeg har fået trykknappen til at fungere, når "mainButton" -tappen trækkes lavt. Jeg fandt ud af, at Arduino genkendte falsk trykknap, da flydende elektronik satte sig på den. Brug af en 10K pulldown -modstand på trykknappen og indstilling af stiften til "INPUT_PULLUP" løste det problem for mig.

Vedhæftet er skematikken i PDF og PNG, så du ved, hvor benene skal tilsluttes.

Trin 5: Monter elektronikken og luk tæt på

Monter elektronikken og luk
Monter elektronikken og luk
Monter elektronikken og luk tæt på
Monter elektronikken og luk tæt på

Til mit ur monterede jeg elektronikken ved hjælp af varm lim, men pas på ikke at anvende for meget (elektronik kan ikke lide at blive opvarmet for længe). Jeg brugte en lille dråbe superlim prikket rundt om rammen og pressede den mod forsiden. Jeg afsluttede kabinettet ved at skubbe endehætterne i hver ende. Selvfølgelig kan du lime endehætterne til helt at omslutte samlingen, men jeg lod den ene side af mig være åben, så jeg stadig kan få adgang til USB -porten på arduinoen for at nulstille dato og klokkeslæt i fremtiden.

Trin 6: Nyd det

god fornøjelse
god fornøjelse
god fornøjelse
god fornøjelse

Generelt er jeg tilfreds med den måde, det kom ud på, da det bare er et tagrør og sprøjtemaling. Jeg håber, at du kan lide det, og lad mig vide, hvis du kan tænke på nogle fede opgraderinger, der kan tilføjes. Jeg ville være interesseret i at vide, om nogen kan gøre dette billigere, eller om der er en anden sparsommelig måde at lave et kabinet, jeg kan prøve i mit næste projekt.

Anbefalede: