Du kan göra alla sorters saker med blinkande lysdioder, och i det här enkla projektet ska vi göra en liten enhet som tänder 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 av syn för att få text att visas i luften. Du har förmodligen stött på detta fenomen när någon flyttar en tänd glitter snabbt på natten. Vi kommer att använda en Arduino och några lysdioder för att efterlikna 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 börjar med lödstången, kolla in den här guiden Lär dig att lödda med dessa enkla tips och projekt Lär dig att lödda med dessa enkla Tips och projekt Är du lite skrämmad av tanken på ett hett järn och smält metall? Om du vill börja arbeta med elektronik, behöver du lära dig att löda. Låt oss hjälpa. Läs mer).
Du kommer behöva
- Arduino (jag använde en $ 2 nano eftersom det är kompakt och billigt, men vilken modell som helst ska vara bra).
- 5x röda lysdioder.
- 5x 220 ohm motstånd.
- 1x 9v batterihållare.
- 1x vridbrytare.
- 1x bitars protobord.
- Ett hus för den färdiga produkten (jag använde en liten kartonglåda målade svart).
Du behöver också ett lödstryk och lite lödd för att sätta allt ihop.
Medan det är valfritt, kan en del lödspån komma mycket bra om du gör några lödfel. En brödbräda och några anslutningsdrakar är också användbara för att testa din krets.
ledningar
Ledningarna kunde inte vara enklare. Koppla först upp din Arduino, LED och motstånd som visas i det här diagrammet.
Stift D2 till D6 går till respektive motstånd, vilka är fästa på den positiva anoden (långa benet) hos varje LED. Katoden är ansluten till marken, som kopplar tillbaka till Arduino. När det är klart borde det se ut så här:
Det är det: vår krets är klar! Vi lägger till ett batterihus och en omkopplare till den senare, men det här är allt vi behöver för att testa om det fungerar.
Koda
Koppla 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, kommer denna länk Komma igång med Arduino: En nybörjarhandbok Komma igång med Arduino: En nybörjarhandbok Arduino är en öppen källkods elektronik prototypplattform baserad på flexibel, att använda maskinvara och programvara. Den är avsedd för artister, 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. Koden ändrades från det här projektet och du kan ladda ner det fullständigt på denna 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); }
Spara skissen och ladda upp den till din styrelse. Om du får några fel, se till att du har rätt styrelse och com port vald. Dina lysdioder ska börja flimra. Om de inte gör det, kontrollera alla dina anslutningar på din brödbräda. De heltal som deklarerats i början av koden bestämmer hur snabbt texten visas. Ju högre antal, desto snabbare behöver du vinka enheten. Jag fann att siffrorna som används här fungerade bra.
Nu för att göra ett snabbtest. Koppla bort din Arduino från USB-kabeln, och fäst din batterihållare till VIN- och GND-stiftarna på din arduino
Nu när du kan flytta runt, försök försiktigt att 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 hittade det hjälpte till att ställa in min telefon för att fånga det här.
Det fungerar! Nu för att göra det lite mer permanent.
Strykjärn på klar!
Lägg din Arduino bräda, motstånd och lysdioder på din protobo så här:
Du kan självklart göra layouten så kompakt som du vill, så länge kretsen är densamma. Se till att du lämnar minst en rad protokollkontakter på vardera sidan av din Arduino för komponenterna och strömförsörjningen. Om du är nybörjare i elektronik, här är några bra tips för dig. Beginners Electronics: 10 färdigheter du behöver veta Nybörjarens elektronik: 10 färdigheter du behöver veta Många av oss har aldrig ens rört ett lödstryk - men att göra saker kan otroligt givande . Här är tio av de mest grundläggande DIY elektronik färdigheter för att hjälpa dig att komma igång. Läs mer .
Vi kommer att löda 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örelsesaktiverad LED-matris Uppgradera din julkrans med en rörelsesaktiverad LED-matris Denna DIY-jul krans använder en Arduino och LED matris för att producera en fantastisk upplyst display som imponerar 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ödda våra anoder till benen på motstånden bredvid dem. Jag hittade det enklaste sättet att göra detta var att lödda varje ben till respektive pudel och placera sedan järnet mellan dem för att värma båda lederna, innan du äntligen tillsatte mer lödd för att överbrygga klyftan mellan dem.
Kontrollera varje anslutning för att se att den är ordentligt fastsatt och använd sedan trådskärare för att skära bort överskottsbenen från motstånden och lysdioderna.
Nu för att upprepa samma uppgift, men den här gången förbinder den andra änden av våra motstånd till benen på Arduino. Detta är den mest fiddly delen av lödningen. Varje motstånd hänger mycket till sin Arduino-stift enbart eller kretsen fungerar inte som den är avsedd att. Jag gjorde flera misstag här och var tvungen att använda lödspån för att ta bort oönskat lödd flera gånger.
När du har gjort alla de korrekta anslutningarna dubbelklickar ingen av dem överlappar varandra med sina grannar. Om du har tillgång till en multimeter här kan du använda kontinuitetsläget för att kontrollera att varje stift bara har en obruten linje till dess motstånd. Om du bara har en multimeter, finns det en bra startguide i den här artikeln. 7 DIY Tech Färdigheter att lära dina barn, eftersom skolor inte kommer att göra 7 DIY Tech Färdigheter att lära dina barn, eftersom skolorna inte kommer att läsa mer
När du har kontrollerat varje anslutning, klippa överskottslängden från motståndens ben
Lägger kraft
Kör nu en bit tråd från din Arduino GND-stift till ett hål bredvid var din lödkedjelinje slutar och placera den svarta ledningen i din batterihållare bredvid den.
Löd nu ledningen till GND-stiftet, på samma sätt som vi gjorde med motstånden, och löd båda banden till slutet av katoderlinjen för att skapa en gemensam mark för kretsen.
Slutligen fäst en ledning till din arduinoens VIN-stift, och sätt in kontakten mellan den här ledningen och batteriet. Jag ber om ursäkt för den heta limdäcksbrytaren i detta foto, jag var tvungen att demontera den färdiga maskinen för att fotografera det här steget!
När det är lödt ihop, sätt i ett batteri och vrid på strömbrytaren. Grattis! Kretsen är klar. Om du inte ser något som lyser upp, kontrollera varje lödfog försiktigt för att se var det kan vara en paus eller en kortslutning.
Inhägnad
Nu när vi har det fungerar, låt oss sätta det i en låda. Här användes en målad kartong, men du kan göra något mer permanent med en låda som köptes 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 kan du faktiskt köpa idag 5 billiga 3D-skrivare kan du faktiskt köpa idag För några år tillbaka var även de billigaste 3D-skrivarna obekväma nära markeringen på $ 1000 - nu kan du få en kvalitets 3D-skrivare för så låg som $ 400. Läs mer
Skär ner din protoboard till storlek genom att scorera den och noggrant snappa bort delar du inte behöver.
Placera din krets inuti ditt hölje och markera var lamporna och strömbrytaren måste suga igenom. Du kan 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 lådan. Borra eller skära de hål du behöver i höljet.
Lägg nu lite litet lim i kanterna på LED-lamporna och fäst dem på plats. Jag limmade en bit svamp under kretsen så att den skulle ligga snyggt i lådan. Fäst omkopplaren till väskan. Jag använde varmt lim, även om skruvar eller bultar skulle göra en mycket starkare anslutning. Du kan också limma batteriluckan på baksidan av kretskortet för att stoppa det rör sig inuti när objektet är i bruk, men var noga med att alla metallkontakter på väskan inte rör någon av dina lödförband!
Jobb är klart!
Stäng upp ditt hölje, och du är klar! För att ändra texten, fäst din USB-kabel till Arduino-kortet och byt text inuti parenteserna efter displayString i loop- metoden. Hitta en mörk plats och ha kul!
Har du byggt en POV-maskin innan och känner till sätt att förbättra på designen? Planerar du att bygga en själv? Berätta om ditt projekt i kommentarerna nedan, vi skulle gärna höra det!