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 Blå LED ( 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ådar för att stärka grundstrukturen och för dekoration - jag använde 0, 8 mm tjocklek.
- En prototypplatta 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.
- Slumpvis 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.
Var noga med att läsa igenom alla dessa instruktioner innan du försöker göra det 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 - vilket vi verkligen inte har på en Arduino Uno. En lösning skulle vara att använda skiftregister Arduino Programmering - Spelar med skiftregister (aka även fler lysdioder) Arduino Programmering - Spelar med skiftregister (aka ännu fler lysdioder) Idag försöker jag lära dig lite om Shift Registers. Dessa ä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å anodens (positiva) 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 lika stor borr som dina lysdioder, mät ut och borra sedan en 4 × 4 matris med jämnviktiga 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 med ett motstånd anslutet, sätt marken till lagramen och tryck på den positiva ledningen till varje LED i tur och ordning.
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 flera 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 LED-lamporna lyser kommer du inte att titta på lödförbanden ä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, i själva verket bara rör den positiva ledningen till toppen av det översta lagret, så att du har bra kontakt genom 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 stegsteg - 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 markeringspenna 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å anslut de 4 negativa skikten till Analog I / O- portar A2 (bottenskikt) genom A5 (toppskikt) (dessa kan också fungera som digital 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 analoga A0 och A1 . (Använd inte AREF och GND)
Ladda ner demomönstret 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 göra egna mönster programmatiskt, istället för 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 ett plan (lager) nummer 0-3 och ett LED-nummer 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 den här byggnaden - jag saknar allvarliga 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!