Reklame

Du kan gøre alle slags ting med blinkende LED'er, og i dette enkle projekt laver vi en lille enhed, der lyser op i luften, når du vinker den frem og tilbage. Det er lettere, end du tror, ​​og de samlede udgifter til dele er under $ 5.

Dette projekt bruger en optisk illusion kaldet persistens of vision for at få tekst til at vises i luften. Du er sandsynligvis stødt på dette fænomen, når nogen flytter en tændt tændrør hurtigt om natten. Vi bruger en Arduino og nogle LED'er til at efterligne denne effekt. Dette projekt er let at opbygge med få komponenter og lidt lodning (dog hvis du vil have nogle tip til, hvordan du kommer i gang med dit loddejern, tjek denne vejledning Lær hvordan du lodder med disse enkle tip og projekterEr du lidt skræmt af tanken om et varmt jern og smeltet metal? Hvis du vil begynde at arbejde med elektronik, bliver du nødt til at lære at lodde. Lad os hjælpe. Læs mere ).

Du får brug for

  • Arduino (jeg brugte en $ 2 Nano, fordi den er kompakt og billig, men enhver model burde være i orden).
  • instagram viewer
  • 5x Røde lysdioder.
  • 5x 220 Ohm modstande.
  • 1x 9v batteriholder.
  • 1x vippekontakt.
  • 1x protoboard.
  • Et hus til det færdige produkt (jeg brugte en lille papkasse malet sort).

Du har også brug for et loddejern og noget loddemetal for at sammensætte det hele.

Selvom det er valgfrit, kan nogle loddejer komme meget praktisk i tilfælde af at du laver loddefejl. En brødbræt og nogle tilslutningsledninger er også nyttige til at teste dit kredsløb.

Komponenter, der kræves til projektet

Ledninger

Ledningerne kunne ikke være enklere. Tilslut først dine Arduino, LED'er og modstande, som vist i dette diagram.

pov fritzing

Stifterne D2 til D6 går til hver modstand, der er knyttet til den positive anode (langben) på hver LED. Katoden er forbundet til jorden, der forbindes tilbage til Arduino. Når det er gjort, skal det se sådan ud:

pov-brødbræt

Det er det: vores kredsløb er færdigt! Vi tilføjer et batterihus og en switch til det senere, men det er alt, hvad vi har brug for for at teste, om det fungerer.

Kode

Tilslut nu din Arduino til computeren, og åbn Arduino IDE. Hvis du er ny til at bruge Arduino og ønsker en god guide til at komme i gang, dette link Kom godt i gang med Arduino: En begynderguideArduino er en open source-elektronikprototypeplatform baseret på fleksibel, letanvendelig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og enhver, der er interesseret i at skabe interaktive objekter eller miljøer. Læs mere vil være nyttigt.

Åbn en ny skitse og kopier denne kode i. Koden blev ændret fra dette projekt og du kan downloade det fuldt ud ved denne Gist.

// hvor længe hver led forbliver på. int delayTime = 1; // hvor længe mellem hver int charBreak = 3; // hvor længe man skal vente efter, at meddelelsen er færdig, før den gentages. int resetTime = 20; int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; ugyldig opsætning () { 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 = linje; if (myline> = 16) {digitalWrite (LED1, HIGH); myline- = 16;} andet {digitalWrite (LED1, LOW);} if (myline> = 8) {digitalWrite (LED2, HIGH); myline- = 8;} andet {digitalWrite (LED2, LOW);} if (myline> = 4) {digitalWrite (LED3, HIGH); myline- = 4;} andet {digitalWrite (LED3, LOW);} if (myline> = 2) {digitalWrite (LED4, HIGH); myline- = 2;} andet {digitalWrite (LED4, LOW);} if (myline> = 1) {digitalWrite (LED5, HØJ); myline- = 1;} andet {digitalWrite (LED5, LAV);} } ugyldig visningChar (char c) { if (c == 'a') {for (int i = 0; i <5; i ++) {displayLine (a [i]); forsinkelse (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]); forsinkelse (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]); forsinkelse (delayTime);} displayLine (0);} if (c == 'g') {for (int i = 0; i <5; i ++) {displayLine (g [i]); forsinkelse (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]); forsinkelse (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]); forsinkelse (delayTime);} displayLine (0);} if (c == 'p') {for (int i = 0; i <5; i ++) {displayLine (p [i]); forsinkelse (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]); forsinkelse (delayTime);} displayLine (0);} if (c == 's') {for (int i = 0; i <5; i ++) {displayLine (s [i]); forsinkelse (delayTime);} displayLine (0);} if (c == 't') {for (int i = 0; i <5; i ++) {displayLine (t [i]); forsinkelse (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]); forsinkelse (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]); forsinkelse (delayTime);} displayLine (0);} if (c == 'y') {for (int i = 0; i <5; i ++) {displayLine (y [i]); forsinkelse (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]); forsinkelse (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 (mellemrum [i]); forsinkelse (delayTime);} displayLine (0);} forsinkelse (charBreak); } tomt displayString (char * s) {for (int i = 0; i <= strlen (r); i ++) {displayChar (s [i]); } } void loop () {// Skift teksten inde her for at ændre den viste tekst. // Sørg for at holde konsollerne og anførselstegnene. Visningsstreng ( ".. hej ..."); forsinkelse (40); }

Gem skitsen og upload den til dit bord. Hvis du får fejl, skal du sikre dig, at du har valgt det rigtige kort og com port. Dine lysdioder skal begynde at flimre. Hvis de ikke gør det, skal du kontrollere alle dine forbindelser på din brødbræt. De heltal, der er erklæret i begyndelsen af ​​koden, bestemmer, hvor hurtigt teksten vises. Jo højere nummer, jo hurtigere bliver du nødt til at vinke enheden. Jeg fandt, at de anvendte numre fungerede godt.

Nu for at udføre en hurtig test. Frakobl din Arduino fra USB-kablet, og tilslut din batteriholder til VIN- og GND-stifterne på din arduino

pov fritz med batt

Nu hvor du kan flytte den rundt, prøv forsigtigt at svinge lysdioderne foran dig. Du skal se nogle bogstaver, der dannes i luften, forudsat at det er mørkt nok omkring dig. Jeg fandt, at det hjalp med at indstille min telefon til at fange dette.

brød test

Det virker! Nu for at gøre det lidt mere permanent.

Jern på klar!

Læg dit Arduino-kort, modstande og LED på din protoboard sådan:

lagt ud om bord

Du kan selvfølgelig gøre layoutet så kompakt, som du ønsker, så længe kredsløbet forbliver det samme. Sørg for, at du efterlader mindst en linje protobordkontakter på hver side af din Arduino for komponenterne og strømforsyningen. Hvis du er nybegynder inden for elektronik, her er nogle gode tip til dig Begynderelektronik: 10 færdigheder, du har brug for at videMange af os har aldrig engang rørt ved et loddejern - men at gøre ting kan være utroligt givende. Her er ti af de mest basale DIY-elektronikfærdigheder, der hjælper dig med at komme i gang. Læs mere .

Vi lodder LED-katoderne sammen i en linje for at skabe en fælles grund, ligesom vi gjorde, da vi lavede vores LED matrix Opgrader din julekrans med en bevægelsesaktiveret LED-matrixDenne DIY-julekrans bruger en Arduino- og LED-matrix til at fremstille en fantastisk lysdisplay, der vil imponere dine venner og familie. Læs mere .

række katoder

Fold hver katode, så den overlapper den næste, og lod dem for at skabe en ubrudt linje. Nu skal vi lodde vores anoder til benene på modstande ved siden af ​​dem. Jeg fandt, at den nemmeste måde at gøre dette på var at lodde hvert ben til deres respektive pude og derefter placere stryge mellem dem for at opvarme begge samlinger, før du til sidst tilsætter mere loddemetal for at bygge bro mellem dem.

Kontroller hver forbindelse for at se, at den er solidt fastgjort, og brug derefter trådskærere til at afskære overskydende ben fra modstande og lysdioder.

modstande mod anoder

Nu for at gentage den samme opgave, men denne gang forbinder den anden ende af vores modstande til benene på Arduino. Dette er den mest uklare del af lodningen. Hver modstand hænger meget fast på sin Arduino-pin alene, eller kredsløbet fungerer ikke, som det er beregnet til. Jeg begik flere fejl her og måtte bruge loddej til at fjerne uønsket lodde flere gange.

Når du har foretaget alle de rigtige forbindelser, skal du tjekke, at ingen af ​​dem overlapper hinanden med deres naboer. Hvis du har adgang til et multimeter her, kan du bruge kontinuitetstilstand til at kontrollere, at hver pin kun har en ubrudt linje i modstanden. Hvis du lige har fået et multimeter, er der en god guide til at komme i gang i denne artikel. 7 DIY-tekniske færdigheder til at lære dine børn, fordi skoler ikke vil Læs mere

kontinuitetsbillede

Når du har kontrolleret hver forbindelse, skal du skære overskydende længde fra benene på modstande

Tilføjelse af strøm

Kør nu et stykke ledning fra GND-stiften på din Arduino til et hul ved siden af, hvor din linje af lodde katoder slutter, og placer den sorte ledning af din batteriholder ved siden af.

gnd ledninger øverst

Lod nu wiren til GND-stiften, på samme måde som vi gjorde med modstandene, og lod begge ledninger til enden af ​​linjen med katoder for at skabe en fælles grund for kredsløbet.

Tilslut til sidst en ledning til VIN-stiften på din arduino, og placer din switch mellem denne ledning og batteripakken. Undskyld for den varme lim, der var dækket til kontakten på dette foto, jeg var nødt til at afmontere den færdige maskine for at fotografere dette trin!

skifte vin

Når det hele er loddet sammen, skal du sætte et batteri i og dreje på kontakten. Tillykke! Kredsløbet er færdig. Hvis du ikke ser noget lyser op, skal du tjekke hvert loddeforbindelse omhyggeligt for at se, hvor der kan være en pause eller en kortslutning.

kabinet

Nu hvor vi har det fungerer, lad os lægge det i en kasse. Her blev en malet papkasse brugt, skønt du kunne gøre noget mere permanent ved hjælp af en kasse købt i en hobbybutik eller endda en gammel tupperware-kasse. For ekstra geek cred, kan du endda 3D-udskrive din egen på en af ​​disse billige 3D-printere. 5 billige 3D-printere, som du faktisk kan købe i dagFor nogle år tilbage var selv de billigste 3D-printere ubehageligt tæt på $ 1.000-mærket - nu kan du få en 3D-printer til kvalitet til så lavt som $ 400. Læs mere

Skær din protoboard ned i størrelse ved at score den og snappe forsigtigt de dele, du ikke har brug for, væk.

proto gif

Placer dit kredsløb inde i dit kabinet, og markér, hvor LED'erne og kontakten skal trænge igennem. Du kan eventuelt også markere, hvor USB-stikket på Arduino-tavlen møder kanten, så du kan tilslutte det for at ændre teksten uden at åbne boksen. Bor eller skær de huller, du har brug for, ind i skabet.

lav huller

Tilføj nu lidt varmt lim til kanterne på lysdioderne og sæt dem på plads. Jeg limede et stykke svamp under kredsløbet, så det sad tæt i kassen. Sæt din switch til sagen. Jeg brugte varmt lim, selvom skruer eller bolte ville skabe en meget stærkere forbindelse. Du kan også lime batteriholderen på bagsiden af ​​kredsløbskortet for at forhindre, at den bevæger sig inde inden, når varen er i brug, men sørg for, at alle metalkontakter på sagen ikke berører nogen af ​​dine loddeforbindelser!

måle switch

Job er færdig!

Luk din kabinet op, så er du færdig! For at ændre teksten skal du vedhæfte dit USB-kabel til Arduino-tavlen og ændre teksten inden i parentes efter Visningsstreng i loop metode. Find et mørkt sted, og have det sjovt!

langsommere tempo

Har du bygget en POV-maskine før og kendt måder at forbedre designet på? Planlægger du selv at bygge en sådan? Fortæl os om dit projekt i kommentarerne nedenfor, vi vil meget gerne høre det!

Ian Buckley er freelance journalist, musiker, kunstner og videoproducent bosiddende i Berlin, Tyskland. Når han ikke skriver eller er på scenen, tænker han med DIY-elektronik eller kode i håbet om at blive en gal videnskabsmand.