Hur man gör en pulserande Arduino LED-kub som ser ut som den kom från framtiden
Om du har dabbled med några nybörjare Arduino-projekt, men letar efter något lite permanent och på en helt annan nivå, är den ödmjuka 4 x 4 x 4 LED-kuben ett naturligt val. Konstruktionen är mycket lättare än du kanske tror, och med multiplexing kan vi styra alla lysdioder direkt från bara en enda Arduino Uno-bräda. Det är bra lödning övning, och den totala kostnaden för komponenter bör inte komma till mer än cirka 40 dollar.
Idag ska jag noggrant beskriva byggnadssidan av saker och ge lite programvara för att köra på det som båda ser imponerande ut och lär dig grunderna.
Du kommer behöva
- En Arduino. Den angivna koden förutsätter en Arduino Uno, men kan också anpassas till en större modell.
- 64 lysdioder - Det exakta valet är upp till dig, men jag använde dessa superbright 3mm Blue LEDs (3,2v 30ma) @ £ 2,64 för 50.
- 16 motstånd av lämpligt värde för dina lysdioder. För ovanstående lysdioder köpte 99 pence 100 av dessa. Använd ledcalc.com - ange 5v för matningsspänning, spänning av lysdioderna (i mitt fall 3.2) och strömmen i milliamplar (3.2). Ditt önskade motstånd visas i rutan märkt “Närmast högre betygsresistor”, sök bara efter det värdet på eBay.
- Några hantverkstråd för att stärka grundläggande struktur och för dekoration - jag använde 0.8mm tjocklek.
- en prototyper av någon typ som du kan lödda alla dina bitar till. Jag använde en som inte hade fulla spår längs den eftersom jag inte har en spårskärare, men använd vad som passar dig. En Arduino prototypskydd är lite för liten om du inte klämmer fast dina LED-lampor ihop.
- Slumpmässig komponenttråd - några nätverkskabelsträngar och några av prototyperna från ett kit fungerar bra.
- Krokodilklämmor eller “hjälpande händer” är användbara för att hålla bitar på plats.
- Lödjärn och lödning.
- Något skrot ved.
- En borrning, med samma storlek som dina lysdioder.
Obs! 3D-ritningarna i denna handledning utfördes på några minuter med hjälp av TinkerCAD. Jag följde en befintlig byggd detalj på Instructables av användaren forte1994, som du kanske också vill läsa igenom innan du försöker detta.
Se till att läsa igenom alla dessa instruktioner först innan du försöker detta själv.
Principen för denna design
Innan du börjar bygga är det viktigt att få en fullständig översikt över hur denna sak ska fungera så att du kan improvisera och identifiera fel som du går med. Vissa LED-kuber använder en enda utgångsstift för varje enskild LED - dock i en 4x4x4-kub, som skulle behöva 64 stift - som vi verkligen inte har på en Arduino Uno. En lösning skulle vara att använda skiftregister Arduino programmering - spela med skiftregister (a.k.a ännu fler lysdioder) Arduino programmering - spelar med skiftregister (a.k.a ännu fler lysdioder) Idag försöker jag lära dig lite om Shift Registers. Det här är en ganska viktig del av Arduino programmering, i grund och botten eftersom de utökar antalet utdata du kan använda, i utbyte mot ... Läs mer, men det är onödigt komplicerat.
För att kontrollera alla dessa lysdioder på bara 20 stift använder vi en teknik som kallas multiplexing. Genom att krossa kuben i 4 separata lager behöver vi bara kontrollpinnar för 16 lysdioder - för att tända en specifik LED, måste vi aktivera både skiktet och kontrollpinnen, vilket ger oss ett totalt krav på 16 + 4 stift. Varje skikt har en gemensam katod - den negativa delen av kretsen - så att alla negativa ben förenas och ansluts till en enda stift för det skiktet.
På anoden (positiv) sida kommer varje LED att anslutas till motsvarande LED i skiktet ovanför och under det. I huvudsak har vi 16 kolumner av de positiva benen och 4 lager av den negativa. Här är några 3D-visningar av anslutningarna som hjälper dig att förstå:
Konstruktion
Eftersom vi inte kommer att använda en fullmetallstruktur till löddet till, vill vi att alla LED-lampans ben överlappar ungefär ett kvarts och ger styvhet till strukturen. Vik katoderna på dina LED-lampor - sidan med den plana skåran i huvudet och den kortare benen som visas i diagrammet. (Det spelar ingen roll om du böjer den åt vänster eller höger, så länge du är konsekvent och den rör aldrig anoden)
Den första kritiska delen av projektet är att göra en träjig. Detta kommer att hålla ett lager av lysdioder medan du lödar benen ihop, så det måste vara korrekt och inte för lös. Använd samma borr som din LED, mät ut och borra sedan en 4 × 4 matris av ekvidistant hål. Tänk på att du vill att ungefär en fjärdedel av benet ska överlappa med sin granne och använda en verklig linjal. Kontrollera varje hål för att säkerställa att en LED kan passa snyggt men inte så tätt att du inte kommer att kunna ta ut det igen, eller du kommer att ha problem när du försöker ta bort ett helt lödat lager.
Löd katoderna på 4 rader av lysdioder. Var försiktig så att du inte bränner ut lysdioderna - du vill ha ett bra hetjärn och att vara in och ut. Här är mina första fyra rader färdiga.
Nu, för att stärka lagets styvhet, skär och löd två raka bitar av hantverkstråd i båda ändar, se till att de går ihop med varje rad. Detta är ditt första lager komplett. Låt alla överskjutande ben stickas ut på sidan för nu.
Nu skulle det vara en bra tid att testa - ladda bara upp den vanliga Arduino blink-appen, och sätt med ett motstånd anslutet, sätt marken till lagramen och tryck på den positiva ledningen till varje LED i sin tur.
Förhoppningsvis kommer de alla att lysa upp. Om inte, se till att du inte bara har missat en lödfog någonstans, och om nödvändigt byter LED.
Ta bort det lagret från jiggen och upprepa processen 3 fler gånger.
Oroa dig inte om din lödning inte är perfekt - så länge det inte kommer att bryta och anslutningen är solid, kommer det inte att påverka slutprodukten. Jag erkänner att min lödning var ganska hopplös, min jig var av och det liknade det lutande tornet i Pisa. Ändå är jag stolt över den färdiga kuben, och när lysdioderna tänds kommer du inte att titta på lödfogarna ändå!
Anslutande lag
När du har 4 färdiga lager, vill du gå med alla vertikala benen tillsammans. Jag fann att detta var den svåraste delen av byggnaden, och för att hjälpa processen klipper jag en stigare ut ur kortet.
Detta höll lagren i lämplig höjd, men mycket av benen skulle fortfarande inte passa perfekt - för detta använde jag några krokodilklipp för att hålla dem på plats.
1: a dumt misstag att undvika
Först efter att ha fyllt ett fullständigt lager visste jag att min korthöjare var fast på plats, så jag var tvungen att klippa ut det! Gör inte samma misstag som jag gjorde - gör stigaren längre på sidan och lägg i bitar av kort utanför kuben, så när du har slutfört lagret kan du dekonstruera stigaren och dra ut kortet.
2: a dumt misstag att undvika
Löd inte det vertikala benet på katodramen självklart. Vertikala ben bör endast anslutas till andra vertikala ben, och inget annat.
Återigen, testet efter varje lager har fästs. Testa alla lager, faktiskt bara rör den positiva ledningen till toppen av det översta lagret, så att du har bra kontakt genom att gå igenom alla lager.
När alla 4 skikten löddes ihop satte jag mig om att städa upp lite - jag lämnade ett enda ben utsträckt ut ur varje lager i ett slags stenbräda - det skulle gå ner till styrelsen senare. Andra yttre bitar av metallram och ben skars av. Självklart skär inte några vertikala ben - vi måste lägga dem i vår protoytpingbräda.
Fixering till styrelsen
Kom ihåg när jag sa att fixa varje lager till sig själv var den svåraste delen? Jag ljög. Att försöka passa 16 LED-ben i små hål på ett prototyper är faktiskt svårare. Det enklaste sättet jag hittade var att peka igenom 4 åt gången, säkra dem under med krokodilklämmor och fortsätt vidare till nästa rad med 4. Använd en markörpenna för att markera avståndet i förväg om det hjälper.
I efterhand hade jag faktiskt lagt motstånden i protoborden. Som det lödde jag alla kubens ben i styrelsen först och försökte sedan noga klämma motstånd mellan dem. Lär av mitt misstag och ställ dina motstånd först.
Jag försökte rymma dem lika i ett stegande sätt så då kunde jag använda en hel sida av kuben för alla slutliga anslutningar till Arduino. Här är det kretsschema jag gick med:
För de fyra negativa skikten släppte jag en enkel tråd ner från varje lager, så tog de bara bort till sidan, så här:
Slutligen lade jag till några pluggkablar som jag då kunde placera i relevanta Arduino-stiften. Använd den längsta sort du har. Obs! Jag reste ordern på platser på grund av dålig planering. Varje rad av lysdioder var dock färgkodad.
Det är allt. Färdiga!
Programmera din kub
Jag vet att du inte kan vänta med att få den här grejen uppladdad, så koppla in de 4 negativa lagren Analog I / O hamnar A2 (bottenskikt) genom A5 (toppskikt) (dessa kan också fungera som digitala I / O). Anslut sedan de 16 LED-styrstiften, börja med +1 längst till höger till digital I / O port 0, med +15 och +16 går in i analog A0 och A1. (Använd inte AREF och GND)
Ladda ner demomönstren och koden från instruerbar användare forte1994. Han har också ett användbart onlineverktyg för att utforma bytemönstren för att anpassa din egen sekvens. Här är en video av den här koden i aktion på min kub (Jag justerade hastigheten till 5, istället för standard 20).
Detta är inte det enda sättet att programmera din kub, såklart, så låt mig spendera några minuter att lära dig själva grunderna att skapa egna mönster programma, snarare än att spela upp förinställda mönster som ovanstående demo gör.
Det finns några saker du bör veta när du försöker programmera din kub:
- För att adressera en enda LED, använder du en plan (lager) nummer 0-3, och ett LED-stiftnummer 0-15. Vrid planen till LOW-utgången (eftersom detta är det negativa benet) och LED-stiftnumret HIGH (det positiva benet) för att aktivera LED-lampan.
- Innan du aktiverar en enda LED, se till att alla andra plan är avstängd - det vill säga sätt dem till HIGH output. Om du inte gör det här kommer det att resultera i en kolumn med lysdioder som lyser i stället för en enda LED.
Med det i åtanke har jag gjort två mycket enkla programmatiska sekvenser för att du ska undersöka - ladda ner koden härifrån. Den första lyser bara varje LED en efter en, i följd. Vi använder två för loopar för detta, iterering över varje lager och varje kontrollpinne.
Den andra är en slumpmässig loop (du måste kommentera den första och aktivera detta i huvudslingan för att testa det). Den väljer helt enkelt ett slumpmässigt lager, och slumpmässig kontrollpinne, blinkar dem på och av.
Sammanfattning
Bli inte intimierad av denna byggnad - jag saknar allvarligt lödningsförmåga, och jag lyckades med det här bra (Jag tror?). Den totala byggtiden var en timme eller så per dag i en vecka. Nästa gång försöker jag lära dig lite mer ambitiös programmering för kuben, så jag hoppas att du kommer att vara med om att bygga din egen kub i veckan och ladda någon ny kod nästa vecka - och om du gör din egen fantastiska appar eller sekvenser, ladda upp dem till Pastebin och meddela oss i kommentarerna!
Utforska mer om: Arduino.