Du kan gjøre alle slags ting med blinkende lysdioder, og i dette enkle prosjektet skal vi lage en liten enhet som lyser meldinger i luften når du bølger den frem og tilbake. Det er enklere enn du tror, og den totale kostnaden for deler er under $ 5.
Dette prosjektet benytter en optisk illusjon som kalles persistens av visjon for å få tekst til å vises i luften. Du har sikkert kommet over dette fenomenet når noen beveger en opplyst sparkler raskt om natten. Vi vil bruke en Arduino og noen lysdioder for å etterligne denne effekten. Dette prosjektet er enkelt å bygge, med få komponenter og lite lodding (selv om du vil ha tips om hvordan du går i gang med loddejernet ditt, kan du se denne veilederen. Lær hvordan du lakkerer med disse enkle tipsene og prosjektene. Lær hvordan du lakkerer, med disse enkle Tips og prosjekter Er du litt skremt av tanken på varmt jern og smeltet metall? Hvis du vil begynne å jobbe med elektronikk, må du lære å lodde. La oss hjelpe. Les mer).
Du vil trenge
- Arduino (jeg brukte en $ 2 nano fordi den er kompakt og billig, men hvilken modell som helst skal være bra).
- 5x røde lysdioder.
- 5x 220 ohm motstander.
- 1x 9v batteriholder.
- 1x Rocker bryter.
- 1x stykke protobord.
- Et hus for det ferdige produktet (jeg brukte en liten pappkasse malt i svart).
Du vil også trenge et loddejern og litt lodd for å sette alt sammen.
Selv om det er valgfritt, kan noen loddemåler komme veldig bra hvis du gjør noen loddingsfeil. Et brødbrett og noen kabler er også nyttige for å teste kretsen.
kabling
Ledningene kunne ikke være enklere. Først kobler du Arduino, lysdioder og motstander som vist på dette diagrammet.
Pinnene D2 til og med D6 går til hver motstand henholdsvis, som er festet til den positive anoden (lange ben) av hver LED. Katoden er koblet til bakken, som kobler seg tilbake til Arduino. Når det er gjort, skal det se slik ut:
Det er det: vår krets er ferdig! Vi legger til et batterihus og en bryter til det senere, men dette er alt vi trenger for å teste om det fungerer.
Kode
Nå koble din Arduino til datamaskinen og åpne Arduino IDE. Hvis du er ny til å bruke Arduino og vil ha en god guide til å komme i gang, får du denne lenken Komme i gang med Arduino: En nybegynnersveiledning Komme i gang med Arduino: En nybegynners guide Arduino er en åpen kilde elektronikk prototyping plattform basert på fleksibel, å bruke maskinvare og programvare. Det er ment for kunstnere, designere, hobbyister, og alle som er interessert i å lage interaktive objekter eller miljøer. Les mer vil være nyttig.
Åpne en ny skisse og kopier denne koden. Koden ble endret fra dette prosjektet, og du kan laste den ned i sin helhet på denne Gist.
// how long each led stays on for int delayTime = 1; //how long between each int charBreak = 3; //how long to wait after the message is finished before it repeats int resetTime = 20; int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; void setup(){ pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); } int a[] = {1, 6, 26, 6, 1}; int b[] = {31, 21, 21, 10, 0}; int c2[] = {14, 17, 17, 10, 0}; int d[] = {31, 17, 17, 14, 0}; int e[] = {31, 21, 21, 17, 0}; int f[] = {31, 20, 20, 16, 0}; int g[] = {14, 17, 19, 10, 0}; int h[] = {31, 4, 4, 4, 31}; int i[] = {0, 17, 31, 17, 0}; int j[] = {0, 17, 30, 16, 0}; int k[] = {31, 4, 10, 17, 0}; int l[] = {31, 1, 1, 1, 0}; int m[] = {31, 12, 3, 12, 31}; int n[] = {31, 12, 3, 31, 0}; int o[] = {14, 17, 17, 14, 0}; int p[] = {31, 20, 20, 8, 0}; int q[] = {14, 17, 19, 14, 2}; int r[] = {31, 20, 22, 9, 0}; int s[] = {8, 21, 21, 2, 0}; int t[] = {16, 16, 31, 16, 16}; int u[] = {30, 1, 1, 30, 0}; int v[] = {24, 6, 1, 6, 24}; int w[] = {28, 3, 12, 3, 28}; int x[] = {17, 10, 4, 10, 17}; int y[] = {17, 10, 4, 8, 16}; int z[] = {19, 21, 21, 25, 0}; int eos[] = {0, 1, 0, 0, 0}; int excl[] = {0, 29, 0, 0, 0}; int ques[] = {8, 19, 20, 8, 0}; int space[] = {0, 0, 0, 0, 0}; void displayLine(int line){ int myline; myline = line; if (myline>=16) {digitalWrite(LED1, HIGH); myline-=16;} else {digitalWrite(LED1, LOW);} if (myline>=8) {digitalWrite(LED2, HIGH); myline-=8;} else {digitalWrite(LED2, LOW);} if (myline>=4) {digitalWrite(LED3, HIGH); myline-=4;} else {digitalWrite(LED3, LOW);} if (myline>=2) {digitalWrite(LED4, HIGH); myline-=2;} else {digitalWrite(LED4, LOW);} if (myline>=1) {digitalWrite(LED5, HIGH); myline-=1;} else {digitalWrite(LED5, LOW);} } void displayChar(char c){ if (c == 'a'){for (int i = 0; i<5; i++){displayLine(a[i]);delay(delayTime);}displayLine(0);} if (c == 'b'){for (int i = 0; i<5; i++){displayLine(b[i]);delay(delayTime);}displayLine(0);} if (c == 'c2'){for (int i = 0; i<5; i++){displayLine(c2[i]);delay(delayTime);}displayLine(0);} if (c == 'd'){for (int i = 0; i<5; i++){displayLine(d[i]);delay(delayTime);}displayLine(0);} if (c == 'e'){for (int i = 0; i<5; i++){displayLine(e[i]);delay(delayTime);}displayLine(0);} if (c == 'f'){for (int i = 0; i<5; i++){displayLine(f[i]);delay(delayTime);}displayLine(0);} if (c == 'g'){for (int i = 0; i<5; i++){displayLine(g[i]);delay(delayTime);}displayLine(0);} if (c == 'h'){for (int i = 0; i<5; i++){displayLine(h[i]);delay(delayTime);}displayLine(0);} if (c == 'i'){for (int it = 0; it<5; it++){displayLine(i[it]);delay(delayTime);}displayLine(0);} if (c == 'j'){for (int i = 0; i<5; i++){displayLine(j[i]);delay(delayTime);}displayLine(0);} if (c == 'k'){for (int i = 0; i<5; i++){displayLine(k[i]);delay(delayTime);}displayLine(0);} if (c == 'l'){for (int i = 0; i<5; i++){displayLine(l[i]);delay(delayTime);}displayLine(0);} if (c == 'm'){for (int i = 0; i<5; i++){displayLine(m[i]);delay(delayTime);}displayLine(0);} if (c == 'n'){for (int i = 0; i<5; i++){displayLine(n[i]);delay(delayTime);}displayLine(0);} if (c == 'o'){for (int i = 0; i<5; i++){displayLine(o[i]);delay(delayTime);}displayLine(0);} if (c == 'p'){for (int i = 0; i<5; i++){displayLine(p[i]);delay(delayTime);}displayLine(0);} if (c == 'q'){for (int i = 0; i<5; i++){displayLine(q[i]);delay(delayTime);}displayLine(0);} if (c == 'r'){for (int i = 0; i<5; i++){displayLine(r[i]);delay(delayTime);}displayLine(0);} if (c == 's'){for (int i = 0; i<5; i++){displayLine(s[i]);delay(delayTime);}displayLine(0);} if (c == 't'){for (int i = 0; i<5; i++){displayLine(t[i]);delay(delayTime);}displayLine(0);} if (c == 'u'){for (int i = 0; i<5; i++){displayLine(u[i]);delay(delayTime);}displayLine(0);} if (c == 'v'){for (int i = 0; i<5; i++){displayLine(v[i]);delay(delayTime);}displayLine(0);} if (c == 'w'){for (int i = 0; i<5; i++){displayLine(w[i]);delay(delayTime);}displayLine(0);} if (c == 'x'){for (int i = 0; i<5; i++){displayLine(x[i]);delay(delayTime);}displayLine(0);} if (c == 'y'){for (int i = 0; i<5; i++){displayLine(y[i]);delay(delayTime);}displayLine(0);} if (c == 'z'){for (int i = 0; i<5; i++){displayLine(z[i]);delay(delayTime);}displayLine(0);} if (c == '!'){for (int i = 0; i<5; i++){displayLine(excl[i]);delay(delayTime);}displayLine(0);} if (c == '?'){for (int i = 0; i<5; i++){displayLine(ques[i]);delay(delayTime);}displayLine(0);} if (c == '.'){for (int i = 0; i<5; i++){displayLine(eos[i]);delay(delayTime);}displayLine(0);} if (c == ' '){for (int i = 0; i<5; i++){displayLine(space[i]);delay(delayTime);}displayLine(0);} delay(charBreak); } void displayString(char* s){ for (int i = 0; i<=strlen(s); i++){ displayChar(s[i]); } } void loop(){ //Change the text inside here to change the text displayed. //Make sure to keep the brackets and the quotation marks. displayString("..hello!.."); delay(40); }
Lagre skissen og last den opp på bordet. Hvis du får noen feil, må du kontrollere at du har valgt riktig bord og com port. Lysdiodene dine skal begynne å flimre. Hvis de ikke gjør det, må du kontrollere alle dine tilkoblinger på brødbrettet ditt. Heltallene deklarert ved starten av koden, bestemmer hvor raskt teksten vises. Jo høyere tallet, desto raskere trenger du å bølge enheten. Jeg fant ut at tallene som brukes her fungerte bra.
Nå for å gjøre en rask test. Koble din Arduino fra USB-kabelen, og fest batteriholderen til VIN- og GND-pinnene på din arduino
Nå som du kan flytte rundt, forsøk forsiktig å svinge LEDene foran deg. Du bør se noen bokstaver som dannes i luften, forutsatt at det er mørkt nok rundt deg. Jeg fant det hjalp med å sette telefonen min opp for å fange dette.
Det fungerer! Nå for å gjøre det litt mer permanent.
Strykejern på klare!
Legg Arduino-bordet, motstandene og lysdiodene på protobordet ditt slik:
Du kan selvfølgelig gjøre oppsettet så kompakt som du ønsker, så lenge kretsen forblir den samme. Pass på at du forlater minst én linje med protobordkontakter på hver side av din Arduino for komponenter og strømforsyning. Hvis du er nybegynner i elektronikk, er det noen gode tips for deg. Begynnerens elektronikk: 10 ferdigheter du trenger å vite Nybegynnerens elektronikk: 10 ferdigheter du trenger å vite Mange av oss har aldri engang rørt et loddejern - men å gjøre ting kan være utrolig givende . Her er ti av de mest grunnleggende DIY elektronikk ferdighetene for å hjelpe deg med å komme i gang. Les mer .
Vi vil lodde LED-katodene sammen i en linje for å gjøre en felles bakke, akkurat som vi gjorde da vi lagde LED-matrisen. Oppgrader din julkrans med en bevegelsesaktivert LED-matrise. Oppgrader din julkrans med en bevegelsesaktivert LED-matrise. Denne DIY julen krans bruker en Arduino og LED matrise for å produsere en fantastisk lysbilde som imponerer dine venner og familie. Les mer .
Brett hver katode slik at den overlapper den neste, og lodd dem for å lage en ubrutt linje. Nå må vi lodde våre anoder til benene til motstandene ved siden av dem. Jeg fant den enkleste måten å gjøre dette på å lodde hvert ben til deres respektive pute, og plasser deretter jernet mellom dem for å varme begge leddene, før du endelig legger til mer lodd for å bygge bro over gapet mellom dem.
Kontroller hver tilkobling for å se at den er solidt festet, og bruk deretter trådkuttere for å kutte av de overliggende benene fra motstandene og lysdiodene.
Nå for å gjenta den samme oppgaven, men denne gangen kobler den andre enden av motstandene til bena til Arduino. Dette er den mest fiddly delen av lodding. Hver motstand festes meget til sin Arduino-pin alene eller kretsen vil ikke fungere slik den er ment. Jeg har gjort flere feil her og måtte bruke loddetråd for å fjerne uønsket loddetid flere ganger.
Når du har gjort alle de riktige tilkoblingene, dobbeltklikker ingen av dem overlapper med naboene sine. Hvis du har tilgang til et multimeter her, kan du bruke kontinuitetsmodus for å kontrollere at hver pin bare har en ubrutt linje til motstanden. Hvis du nettopp har en multimeter, er det en god startveiledning i denne artikkelen. 7 DIY Tech Ferdigheter til å lære barna dine, fordi skolene ikke vil 7 DIY Tech Ferdigheter til å lære barna dine, fordi skolene ikke vil lese mer
Når du har sjekket hver tilkobling, klippe overskytslengden fra motstandens ben
Legge til kraft
Kjør nå et stykke ledning fra GND-pinnen til din Arduino til et hull ved siden av hvor linjen med loddekatoder slutter, og plasser den svarte ledningen i batteriholderen ved siden av den.
Løft nå ledningen til GND-pinnen, på samme måte som vi gjorde med motstandene, og lodd begge ledninger til enden av katoderlinjen for å skape en felles bakke for kretsen.
Til slutt kobler du en ledning til VIN-stiften på din arduino, og plasser bryteren mellom den ledningen og batteripakken. Unnskyldninger for den varme limdekket bryteren i dette bildet, jeg måtte demontere den ferdige maskinen for å fotografere dette stadiet!
Når det er løst sammen, sett inn et batteri og sett på bryteren. Gratulerer! Kretsen er ferdig. Hvis du ikke ser noe lys opp, kontroller du hver loddefeste nøye for å se hvor det kan være en pause eller en kortslutning.
Innhegning
Nå som vi har det jobbet, la oss sette den i en boks. Her ble det brukt en malte pappkasse, men du kunne gjøre noe mer permanent ved å bruke en boks kjøpt i en hobbybutikk, eller til og med en gammel tupperware-boks. For ekstra geek cred, kan du til og med 3D skrive ut din egen på en av disse billige 3D-skriverne. 5 billige 3D-skrivere kan du faktisk kjøpe i dag. 5 billige 3D-skrivere kan du faktisk kjøpe i dag. Noen år tilbake var selv de billigste 3D-skriverne ubehagelig nær $ 1000-merket - nå kan du få en kvalitets 3D-skriver for så lite som $ 400. Les mer
Kutt ned protoboret til størrelse ved å scorere det og forsiktig snappe bort deler du ikke trenger.
Plasser kretsen i kabinettet, og merk hvor lampene og bryteren må stikke gjennom. Du kan også velge hvor USB-kontakten på Arduino-kortet møter kanten slik at du kan koble den inn for å endre teksten uten å åpne boksen. Bor eller kutt hullene du trenger inn i kabinettet.
Legg til litt varmt lim på kantene på lysdiodene og hold dem på plass. Jeg limte et stykke svamp under kretsen slik at det ville ligge pent i esken. Fest bryteren til saken. Jeg brukte varmt lim, selv om skruer eller bolter ville gjøre en mye sterkere tilkobling. Du kan også lim batteriholderen til baksiden av kretskortet for å hindre at den beveger seg innvendig når varen er i bruk, men vær sikker på at metallkontaktene på saken ikke berører noen av dine loddeskjøter!
Jobb er ferdig!
Lukk opp kabinettet ditt, og du er ferdig! Hvis du vil endre teksten, kobler du USB-kabelen til Arduino-kortet, og endrer teksten inne i brakettene etter visning. String i loop- metoden. Finn et mørkt sted, og ha det gøy!
Har du bygget en POV-maskin før og kjenner måter å forbedre på designet? Planlegger du å bygge en selv? Fortell oss om prosjektet ditt i kommentarene nedenfor, vi vil gjerne høre det!