Annuncio pubblicitario

Puoi fare ogni sorta di cose con i LED lampeggianti e in questo semplice progetto creeremo un piccolo dispositivo che illumina i messaggi nell'aria quando lo fai ondeggiare avanti e indietro. È più facile di quanto pensi e il costo totale delle parti è inferiore a $ 5.

Questo progetto utilizza un'illusione ottica chiamata persistenza della visione per far apparire il testo nell'aria. Probabilmente ti sei imbattuto in questo fenomeno quando qualcuno muove rapidamente una scintillante di notte. Useremo un Arduino e alcuni LED per imitare questo effetto. Questo progetto è semplice da realizzare, con pochi componenti e poca saldatura (anche se se vuoi qualche consiglio su come iniziare con il tuo saldatore, controlla questa guida Scopri come saldare, con questi semplici suggerimenti e progettiSei un po 'intimidito dal pensiero di un ferro caldo e di un metallo fuso? Se vuoi iniziare a lavorare con l'elettronica, dovrai imparare a saldare. Aiutiamoci. Leggi di più ).

Avrai bisogno

instagram viewer
  • Arduino (ho usato un Nano da $ 2 perché è compatto ed economico, ma qualsiasi modello dovrebbe andare bene).
  • 5x LED rossi.
  • 5x Resistori da 220 Ohm.
  • 1x Portabatterie 9v.
  • 1x interruttore a bilanciere.
  • 1x pezzo di protoboard.
  • Un alloggiamento per il prodotto finito (ho usato una piccola scatola di cartone dipinta di nero).

Avrai anche bisogno di un saldatore e un po 'di saldatura per mettere tutto insieme.

Sebbene facoltativo, alcuni stoppini per saldatura possono rivelarsi molto utili nel caso in cui si commettano errori di saldatura. Una breadboard e alcuni cavi di collegamento sono utili anche per testare il tuo circuito.

Componenti richiesti per il progetto

Cablaggio

Il cablaggio non potrebbe essere più semplice. Innanzitutto, collegare Arduino, LED e resistenze come mostrato in questo diagramma.

pov fritzing

I pin da D2 a D6 vanno rispettivamente a ciascun resistore, che sono collegati all'anodo positivo (gamba lunga) di ciascun LED. Il catodo è collegato a terra, che si ricollega all'Arduino. Al termine, dovrebbe avere un aspetto simile al seguente:

breadboard pov

Ecco fatto: il nostro circuito è terminato! In seguito aggiungeremo un alloggiamento della batteria e un interruttore, ma questo è tutto ciò di cui abbiamo bisogno per testare se funziona.

Codice

Ora collega Arduino al computer e apri l'IDE Arduino. Se non conosci Arduino e vuoi una buona guida per iniziare, questo link Introduzione ad Arduino: una guida per principiantiArduino è una piattaforma di prototipazione elettronica open source basata su hardware e software flessibili e di facile utilizzo. È destinato ad artisti, designer, hobbisti e chiunque sia interessato a creare oggetti o ambienti interattivi. Leggi di più sarà utile.

Apri un nuovo schizzo e copia questo codice in. Il codice è stato modificato da questo progetto e puoi scaricarlo per intero a questo Gist.

// per quanto tempo rimane acceso ogni led. int delayTime = 1; // per quanto tempo tra ogni int charBreak = 3; // per quanto tempo attendere il termine del messaggio prima che si ripeta. 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; <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);} ritardo (charBreak); } void displayString (char * s) {for (int i = 0; i <= strlen (s); i ++) {displayChar (s [i]); } } void loop () {// Cambia il testo qui dentro per cambiare il testo visualizzato. // Assicurati di conservare le parentesi e le virgolette. DisplayString ( ".. ciao ..."); ritardo (40); }

Salvare lo schizzo e caricarlo sulla scheda. In caso di errori, assicurarsi di aver selezionato la scheda e la porta COM corrette. I LED dovrebbero iniziare a lampeggiare. In caso contrario, controlla tutte le connessioni sulla breadboard. I numeri interi dichiarati all'inizio del codice determinano la velocità di visualizzazione del testo. Più alto è il numero, più veloce sarà necessario agitare il dispositivo. Ho scoperto che i numeri usati qui hanno funzionato bene.

Ora per fare un rapido test. Scollega Arduino dal cavo USB e collega il portabatteria ai pin VIN e GND del tuo arduino

pov fritz con batt

Ora che puoi spostarlo, prova a far oscillare i LED di fronte a te. Dovresti vedere alcune lettere formarsi nell'aria a condizione che sia abbastanza buio intorno a te. Ho trovato utile configurare il mio telefono per catturare questo.

prova del pane

Funziona! Ora per renderlo un po 'più permanente.

Irons at the Ready!

Appoggia la tua scheda Arduino, i resistori e i LED sulla tua scheda protettiva in questo modo:

disposto a bordo

Ovviamente puoi rendere il layout compatto come desideri, purché il circuito rimanga lo stesso. Assicurati di lasciare almeno una linea di contatti della scheda protettiva su ciascun lato di Arduino per i componenti e l'alimentazione. Se sei un principiante in elettronica, eccone alcuni ottimi consigli per te Elettronica per principianti: 10 abilità che devi conoscereMolti di noi non hanno mai nemmeno toccato un saldatore, ma rendere le cose incredibilmente gratificanti. Ecco dieci delle più elementari competenze di elettronica fai-da-te per aiutarti a iniziare. Leggi di più .

Salderemo insieme i catodi a LED in una linea per creare un terreno comune, proprio come abbiamo fatto quando abbiamo realizzato il nostro Matrice LED Aggiorna la tua ghirlanda di Natale con una matrice LED Motion ActivatedQuesta ghirlanda natalizia fai-da-te utilizza una matrice Arduino e LED per produrre un fantastico display luminoso che impressionerà i tuoi amici e la tua famiglia. Leggi di più .

catodi di fila

Piegare ciascun catodo in modo che si sovrapponga al successivo e saldarli per creare una linea ininterrotta. Ora dobbiamo saldare i nostri anodi alle gambe dei resistori accanto a loro. Ho trovato il modo più semplice per farlo era quello di saldare ogni gamba al rispettivo pad, quindi posizionare il stirare tra loro per riscaldare entrambi i giunti, prima di aggiungere infine più saldatura per colmare il divario tra loro.

Controllare ogni connessione per verificare che sia saldamente fissata, quindi utilizzare i tronchesi per tagliare le gambe in eccesso dalle resistenze e dai LED.

resistori agli anodi

Ora per ripetere lo stesso compito, ma questa volta collegando l'altra estremità dei nostri resistori alle gambe dell'Arduino. Questa è la parte più complicata della saldatura. Ogni resistore si collega molto al suo pin Arduino da solo o il circuito non funzionerà come previsto. Ho fatto diversi errori qui e ho dovuto usare lo stoppino per saldatura più volte per rimuovere la saldatura indesiderata.

Dopo aver effettuato tutti i collegamenti corretti, ricontrolla che nessuno di essi si sovrapponga ai vicini. Se hai accesso a un multimetro qui, puoi utilizzare la modalità di continuità per verificare che ogni pin abbia solo una linea ininterrotta al suo resistore. Se hai appena ottenuto un multimetro, c'è un'ottima guida per iniziare in questo articolo. 7 abilità tecniche fai-da-te per insegnare ai tuoi figli, perché le scuole no Leggi di più

immagine di continuità

Dopo aver verificato ogni connessione, tagliare la lunghezza in eccesso dalle gambe delle resistenze

Aggiungere potenza

Ora fai passare un pezzo di filo dal pin GND del tuo Arduino a un foro vicino al punto in cui termina la tua linea di catodi saldati e posiziona il filo nero del portabatterie accanto ad esso.

fili di gnd in alto

Ora saldate il filo al pin GND, come abbiamo fatto con i resistori, e saldate entrambi i fili all'estremità della linea di catodi per creare una terra comune per il circuito.

Infine, collega un filo al pin VIN del tuo arduino e posiziona l'interruttore tra quel filo e il pacco batteria. Mi scuso per l'interruttore coperto di colla a caldo in questa foto, ho dovuto smontare la macchina finita per fotografare questa fase!

switch vin

Una volta che è tutto saldato insieme, inserisci una batteria e premi l'interruttore. Congratulazioni! Il circuito è terminato. Se non vedi nulla accendersi, controlla attentamente ogni giunto di saldatura per vedere dove potrebbe esserci un'interruzione o un corto circuito.

Allegato

Ora che abbiamo funzionato, mettiamolo in una scatola. Qui è stata utilizzata una scatola di cartone dipinta, anche se è possibile rendere qualcosa di più permanente utilizzando una scatola acquistata in un negozio di hobby o persino una vecchia scatola di tupperware. Per un credito extra geek, puoi persino stampare in 3D il tuo una di queste stampanti 3D economiche. 5 stampanti 3D economiche che puoi acquistare oggiQualche anno fa, anche le stampanti 3D più economiche erano a disagio vicino al segno di $ 1.000 - ora puoi ottenere una stampante 3D di qualità a partire da $ 400. Leggi di più

Riduci le dimensioni della tua scheda protettiva segnandola e facendo scattare con attenzione le parti che non ti servono.

proto gif

Posiziona il circuito all'interno della custodia e segna il punto in cui i LED e l'interruttore devono colpire. Se lo desideri, puoi anche contrassegnare il punto in cui il connettore USB sulla scheda Arduino incontra il bordo in modo da poterlo collegare per modificare il testo senza aprire la casella. Praticare o praticare i fori necessari nella custodia.

fare buchi

Ora aggiungi un po 'di colla a caldo ai bordi dei LED e incollali in posizione. Ho incollato un pezzo di spugna sotto il circuito in modo che si adattasse perfettamente alla scatola. Collega il tuo interruttore alla custodia. Ho usato la colla a caldo, anche se viti o bulloni renderebbero una connessione molto più forte. È inoltre possibile incollare il portabatteria sul retro del circuito per impedirne lo spostamento all'interno quando l'oggetto è in uso, ma assicurati che eventuali contatti metallici sulla custodia non tocchino nessuno dei giunti di saldatura!

interruttore di misura

Il lavoro è fatto!

Chiudi il tuo recinto e il gioco è fatto! Per modificare il testo, collegare il cavo USB alla scheda Arduino e successivamente modificare il testo tra parentesi DisplayString nel ciclo continuo metodo. Trova un luogo buio e divertiti!

ritmo più lento

Hai già realizzato una macchina POV e conosci i modi per migliorare il design? Stai pensando di costruirne uno tu stesso? Parlaci del tuo progetto nei commenti qui sotto, ci piacerebbe ascoltarlo!

Ian Buckley è un giornalista freelance, musicista, performer e produttore video che vive a Berlino, in Germania. Quando non sta scrivendo o sul palco, armeggia con l'elettronica fai-da-te o il codice nella speranza di diventare uno scienziato pazzo.