Hvordan lage en pulserende Arduino LED-kube som ser ut som den kom fra fremtiden
Hvis du har dabbled med noen nybegynnere Arduino-prosjekter, men leter etter noe litt permanent og på et helt annet nivå, er den ydmyke 4 x 4 x 4 LED-kuben et naturlig valg. Konstruksjonen er langt enklere enn du kanskje tror, og ved hjelp av en multipleksering kan vi styre alle lysdiodene direkte fra bare et enkelt Arduino Uno bord. Det er flott lodding praksis, og den totale kostnaden for komponenter bør ikke komme til mer enn ca $ 40.
I dag skal jeg grundig detaljere byggesiden av ting, og gi litt programvare til å løpe på det som begge ser imponerende ut og lærer deg det grunnleggende.
Du vil trenge
- En Arduino. Koden som følger med antar en Arduino Uno, men kan også justeres til en større modell.
- 64 lysdioder - det nøyaktige valget er opp til deg, men jeg brukte disse superbright 3mm blå lysdiodene (3,2v 30ma) @ £ 2,64 for 50.
- 16 motstandere av riktig verdi for lysdiodene dine. For LEDene ovenfor kjøpte 99 pence 100 av disse. Bruk ledcalc.com - skriv inn 5v for forsyningsspenningen, spenningen til lysdiodene (i mitt tilfelle 3.2) og strømmen i milliampere (3.2). Din ønskede motstand vil bli vist i boksen merket “Nærmeste høyere nominell motstand”, så bare søk etter den verdien på eBay.
- Noen håndverkskabel å styrke grunnleggende struktur og dekorasjon - jeg brukte 0,8 mm tykkelse.
- EN prototypingstavle av noe slag som du kan lodde alle dine biter til. Jeg brukte en som ikke hadde fulle spor langs den, siden jeg ikke har en sporskytter, men bruk det som passer deg. En Arduino prototyping skjold er litt for liten skjønt, med mindre du virkelig klemmer dine lysdioder sammen.
- Tilfeldig komponentledning - Noen nettverkskabelklemmer og noen av prototypingskablene fra et sett vil fungere fint.
- Krokodilklipp eller “hjelpende hender” er nyttige for å holde biter på plass.
- Lodding og lodding.
- Noen skraptre.
- En drill, med samme størrelse som dine lysdioder.
Merk: 3D-tegningene i denne opplæringen ble gjort i løpet av minutter med TinkerCAD. Jeg fulgte en eksisterende bygge detaljert på Instructables av bruker forte1994, som du kanskje også vil lese gjennom før du prøver dette.
Sørg for å lese gjennom alle disse instruksjonene først før du prøver dette selv.
Prinsippet for dette designet
Før du begynner konstruksjon, er det viktig å ha en fullstendig oversikt over hvordan denne tingen skal fungere slik at du kan improvisere og identifisere feil mens du går. Noen LED-kuber bruker en enkelt utgangsstift for hver enkelt LED - men i en 4x4x4-kube, som vil trenge 64 pinner - som vi absolutt ikke har på en Arduino Uno. En løsning vil være å bruke skiftregister Arduino Programmering - Spille med Shift Registers (a.k.a enda flere lysdioder) Arduino Programmering - Spille med Shift Registers (a.k.a enda flere lysdioder) I dag prøver jeg å lære deg litt om Shift Registers. Dette er en ganske viktig del av Arduino programmering, i utgangspunktet fordi de utvider antall utganger du kan bruke, i bytte for ... Les mer, men dette er unødvendig komplisert.
For å kontrollere alle disse lysdiodene på bare 20 pinner, bruker vi en teknikk som kalles multiplexing. Ved å kutte kuben ned i 4 separate lag trenger vi bare kontrollpinner til 16 lysdioder - for å teste en bestemt LED må vi aktivere både laget og kontrollpinnen, noe som gir oss et totalt krav på 16 + 4 pinner. Hvert lag har en felles katode - den negative delen av kretsen - slik at alle de negative benene er sammenføyet og forbundet med en enkelt pinne for det laget.
På anoden (Positiv) siden, vil hver LED bli koblet til den tilsvarende lysdioden i laget over og under det. I hovedsak har vi 16 kolonner av de positive bena, og 4 lag av det negative. Her er noen 3D-visninger av forbindelsene for å hjelpe deg å forstå:
Konstruksjon
Siden vi ikke vil bruke en fullmetallstruktur til loddetinn til, vil vi at alle lysdiodens bein skal overlappe ca. En fjerdedel og gi stivhet til strukturen. Brett katoderen på lysdiodene dine - siden med flatt hakk i hodet og kortere ben som vist på diagrammet. (Det spiller ingen rolle om du bøyer det til venstre eller høyre, så lenge du er konsekvent og det berører aldri anoden)
Den første kritiske delen av dette prosjektet er å lage en trejig. Dette vil holde et lag med lysdioder mens du lørrer bena sammen, så det må være nøyaktig og ikke for løs. Bruk borkronen med samme størrelse som dine lysdioder, måler ut og drill deretter en 4 × 4 matrise av like langt hull. Husk at du vil ha omtrent en fjerdedel av beinet til å overlappe med naboen, og bruk en reell linjal. Kontroller hvert hull for å sikre at en LED kan passe godt, men ikke så stramt at du ikke vil kunne få det ut igjen, eller du får problemer når du prøver å fjerne et helt loddet lag.
Løs katoder på 4 rader med lysdioder. Vær forsiktig så du ikke brenner ut lysdiodene - du vil ha et godt varmt jern, og være inn og ut. Her er mine første fire rader ferdigstilt.
Nå, for å styrke lagets stivhet, kutt og løst to rette biter av håndverkstråd til hver ende, sørg for at de kobles til hver rad. Dette er ditt første lag komplett. La alle overflødige bein stikke ut på siden for nå.
Nå vil det være en god tid å teste - bare last opp standard Arduino blink app, og med en motstand koblet, legg bakken til lagrammen, og trykk den positive ledningen til hver LED i sin tur.
Forhåpentligvis vil de alle lyse opp. Hvis ikke, sørg for at du ikke bare har gått glipp av et loddetråd, og om nødvendig bytt LED.
Fjern det laget fra jiggen, og gjenta prosessen 3 flere ganger.
Ikke bekymre deg om at lodding ikke er perfekt - så lenge det ikke kommer til å bryte og forbindelsen er solid, vil den ikke påvirke sluttproduktet. Jeg innrømmer at loddet mitt var ganske håpløst, min jig var av, og alt lignet det skjeve tårnet i Pisa. Likevel er jeg stolt av den ferdige kuben, og når lysdiodene lyser, vil du ikke se på loddetrådene uansett!
Bli med i lag
Når du har 4 ferdige lag, vil du bli med alle vertikale benene sammen. Jeg fant dette til å være den vanskeligste delen av bygningen, og for å hjelpe prosessen jeg kuttet en stigerør ut av kort.
Dette holdt lagene i riktig høyde, men mange bein ville fortsatt ikke justere perfekt - for dette brukte jeg noen krokodilklipp for å holde dem på plass.
Første dum feil å unngå
Først etter at jeg fullførte et lag, skjønte jeg at min kortstiger ble sittende fast på plass, så jeg måtte klippe det ut! Ikke gjør den samme feilen jeg gjorde - gjør stigerøret lengre på siden, og legg korkstykkene utenfor kuben, så når du har fullført laget, kan du dekonstruere stigerøret og trekke ut kortet.
Andre dumme feil å unngå
Ikke lodd det vertikale benet til katodrammen, åpenbart. Vertikale bein skal bare koble til andre vertikale ben, og ingenting annet.
Igjen, test etter hvert lag er festet. Test alle lagene, bare ved å berøre den positive ledningen til toppen av det øverste laget, og dermed sikre at du har god kontakt gjennom alle lagene.
Da alle 4 lagene ble loddet sammen, satte jeg på å rydde opp litt - jeg forlot ett enkelt ben forlenget ut av hvert lag i en slags stepping stone mote - dette ville bli droppet ned til brettet senere. Andre utenlandske biter av metallramme og ben ble kuttet av. Du må selvsagt ikke kutte noen av de vertikale beinene - vi må sette disse inn i vår protoytping bord.
Fastsetting til styret
Husk da jeg sa at fikse hvert lag til seg selv var den vanskeligste delen? Jeg løy. Å prøve å passe 16 LED-ben i små hull på prototyper er faktisk vanskeligere. Den enkleste måten jeg fant var å peke gjennom 4 om gangen, sikre dem under med krokodilklipp, deretter gå videre til neste rad med 4. Bruk en markørpenne til å merke avstanden på forhånd hvis den hjelper.
I ettertid ville jeg ha plassert motstandene inn i protobordet først, faktisk. Som det solderte jeg alle kubens ben inn i brettet først, da prøvde jeg å forsøke å presse motstander i mellom hverandre. Lær av min feil, og legg motstandene dine først.
Jeg prøvde å plassere dem på en jevn måte, så da kunne jeg bruke en hel side av kuben for alle de endelige forbindelsene til Arduino. Her er kretsdiagrammet jeg gikk med:
For de fire negative lagene dro jeg en enkelt ledning ned fra hvert lag, og trakk dem bare til siden, slik:
Til slutt lagde jeg noen plugg ledninger som jeg da kunne plassere i de relevante Arduino-pinnene. Bruk den lengste typen du har. Merk Jeg slo opp ordren opp på steder på grunn av dårlig planlegging. Hver rekke lysdioder var fargekodet selv.
Det er det. ferdig!
Programmering av kuben
Jeg vet at du ikke kan vente på å få denne tingen oppløst, så koble de 4 negative lagene inn i Analog I / O porter A2 (nederste lag) gjennom A5 (topplag) (disse kan også fungere som digital I / O). Deretter kobler du inn de 16 LED kontrollpinnene, begynner med +1 helt til høyre til digital I / O port 0, med +15 og +16 går inn i analog A0 og A1. (Ikke bruk AREF og GND)
Last ned demo-mønstrene og koden fra instruerbar bruker forte1994. Han har også gitt et nyttig nettverktøy for å designe byte mønstre for å tilpasse din egen sekvens. Her er en video av denne koden i handling på kuben min (Jeg justerte hastigheten til 5, i stedet for standard 20).
Dette er ikke den eneste måten å programmere kuben din selvfølgelig, så la meg tilbringe noen minutter å lære deg det aller grunnleggende om å lage dine egne mønstre programma, i stedet for å spille av forhåndsinnstilte mønstre som den ovenfor viste demo gjør.
Det er noen ting du bør vite når du prøver å programmere kuben din:
- For å adressere en enkelt LED, bruker du en fly (lag) nummer 0-3, og et LED-pin nummer 0-15. Vri flyet til LOW utgang (siden dette er det negative benet) og LED-pin nummer HIGH (det positive benet) for å aktivere LED-lampen.
- Før du aktiverer en enkelt LED, må du forsikre deg om at alle andre fly er slått av - det betyr at de stilles til HIGH output. Hvis du ikke gjør dette, vil det resultere i en kolonne med lysdioder som lyser i stedet for en enkelt LED.
Med det i tankene har jeg laget to veldig enkle programmatiske sekvenser for deg å undersøke - last ned koden herfra. Den første lyser bare hver LED en etter en, i rekkefølge. Vi bruker to for looper for dette, itererer over hvert lag og hver kontrollpinne.
Den andre er en tilfeldig sløyfe (du må kommentere den første og aktivere dette i hovedløkken for å teste det). Den plukker bare et tilfeldig lag, og tilfeldig kontrollpinne, blinker dem på og av.
Sammendrag
Ikke bli intimiated av denne bygningen - jeg mangler alvorlig loddemuligheter, og jeg klarte det bra (Jeg tror?). Den totale byggetiden var en time eller så en dag i en uke. Neste gang vil jeg forsøke å lære deg litt mer ambisiøs programmering for terningen, så jeg håper du vil bli med meg i å bygge din egen kube denne uken og laste inn noen ny kode neste uke - og hvis du lager din egen fantastiske apps eller sekvenser, last opp dem til Pastebin og gi oss beskjed i kommentarene!
Utforsk mer om: Arduino.