Oglas

Možete raditi svakakve stvari s treptajućim LED-ima, a u ovom jednostavnom projektu napravit ćemo mali uređaj koji svijetli poruke u zraku kad ih mašete naprijed-nazad. Lakše je nego što mislite, a ukupni troškovi dijelova su ispod 5 dolara.

Ovaj projekt koristi optičku iluziju koja se naziva postojanost vizije kako bi se tekst pojavio u zraku. Vjerojatno ste naišli na ovaj fenomen kad netko noću brzo pokreće upaljenu svjećicu. Koristit ćemo Arduino i neke LED diode za oponašanje tog učinka. Ovaj je projekt jednostavan za izgradnju, s malo komponenti i malo lemljenja (iako želite savjete o tome kako započeti s vašim lemilicom provjerite ovaj vodič Saznajte kako lemiti pomoću ovih jednostavnih savjeta i projekataMalo vas zastrašuje pomisao na vruće željezo i staljeni metal? Ako želite početi raditi s elektronikom, morat ćete naučiti lemiti. Pomozite nam. Čitaj više ).

Trebat će vam

  • Arduino (koristio sam Nano od 2 dolara jer je kompaktan i jeftin, ali svaki bi model trebao biti u redu).
  • instagram viewer
  • 5x Crvene LED.
  • 5x Otpornici 220 Ohm.
  • 1x Držač baterija od 9 V.
  • 1x Rocker prekidač.
  • 1x komad ploče.
  • Kućište za gotov proizvod (koristio sam malu kartonsku kutiju obojenu crnom bojom).

Trebat će vam i željezo za lemljenje i neko lemljenje kako biste ih sve sastavili.

Iako je izborno, neki fitil za lemljenje može vam biti vrlo koristan u slučaju da napravite greške pri lemljenju. Ispitna ploča i neke žice za združivanje također su korisne za testiranje kruga.

Komponente potrebne za projekt

ožičenje

Ožičenje ne može biti jednostavnije. Prvo spojite svoje Arduino, LED i otpornike kao što je prikazano na ovom dijagramu.

pov fritzing

Pinovi D2 do D6 idu prema svakom otporniku koji su pričvršćeni na pozitivnu anodu (dugačku nogu) svakog LED-a. Katoda je spojena na zemlju, koja se spaja natrag na Arduino. Kad to učini, trebao bi izgledati ovako:

pov

To je to: naš krug je gotov! Kasnije ćemo dodati kućište baterije i prebaciti ga, ali to je sve što trebamo kako bismo testirali radi li.

Kodirati

Priključite Arduino na računalo i otvorite Arduino IDE. Ako ste novi u korištenju Arduino-a i želite dobar vodič o tome, ovu vezu Početak rada s Arduinom: Vodič za početnikeArduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom hardveru i softveru koji se lako koristi. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja. Čitaj više bit će korisno.

Otvorite novu skicu i kopirajte ovaj kod u. Kôd je izmijenjen iz Ovaj projekt a možete je preuzeti u cijelosti na ovom Gistu.

// koliko dugo vodi svako led. int delayTime = 1; // koliko dugo između svakog int charBreak = 3; // koliko dugo čekati nakon dovršetka poruke prije nego što se ponovi. int resetTime = 20; int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; poništavanje postave () { pinMode (LED1, IZLAZ); pinMode (LED2, IZLAZ); pinMode (LED3, IZLAZ); pinMode (LED4, IZLAZ); pinMode (LED5, IZLAZ); } 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 pitanje [] = {8, 19, 20, 8, 0}; int space [] = {0, 0, 0, 0, 0}; void displayLine (int linija) { int myline; myline = linija; ako je (moja linija> = 16) {digitalWrite (LED1, HIGH); myline- = 16;} else {digitalWrite (LED1, LOW);} ako je (moja linija> = 8) {digitalWrite (LED2, HIGH); myline- = 8;} else {digitalWrite (LED2, LOW);} ako je (moja linija> = 4) {digitalWrite (LED3, HIGH); myline- = 4;} else {digitalWrite (LED3, LOW);} ako je (moja linija> = 2) {digitalWrite (LED4, HIGH); myline- = 2;} else {digitalWrite (LED4, LOW);} ako je (moja linija> = 1) {digitalWrite (LED5, HIGH); myline- = 1;} else {digitalWrite (LED5, LOW);} } void displayChar (char c) { ako je (c == 'a') {for (int i = 0; i <5; i ++) {displayLine (a [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'b') {for (int i = 0; i <5; i ++) {displayLine (b [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'c2') {for (int i = 0; i <5; i ++) {displayLine (c2 [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'd') {for (int i = 0; i <5; i ++) {displayLine (d [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'e') {for (int i = 0; i <5; i ++) {displayLine (e [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'f') {for (int i = 0; i <5; i ++) {displayLine (f [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'g') {for (int i = 0; i <5; i ++) {displayLine (g [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'h') {for (int i = 0; i <5; i ++) {displayLine (h [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'i') {for (int it = 0; to <5; it ++) {displayLine (i [it]); delay (delayTime);} displayLine (0);} ako je (c == 'j') {for (int i = 0; i <5; i ++) {displayLine (j [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'k') {for (int i = 0; i <5; i ++) {displayLine (k [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'l') {for (int i = 0; i <5; i ++) {displayLine (l [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'm') {for (int i = 0; i <5; i ++) {displayLine (m [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'n') {for (int i = 0; i <5; i ++) {displayLine (n [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'o') {for (int i = 0; i <5; i ++) {displayLine (o [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'p') {for (int i = 0; i <5; i ++) {displayLine (p [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'q') {for (int i = 0; i <5; i ++) {displayLine (q [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'r') {for (int i = 0; i <5; i ++) {displayLine (r [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 's') {for (int i = 0; i <5; i ++) {displayLine (s [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 't') {for (int i = 0; i <5; i ++) {displayLine (t [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'u') {for (int i = 0; i <5; i ++) {displayLine (u [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'v') {for (int i = 0; i <5; i ++) {displayLine (v [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'w') {for (int i = 0; i <5; i ++) {displayLine (w [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'x') {for (int i = 0; i <5; i ++) {displayLine (x [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'y') {for (int i = 0; i <5; i ++) {displayLine (y [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == 'z') {for (int i = 0; i <5; i ++) {displayLine (z [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == '!') {for (int i = 0; i <5; i ++) {displayLine (osim [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == '?') {for (int i = 0; i <5; i ++) {displayLine (pitanje [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == '.') {for (int i = 0; i <5; i ++) {displayLine (eos [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} ako je (c == '') {for (int i = 0; i <5; i ++) {displayLine (razmak [i]); kašnjenje (kašnjenjeTime);} displayLine (0);} kašnjenje (charBreak); } void displayString (char * s) {for (int i = 0; i <= strlen (s); i ++) {displayChar (s [i]); } } void loop () {// Promijenite ovdje ovdje tekst za promjenu prikazanog teksta. // Obavezno držite zagrade i navodnike. displayString ( ".. halo ..."); kašnjenje (40); }

Spremite skicu i stavite je na svoju ploču. Ako pogriješite, provjerite jeste li odabrali ispravan odbor i vrata. LED-ovi bi trebali treperiti. Ako ne, provjerite sve veze na ploči. Cijeli brojevi prijavljeni na početku koda određuju kako se brzo prikazuje tekst. Što je veći broj, brže ćete trebati mašiti uređajem. Otkrio sam da ovdje korišteni brojevi dobro funkcioniraju.

Sada napraviti brzi test. Isključite Arduino s USB kabela i pričvrstite držač baterije na VIN i GND igle vašeg arduino-a.

pov fritz s boj

Sad kad ga možete pomicati, pažljivo pokušajte zamahnuti LED pred sobom. Trebali biste vidjeti slova koja se formiraju u zraku pod uvjetom da je dovoljno mračno oko vas. Otkrio sam da mi je pomogao da postavim svoj telefon da snimim ovo.

test za kruh

Radi! Sada da to bude malo trajnije.

Željezo u pripravnosti!

Položite Arduino ploču, otpornike i LED-ove na vaš prototip:

položeni na brodu

Izgled možete naravno učiniti kompaktnim koliko želite, sve dok krug ostane isti. Obavezno ostavite barem jedan red protokolarnih kontakata sa svake strane vašeg Arduino-a radi komponenti i napajanja. Ako ste početnik u elektronici, evo nekoliko sjajni savjeti za vas Elektronika početnika: 10 vještina koje trebate znatiMnogi od nas nikada nisu ni dotakli željezo za lemljenje - ali izrada stvari može biti nevjerojatno korisna. Evo deset najosnovnijih vlastitih elektroničkih vještina koje će vam pomoći da započnete s radom. Čitaj više .

Mi ćemo lemiti LED katode zajedno u liniji kako bismo napravili zajedničko tlo, slično kao što smo napravili kada smo napravili svoj LED matrica Nadogradite svoj božićni vijenac pomoću LED matrice koja se aktivira pokretomOvaj DIY božićni vijenac koristi Arduino i LED matricu za proizvodnju nevjerojatnog zaslona za osvjetljenje koji će zadiviti vaše prijatelje i obitelj. Čitaj više .

redne katode

Svaku katodu presavijte tako da se sljedeća preklapa, i lepite ih da biste stvorili jednu neprekinutu liniju. Sada moramo lemiti naše anode na noge otpornika pored njih. Najlakši način za to učinio sam lemljenje svake noge na njihov odgovarajući jastučić, a zatim stavite željezo između njih kako bi zagrijali oba spoja, prije nego što konačno dodate više lemljenja za premošćivanje jaz između ih.

Provjerite svaki priključak kako biste vidjeli da je čvrsto spojen, a zatim pomoću rezača žica odrežite višak nogu s otpornika i LED-ova.

otpornici na anode

Sada ponovimo isti taj zadatak, ali ovaj put spajanje drugog kraja naših otpornika na Arduino noge. Ovo je najljepši dio lemljenja. Svaki otpornik mnogo se pričvrsti na svoj Arduino pin, ili ako krug neće raditi onako kako je namijenjen. Ovdje sam napravio nekoliko pogrešaka i morao sam više puta upotrijebiti fitilj za lemljenje da uklonim neželjeno lemljenje.

Nakon što ste uspostavili sve ispravne veze, dvaput provjerite da se nijedna od njih ne preklapa sa susjedima. Ako ovdje imate pristup multimetru, možete upotrijebiti način kontinuiteta za provjeru da li svaki pin ima samo neprekinutu liniju do otpornika. Ako ste upravo dobili multimetar, postoji sjajni vodič za početak rada u ovom članku. 7 DIY tehničkih vještina da naučite svoju djecu, jer škole neće Čitaj više

slika kontinuiteta

Nakon što provjerite svaki spoj, odrežite višak duljine s nogu otpornika

Dodavanje snage

Sada provucite komad žice sa GND-a vašeg Arduino-a u rupu pokraj mjesta na kojem završava linija lemljenih katoda i stavite crnu žicu držača baterije.

gnd žica vrh

Sada lemimo žicu na GND pin, isto kao što smo učinili i s otpornicima, i spojite obje žice na kraj linije katoda kako biste stvorili zajedničko tlo za krug.

Napokon, pričvrstite žicu na VIN pin vašeg arduina i postavite svoj preklop između te žice i baterije. Ispričavam se prekidačem prekrivenim vrućim ljepilom na ovoj fotografiji, morao sam demontirati gotov stroj da bih fotografirao ovu fazu!

prebaciti vin

Kad se sve spoji, stavite bateriju i uključite sklopku. Čestitamo! Krug je gotov. Ako ništa ne svijetli, pažljivo provjerite svaki spoj za spajanje kako biste vidjeli gdje može doći do puknuća ili kratkog spoja.

prilog

Sad kad to radimo, stavimo ga u okvir. Ovdje je korištena obojena kartonska kutija, iako biste mogli napraviti nešto više od upotrebe kutije kupljene u prodavaonici hobija ili čak i stare kutije za tupperware. Za dodatne geek kredite, čak možete 3D ispisati svoj jedan od tih jeftinih 3D pisača. 5 jeftinih 3D pisača koje danas zapravo možete kupitiPrije nekoliko godina, čak i najjeftiniji 3D pisači bili su neugodno blizu vrijednosti od 1.000 dolara - sada možete nabaviti kvalitetan 3D pisač za samo 400 dolara. Čitaj više

Smanjite protokol po veličini tako što ćete ga bilježiti i pažljivo oduzeti dijelove koji vam nisu potrebni.

proto gif

Postavite krug unutar vašeg kućišta i označite mjesto na kojem LED i prekidač moraju proći. Po želji možete označiti i gdje se USB priključak na Arduino ploči nalazi na rubu, tako da ga možete priključiti za promjenu teksta bez otvaranja okvira. Izbušite ili izrežite rupe koje trebate u kućištu.

napraviti rupe

Sada dodajte malo vrućeg ljepila na rubove LED-ova i zalijepite ih na mjesto. Zalijepio sam komad spužve ispod kruga tako da bi on čvrsto sjedio u kutiji. Pričvrstite svoj prekidač na kućište. Koristio sam vruće ljepilo, iako bi vijci ili vijci napravili puno jaču vezu. Također možete zalijepiti nosač baterije na stražnju stranu sklopke kako biste spriječili kretanje unutar njega kada upotrebljava se predmet, ali budite sigurni da bilo koji metalni kontakti na kućištu ne dodiruju bilo koji vaš spoj za lemljenje!

mjerač prekidača

Posao je gotov!

Zatvorite svoj prostor, i gotovi ste! Da biste promijenili tekst, priključite svoj USB kabel na ploču Arduino i nakon toga promijenite tekst u zagradama displayString u petlja metoda. Pronađite mračno mjesto i zabavite se!

sporiji tempo

Jeste li prije izradili POV stroj i znate načine kako poboljšati dizajn? Planirate li sami graditi jedan? Recite nam o svom projektu u komentarima u nastavku, voljeli bismo ga čuti!

Ian Buckley je slobodni novinar, glazbenik, izvođač i video producent koji živi u Berlinu, Njemačka. Kad ne piše ili ne govori na pozornici, bavi se uradi sam elektronikom ili kodom u nadi da će postati lud znanstvenik.