Annonse

Du kan gjøre alle slags ting med blinkende lysdioder, og i dette enkle prosjektet lager vi en liten enhet som lyser opp meldinger i luften når du vinker den frem og tilbake. Det er enklere enn du tror, ​​og den totale kostnaden for deler er under $ 5.

Dette prosjektet bruker en optisk illusjon kalt persistens of vision for å få tekst til å vises i luften. Du har sannsynligvis kommet over dette fenomenet når noen flytter en tenn på gnisten raskt om natten. Vi bruker Arduino og noen lysdioder for å etterligne denne effekten. Dette prosjektet er enkelt å bygge, med få komponenter og lite lodding (skjønt hvis du vil ha noen tips om hvordan du kommer i gang med loddebehandlingen, sjekk ut denne guiden Lær hvordan du lodder med disse enkle tipsene og prosjekteneBlir du litt skremt av tanken på et varmt jern og smeltet metall? Hvis du vil begynne å jobbe med elektronikk, trenger 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 alle modeller skal være i orden).
  • instagram viewer
  • 5x Røde lysdioder.
  • 5x 220 Ohm motstander.
  • 1x 9v batteriholder.
  • 1x vippebryter.
  • 1x protobord.
  • Et hus for det ferdige produktet (jeg brukte en liten pappeske malt svart).

Du trenger også et loddejern og litt lodd for å sette det hele sammen.

Selv om det er valgfritt, kan noen loddevekker komme godt med i tilfelle du gjør loddefeil. Et brødbord og noen koblingsledninger er også nyttige for å teste kretsen din.

Komponenter som kreves for prosjektet

kabling

Kablingen kan ikke være enklere. Først må du koble til Arduino, lysdioder og motstander som vist i dette diagrammet.

pov fritzing

Pinnene D2 til D6 går til hver motstand som er festet til den positive anoden (langbenet) til hver LED. Katoden er koblet til bakken, som kobles tilbake til Arduino. Når det er gjort, skal det se slik ut:

pov-brødbrett

Det er det: kretsen vår er ferdig! Vi vil legge til et batterihus og en bytte til det senere, men dette er alt vi trenger å teste om det fungerer.

Kode

Nå kobler du Arduino til datamaskinen og åpner Arduino IDE. Hvis du er ny på å bruke Arduino og vil ha en god guide til å komme i gang, denne lenken Komme i gang med Arduino: En nybegynnerguideArduino er en åpen kildekode-prototypeplattform for elektronikk basert på fleksibel, brukervennlig maskinvare og programvare. Den er beregnet på 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 i. Koden ble endret fra dette prosjektet og du kan laste den ned i sin helhet på dette Gist.

// hvor lenge hver ledning holder på i. int delayTime = 1; // hvor lang tid mellom hvert int CharBreak = 3; // hvor lenge du skal vente etter at meldingen er ferdig før den gjentas. int resetTime = 20; int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; ugyldig oppsett () { 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-linje) { int myline; myline = linje; 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;} annet {digitalWrite (LED5, LAV);} } ugyldig visningChar (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; det <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 (ekskl [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 (mellomrom [i]); delay (delayTime);} displayLine (0);} forsinkelse (charBreak); } ugyldig displayString (char * s) {for (int i = 0; i <= strlen (s); i ++) {displayChar (s [i]); } } void loop () {// Endre teksten inne her for å endre teksten som vises. // Sørg for å holde konsollene og anførselstegnene. Visningsstreng ( ".. hallo ..."); forsinkelse (40); }

Lagre skissen og last den opp på tavla. Hvis du får feil, må du passe på at du har valgt riktig tavle og comport. LED-ene skal begynne å flimre. Hvis de ikke gjør det, kan du sjekke alle tilkoblingene dine på brødbrettet. Heltallene som er erklært i begynnelsen av koden, bestemmer hvor raskt teksten vises. Jo høyere nummer, desto raskere trenger du å vinke enheten. Jeg fant ut at tallene som ble brukt her fungerte bra.

Nå for å gjøre en rask test. Koble Arduino fra USB-kabelen, og fest batteriholderen til VIN- og GND-pinnene på arduinoen din

pov fritz med batt

Nå som du kan flytte den rundt, kan du prøve å svinge lysdiodene forsiktig 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 å sette opp telefonen min for å fange opp denne.

brødprøve

Det fungerer! Nå for å gjøre det litt mer permanent.

Strykejern i gang!

Legg Arduino-brettet, motstandene og lysdiodene på protobordet slik:

lagt ut om bord

Du kan selvfølgelig gjøre oppsettet så kompakt som du ønsker, så lenge kretsen forblir den samme. Forsikre deg om at du legger igjen minst en linje med protokollkontakter på hver side av Arduino for komponenter og strømforsyning. Hvis du er en nybegynner innen elektronikk, her er noen gode tips til deg Begynnerelektronikk: 10 ferdigheter du trenger å viteMange av oss har aldri rørt et loddejern - men å gjøre ting kan være utrolig givende. Her er ti av de mest grunnleggende DIY-elektronikkferdighetene for å hjelpe deg i gang. Les mer .

Vi vil lodde LED-katodene sammen i en linje for å lage en felles grunn, omtrent som vi gjorde da vi laget vår LED-matrise Oppgrader din julekrans med en bevegelsesaktivert LED-matriseDenne DIY-julekransen bruker en Arduino- og LED-matrise for å produsere en fantastisk lysdisplay som vil imponere dine venner og familie. Les mer .

radkatoder

Brett hver katode slik at den overlapper den neste, og lodd dem for å lage en ubrutt linje. Nå må vi lodde anodene våre til beina på motstandene ved siden av dem. Jeg fant den enkleste måten å gjøre dette på var å lodde hvert ben til hver sin pute, og deretter plassere stryke mellom dem for å varme opp begge leddene, før du til slutt legger mer loddetinn for å bygge bro mellom dem.

Kontroller hver tilkobling for å se at den er godt festet, og bruk deretter trådkuttere for å kutte av overflødige ben fra motstandene og lysdiodene.

motstander mot anoder

Nå for å gjenta den samme oppgaven, men denne gangen koble den andre enden av motstandene våre til bena på Arduino. Dette er den mest fiddly delen av lodding. Hver motstand festes mye på Arduino-tappen alene, ellers vil ikke kretsen fungere slik den er ment. Jeg gjorde flere feil her og måtte bruke loddevek for å fjerne uønsket lodde flere ganger.

Når du har gjort alle de riktige tilkoblingene, må du dobbeltsjekke at ingen av dem overlapper hverandre med naboene. Hvis du har tilgang til et multimeter her, kan du bruke kontinuitetsmodus for å sjekke at hver pinne bare har en ubrutt linje i motstanden. Hvis du nettopp har fått et multimeter, er det en flott guide for å komme i gang i denne artikkelen. 7 DIY-teknologiske ferdigheter for å lære barna dine, fordi skoler ikke vil det Les mer

kontinuitetsbilde

Når du har sjekket hver tilkobling, må du kutte overskytende lengde fra benene på motstandene

Legge til kraft

Kjør nå et stykke ledning fra GND-pinnen på Arduino til et hull ved siden av hvor linjen din med loddede katoder ender, og plasser den sorte ledningen til batteriholderen ved siden av.

gnd ledninger toppen

Lodd nå ledningen til GND-pinnen, på samme måte som vi gjorde med motstandene, og lodd begge ledningene til enden av katodelinjen for å skape en felles grunn for kretsen.

Til slutt, fest en ledning til VIN-pinnen på arduinoen din, og plasser bryteren mellom den kabelen og batteripakken. Beklager den varme limt dekslet bryteren på dette bildet, jeg måtte demontere den ferdige maskinen for å fotografere dette stadiet!

bytte vin

Når det hele er loddet sammen, sett et batteri i og snu bryteren. Gratulerer! Kretsen er ferdig. Hvis du ikke ser noe som lyser opp, sjekk nøye hvert loddeforbindelse for å se hvor det kan være et brudd eller en kortslutning.

Innhegning

Nå som vi har det fungerer, la oss legge det i en boks. Her ble en malt pappeske brukt, selv om du kunne lage noe mer varig 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 trykke din egen på en av disse billige 3D-skriverne. 5 billige 3D-skrivere du faktisk kan kjøpe i dagFor noen år tilbake var selv de billigste 3D-skriverne ubehagelig nær 1000 dollar-merket - nå kan du få en 3D-skriver for kvalitet til så lite som $ 400. Les mer

Skjær ned protobordet til størrelse ved å score det og slå forsiktig bort deler du ikke trenger.

proto gif

Plasser kretsen inne i kabinettet ditt, og merk hvor lysdiodene og bryteren må romme gjennom. Du kan eventuelt også merke hvor USB-kontakten på Arduino-kortet møter kanten, slik at du kan plugge den inn for å endre teksten uten å åpne boksen. Bor eller skjær hullene du trenger i kabinettet.

lag hull

Nå legger du litt varmt lim på kantene på lysdiodene og stikker dem på plass. Jeg limte et stykke svamp under kretsen slik at den skulle sitte tett i boksen. Fest bryteren til saken. Jeg brukte varmt lim, selv om skruer eller bolter ville ha en mye sterkere forbindelse. Du kan også lime batteriholderen på baksiden av kretskortet for å hindre at den beveger seg rundt inne når varen er i bruk, men pass på at metallkontakter på saken ikke berører noen av loddefugene dine!

målebryter

Jobben er ferdig!

Lukk kabinettet ditt, så er du ferdig! Hvis du vil endre teksten, kobler du USB-kabelen til Arduino-kortet og endrer teksten inne i parentes etter Visningsstreng i Løkke metode. Finn et mørkt sted, og ha det gøy!

saktere tempo

Har du bygd en POV-maskin før og vet hvordan du kan forbedre designen? Planlegger du å bygge en selv? Fortell oss om prosjektet ditt i kommentarfeltet nedenfor, vi vil gjerne høre det!

Ian Buckley er frilansjournalist, musiker, utøver og videoprodusent bosatt i Berlin, Tyskland. Når han ikke skriver eller på scenen, tisser han med DIY-elektronikk eller kode i håp om å bli en gal forsker.