Annons
Du kan göra alla möjliga saker med blinkande lysdioder, och i detta enkla projekt skapar vi en liten enhet som lyser upp meddelanden i luften när du vinkar fram och tillbaka. Det är lättare än du tror, och den totala kostnaden för delar är under $ 5.
Detta projekt använder en optisk illusion som kallas persistens of vision för att få texten att dyka upp i luften. Du har antagligen stött på detta fenomen när någon flyttar en tänd tomtebloss snabbt på natten. Vi kommer att använda en Arduino och några lysdioder för att härma denna effekt. Detta projekt är enkelt att bygga, med få komponenter och lite lödning (men om du vill ha några tips om hur du kommer igång med din lödkolv, kolla in den här guiden Lär dig att löda med dessa enkla tips och projektÄr du lite skrämd av tanken på ett varmt järn och smält metall? Om du vill börja arbeta med elektronik kommer du att behöva lära dig att löda. Låt oss hjälpa till. Läs mer ).
Du kommer behöva
- Arduino (jag använde en $ 2 Nano eftersom den är kompakt och billig, men alla modeller borde vara bra).
- 5x Röda lysdioder.
- 5x 220 Ohm-motstånd.
- 1x 9v batterihållare.
- 1x vippbrytare.
- 1x protobord.
- Ett hölje för den färdiga produkten (jag använde en liten kartong målad svart).
Du behöver också en lödkolv och lite löd för att sätta ihop allt.
Även om det är valfritt kan vissa lödveke komma till stor nytta om du gör några lödfel. En brädskiva och några anslutningsledningar är också användbara för att testa din krets.
ledningar
Ledningarna kunde inte vara enklare. Koppla först dina Arduino, lysdioder och motstånd som visas i detta diagram.
Pinnarna D2 till D6 går till respektive motstånd, som är fästa vid den positiva anoden (lång ben) på varje LED. Katoden är ansluten till marken, som ansluter tillbaka till Arduino. När det är klart ska det se ut så här:
Det är det: vår krets är klar! Vi kommer att lägga till ett batterihölje och en switch till det senare, men det är allt vi behöver för att testa om det fungerar.
Koda
Anslut nu din Arduino till datorn och öppna Arduino IDE. Om du är ny på att använda Arduino och vill ha en bra guide för att komma igång, den här länken Komma igång med Arduino: En nybörjarguideArduino är en open-source elektronikprototypplattform baserad på flexibel, lättanvänd hårdvara och mjukvara. Den är avsedd för konstnärer, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer kommer att vara användbart.
Öppna en ny skiss och kopiera den här koden i. Koden ändrades från det här projektet och du kan ladda ner den i sin helhet vid denna Gist.
// hur länge varje led stannar kvar i. int-fördröjningstid = 1; // hur länge mellan varje int charBreak = 3; // hur lång tid att vänta efter att meddelandet är klart innan det upprepas. int resetTime = 20; int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; ogiltig installation () { 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-rad) { int myline; myline = linje; if (myline> = 16) {digitalWrite (LED1, HIGH); myline- = 16;} annars {digitalWrite (LED1, LOW);} if (myline> = 8) {digitalWrite (LED2, HIGH); myline- = 8;} annars {digitalWrite (LED2, LOW);} if (myline> = 4) {digitalWrite (LED3, HIGH); myline- = 4;} annars {digitalWrite (LED3, LOW);} if (myline> = 2) {digitalWrite (LED4, HIGH); myline- = 2;} annars {digitalWrite (LED4, LOW);} if (myline> = 1) {digitalWrite (LED5, HIGH); myline- = 1;} annars {digitalWrite (LED5, LOW);} } void displayChar (char c) { if (c == 'a') {för (int i = 0; i <5; i ++) {displayLine (a [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'b') {för (int i = 0; i <5; i ++) {displayLine (b [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'c2') {för (int i = 0; i <5; i ++) {displayLine (c2 [i]); fördröjning (fördröjningstid);} displayLine (0);} if (c == 'd') {för (int i = 0; i <5; i ++) {displayLine (d [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'e') {för (int i = 0; i <5; i ++) {displayLine (e [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'f') {för (int i = 0; i <5; i ++) {displayLine (f [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'g') {för (int i = 0; i <5; i ++) {displayLine (g [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'h') {för (int i = 0; i <5; i ++) {displayLine (h [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'i') {för (int it = 0; det <5; it ++) {displayLine (i [it]); fördröjning (delayTime);} displayLine (0);} if (c == 'j') {för (int i = 0; i <5; i ++) {displayLine (j [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'k') {för (int i = 0; i <5; i ++) {displayLine (k [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'l') {för (int i = 0; i <5; i ++) {displayLine (l [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'm') {för (int i = 0; i <5; i ++) {displayLine (m [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'n') {för (int i = 0; i <5; i ++) {displayLine (n [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'o') {för (int i = 0; i <5; i ++) {displayLine (o [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'p') {för (int i = 0; i <5; i ++) {displayLine (p [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'q') {för (int i = 0; i <5; i ++) {displayLine (q [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'r') {för (int i = 0; i <5; i ++) {displayLine (r [i]); fördröjning (delayTime);} displayLine (0);} if (c == 's') {för (int i = 0; i <5; i ++) {displayLine (s [i]); fördröjning (delayTime);} displayLine (0);} if (c == 't') {för (int i = 0; i <5; i ++) {displayLine (t [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'u') {för (int i = 0; i <5; i ++) {displayLine (u [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'v') {för (int i = 0; i <5; i ++) {displayLine (v [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'w') {för (int i = 0; i <5; i ++) {displayLine (w [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'x') {för (int i = 0; i <5; i ++) {displayLine (x [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'y') {för (int i = 0; i <5; i ++) {displayLine (y [i]); fördröjning (delayTime);} displayLine (0);} if (c == 'z') {för (int i = 0; i <5; i ++) {displayLine (z [i]); fördröjning (delayTime);} displayLine (0);} if (c == '!') {för (int i = 0; i <5; i ++) {displayLine (exkl [i]); fördröjning (fördröjningstid);} displayLine (0);} if (c == '?') {för (int i = 0; i <5; i ++) {displayLine (ques [i]); fördröjning (delayTime);} displayLine (0);} if (c == '.') {för (int i = 0; i <5; i ++) {displayLine (eos [i]); fördröjning (fördröjningstid);} displayLine (0);} if (c == '') {för (int i = 0; i <5; i ++) {displayLine (mellanslag [i]); fördröjning (delayTime);} displayLine (0);} fördröjning (charBreak); } void displayString (char * s) {för (int i = 0; i <= strlen (s); i ++) {displayChar (s [i]); } } void loop () {// Ändra texten här inne för att ändra den visade texten. // Se till att du håller konsolerna och citattecknen. Visningssträng ( ".. Hej ..."); fördröjning (40); }
Spara skissen och ladda upp den till ditt bräde. Om du får några fel, se till att du har valt rätt kort och comport. Dina lysdioder bör börja flimra. Om de inte gör det, kolla alla dina anslutningar på din brädskiva. De heltal som deklareras i början av koden avgör hur snabbt texten ska visas. Ju högre antal, desto snabbare behöver du vinka enheten. Jag upptäckte att siffrorna som användes här fungerade bra.
Nu för att göra ett snabbtest. Koppla bort din Arduino från USB-kabeln och anslut batterihållaren till VIN- och GND-stiften på din arduino
Nu när du kan flytta den runt kan du försöka svänga lysdioderna framför dig. Du borde se några bokstäver som bildas i luften förutsatt att det är tillräckligt mörkt runt dig. Jag fann att det hjälpte till att ställa in min telefon för att fånga detta.
Det fungerar! Nu för att göra det lite mer permanent.
Strykjärn vid redo!
Lägg ditt Arduino-kort, motstånd och lysdioder på protobordet så här:
Du kan naturligtvis göra layouten så kompakt som du vill, så länge kretsen förblir densamma. Se till att du lämnar åtminstone en rad protobordkontakter på varje sida av din Arduino för komponenter och strömförsörjning. Om du är nybörjare inom elektronik, här är några bra tips för dig Nybörjarelektronik: 10 färdigheter du behöver vetaMånga av oss har aldrig ens rört en lödkolv - men att göra saker kan vara oerhört givande. Här är tio av de mest grundläggande DIY-elektronikfärdigheterna som hjälper dig komma igång. Läs mer .
Vi lödar LED-katoderna tillsammans i en linje för att skapa en gemensam mark, precis som vi gjorde när vi gjorde vår LED-matris Uppgradera din julkrans med en rörelseaktiverad LED-matrisDenna DIY-julkrans använder en Arduino- och LED-matris för att producera en fantastisk lysdisplay som kommer att imponera på dina vänner och familj. Läs mer .
Vik varje katod så att den överlappar nästa och löd dem för att skapa en obruten linje. Nu måste vi löda våra anoder till benen på motstånden bredvid dem. Jag hittade det enklaste sättet att göra detta var att löda varje ben till deras respektive dyna och sedan placera stryk mellan dem för att värma båda lederna, innan du äntligen lägger till mer löd för att överbrygga mellanrummet mellan dem.
Kontrollera varje anslutning för att se att den är ordentligt monterad och använd sedan trådskärare för att klippa bort överflödiga ben från motstånd och lysdioder.
Nu för att upprepa samma uppgift, men den här gången ansluter vi den andra änden av våra motstånd till benen på Arduino. Det här är den mest svaga delen av lödningen. Varje motstånd fäster mycket på sin Arduino-stift ensam, annars kommer kretsen inte att fungera som den är avsedd för. Jag gjorde flera misstag här och var tvungen att använda lödväg för att ta bort oönskade lödor flera gånger.
När du har gjort alla rätt anslutningar, dubbelkontrollera att ingen av dem överlappar med sina grannar. Om du har tillgång till en multimeter här kan du använda kontinuitetsläge för att kontrollera att varje stift endast har en obruten linje i motståndet. Om du just har fått en multimeter finns det en bra startguide i den här artikeln. 7 DIY-tekniska färdigheter för att lära dina barn, eftersom skolor inte kommer Läs mer
När du har kontrollerat varje anslutning ska du klippa bort överlängden från motståndets ben
Lägga till kraft
Kör nu ett trådstycke från GND-stiftet på din Arduino till ett hål bredvid där din linje med lödda katoder slutar och placera den svarta tråden i din batterihållare bredvid den.
Löd nu kabeln till GND-stiftet, på samma sätt som vi gjorde med motståndet, och löd båda ledningarna till slutet av katodlinjen för att skapa en gemensam mark för kretsen.
Slutligen, anslut en tråd till VIN-stiftet på din arduino och placera växeln mellan den kabeln och batteripaketet. Jag ber om ursäkt för den heta limtäckta omkopplaren på det här fotot, jag var tvungen att demontera den färdiga maskinen för att fotografera detta steg!
När allt är lödat ihop, sätt i ett batteri och vänd på brytaren. Grattis! Kretsen är klar. Om du inte ser något tända, kontrollera varje lödfogar noggrant för att se var det kan vara en paus eller kortslutning.
Inhägnad
Nu när vi har det fungerar, låt oss lägga det i en låda. Här användes en målad kartong, även om du kunde göra något mer permanent med en låda som köpts i en hobbyaffär eller till och med en gammal tupperware-låda. För extra geek cred kan du till och med 3D skriva ut din egen på en av dessa billiga 3D-skrivare. 5 billiga 3D-skrivare som du faktiskt kan köpa idagFör några år tillbaka var till och med de billigaste 3D-skrivarna obekvämt nära $ 1000-märket - nu kan du få en kvalitets 3D-skrivare för så låga som $ 400. Läs mer
Skär ned din protobord till storlek genom att göra det och ta försiktigt bort delar du inte behöver.
Placera din krets inuti din hölje och markera var lysdioderna och omkopplaren måste gå igenom. Du kan valfritt också markera var USB-kontakten på Arduino-kortet möter kanten så att du kan ansluta den för att ändra texten utan att öppna rutan. Borra eller klipp hålen du behöver i höljet.
Lägg nu lite hett lim i LED-kanterna och fäst dem på plats. Jag limmade en bit svamp under kretsen så att den skulle sitta tätt i lådan. Fäst din brytare till fallet. Jag använde varmt lim, även om skruvar eller bultar skulle göra en mycket starkare anslutning. Du kan också limma batterihållaren på kretskortets baksida för att hindra att den rör sig innanför när föremålet används, men se till att metallkontakter i fallet inte rör vid någon av dina lödfogar!
Jobb gjort!
Stäng upp din skåp, så är du klar! För att ändra texten, anslut din USB-kabel till Arduino-kortet och ändra texten inuti parenteserna efter Visningssträng i slinga metod. Hitta en mörk plats och ha kul!
Har du byggt en POV-maskin tidigare och känt sätt att förbättra designen? Planerar du att bygga en själv? Berätta om ditt projekt i kommentarerna nedan, vi vill gärna höra det!
Ian Buckley är frilansjournalist, musiker, artist och videoproducent bosatt i Berlin, Tyskland. När han inte skriver eller på scenen tänker han på DIY-elektronik eller kod i hopp om att bli en gal forskare.