Publicitate

Puteți face tot felul de lucruri cu ajutorul LED-urilor intermitente, iar în acest proiect simplu, vom crea un dispozitiv mic care luminează mesaje în aer atunci când îl înconjurați înainte și înapoi. Este mai ușor decât crezi, iar costul total al pieselor este sub 5 USD.

Acest proiect utilizează o iluzie optică numită persistența vederii pentru a face textul să apară în aer. Probabil că ați întâlnit acest fenomen atunci când cineva mișcă rapid o scânteie aprinsă noaptea. Vom folosi un Arduino și câteva LED-uri pentru a imita acest efect. Acest proiect este simplu de construit, cu puține componente și puțină lipit (deși dacă doriți câteva sfaturi despre începerea procesului de lipit acest ghid Aflați cum puteți lipi, cu aceste sfaturi și proiecte simpleEști puțin intimidat de gândul la fier fierbinte și metal topit? Dacă doriți să începeți să lucrați cu electronice, va trebui să învățați să lipiți. Să ne ajutăm. Citeste mai mult ).

Vei avea nevoie

  • Arduino (am folosit un Nano de 2 dolari pentru că este compact și ieftin, dar orice model ar trebui să fie bine).
  • instagram viewer
  • 5x LED-uri roșii.
  • 5x 220 Ohm rezistențe.
  • 1x Suport baterie 9v.
  • 1x comutator cu balansoar
  • 1x bucată de protoboard.
  • O carcasă pentru produsul finit (am folosit o cutie mică de carton vopsită în negru).

Veți avea nevoie, de asemenea, de o lipit și de o lipit pentru a pune totul laolaltă.

Deși este opțional, unele fitiluri de lipit pot fi foarte utile în cazul în care faceți erori de lipire. O placă de panou și câteva fire de conectare sunt de asemenea utile pentru a-ți testa circuitul.

Componente necesare pentru proiect

Cablarea

Cablarea nu ar putea fi mai simplă. În primul rând, conectați-vă Arduino, leduri și rezistențe, așa cum se arată în această diagramă.

pov fritzing

Pinii D2 până la D6 se duc la fiecare rezistor, care sunt atașați de anodul pozitiv (piciorul lung) al fiecărui LED. Catodul este conectat la pământ, care se conectează înapoi la Arduino. Când ați terminat, ar trebui să arate așa:

pov

Asta este: circuitul nostru este terminat! Vom adăuga mai târziu o carcasă a bateriei și un comutator, dar acest lucru este tot ce trebuie pentru a testa dacă funcționează.

Cod

Acum conectați-vă Arduino la computer și deschideți IDE-ul Arduino. Dacă sunteți nou în utilizarea Arduino și doriți un ghid bun pentru a merge mai departe, acest link Noțiuni introductive cu Arduino: Ghid pentru începătoriArduino este o platformă de prototipare electronică open-source bazată pe hardware și software flexibile, ușor de utilizat. Este destinat artiștilor, designerilor, pasionaților și oricui este interesat să creeze obiecte sau medii interactive. Citeste mai mult va fi util.

Deschideți o schiță nouă și copiați acest cod în. Codul a fost modificat din acest proiect și îl puteți descărca complet la acest Gist.

// cât timp fiecare led rămâne pe. int delayTime = 1; // cât timp durează fiecare int-charBreak = 3; // cât timp să aștepți după terminarea mesajului înainte de a se repeta. 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 (linie int) { int linia mea; myline = linie; 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') {pentru (int i = 0; i <5; i ++) {displayLine (a [i]); delay (delayTime);} displayLine (0);} if (c == 'b') {pentru (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') {pentru (int i = 0; i <5; i ++) {displayLine (d [i]); delay (delayTime);} displayLine (0);} if (c == 'e') {pentru (int i = 0; i <5; i ++) {displayLine (e [i]); delay (delayTime);} displayLine (0);} if (c == 'f') {pentru (int i = 0; i <5; i ++) {displayLine (f [i]); delay (delayTime);} displayLine (0);} if (c == 'g') {pentru (int i = 0; i <5; i ++) {displayLine (g [i]); delay (delayTime);} displayLine (0);} if (c == 'h') {pentru (int i = 0; i <5; i ++) {displayLine (h [i]); delay (delayTime);} displayLine (0);} if (c == 'i') {for (int it = 0; este <5; it ++) {displayLine (i [it]); delay (delayTime);} displayLine (0);} if (c == 'j') {pentru (int i = 0; i <5; i ++) {displayLine (j [i]); delay (delayTime);} displayLine (0);} if (c == 'k') {pentru (int i = 0; i <5; i ++) {displayLine (k [i]); delay (delayTime);} displayLine (0);} if (c == 'l') {pentru (int i = 0; i <5; i ++) {displayLine (l [i]); delay (delayTime);} displayLine (0);} if (c == 'm') {pentru (int i = 0; i <5; i ++) {displayLine (m [i]); delay (delayTime);} displayLine (0);} if (c == 'n') {pentru (int i = 0; i <5; i ++) {displayLine (n [i]); delay (delayTime);} displayLine (0);} if (c == 'o') {pentru (int i = 0; i <5; i ++) {displayLine (o [i]); delay (delayTime);} displayLine (0);} if (c == 'p') {pentru (int i = 0; i <5; i ++) {displayLine (p [i]); delay (delayTime);} displayLine (0);} if (c == 'q') {pentru (int i = 0; i <5; i ++) {displayLine (q [i]); delay (delayTime);} displayLine (0);} if (c == 'r') {pentru (int i = 0; i <5; i ++) {displayLine (r [i]); delay (delayTime);} displayLine (0);} if (c == 's') {pentru (int i = 0; i <5; i ++) {displayLine (s [i]); delay (delayTime);} displayLine (0);} if (c == 't') {pentru (int i = 0; i <5; i ++) {displayLine (t [i]); delay (delayTime);} displayLine (0);} if (c == 'u') {pentru (int i = 0; i <5; i ++) {displayLine (u [i]); delay (delayTime);} displayLine (0);} if (c == 'v') {pentru (int i = 0; i <5; i ++) {displayLine (v [i]); delay (delayTime);} displayLine (0);} if (c == 'w') {pentru (int i = 0; i <5; i ++) {displayLine (w [i]); delay (delayTime);} displayLine (0);} if (c == 'x') {pentru (int i = 0; i <5; i ++) {displayLine (x [i]); delay (delayTime);} displayLine (0);} if (c == 'y') {pentru (int i = 0; i <5; i ++) {displayLine (y [i]); delay (delayTime);} displayLine (0);} if (c == 'z') {pentru (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 == '') {pentru (int i = 0; i <5; i ++) {displayLine (space [i]); delay (delayTime);} displayLine (0);} întârziere (charBreak); } void displayString (char * s) {for (int i = 0; i <= strlen (s); i ++) {displayChar (s [i]); } } void loop () {// Schimbați textul de aici pentru a schimba textul afișat. // Asigurați-vă că păstrați parantezele și ghilimelele. displayString ( ".. salut ..."); întârziere (40); }

Salvați schița și încărcați-o pe placa dvs. Dacă întâmpinați erori, asigurați-vă că aveți placa și portul corect selectate. LED-urile dvs. ar trebui să înceapă să clipească. În caz contrar, verificați toate conexiunile de pe panoul dvs. Numerele întregi declarate la începutul codului determină cât de rapid este afișat textul. Cu cât este mai mare numărul, cu atât mai rapid va trebui să faceți undă dispozitivului. Am descoperit că numerele folosite aici funcționează bine.

Acum, pentru a face un test rapid. Deconectați Arduino de la cablul USB și atașați suportul bateriei la pinii VIN și GND ai arduino-ului dvs.

pov fritz cu bat

Acum că îl puteți muta, încercați cu grijă să plutește LED-urile din fața voastră. Ar trebui să vezi câteva litere care se formează în aer, cu condiția să fie destul de întunecat în jurul tău. Am găsit că a ajutat să îmi setez telefonul pentru a surprinde acest lucru.

test de pâine

Functioneaza! Acum, ca să fie ceva mai permanent.

Fieri la gata!

Așezați-vă placa Arduino, rezistențele și LED-urile pe protoboard astfel:

pus la bord

Desigur, puteți face aspectul atât de compact pe cât doriți, atât timp cât circuitul rămâne același. Asigurați-vă că lăsați cel puțin o linie de contacte protoboard în fiecare parte a Arduino pentru componentele și sursa de alimentare. Dacă sunteți începători în electronică, iată câteva sfaturi grozave pentru tine Electronica pentru începători: 10 abilități pe care trebuie să le cunoștiMulți dintre noi niciodată nu au atins niciodată un fier de lipit - dar a face lucrurile pot fi incredibil de satisfăcătoare. Iată zece dintre cele mai de bază abilități electronice DIY pentru a vă ajuta să începeți. Citeste mai mult .

Vom lipi catodurile cu LED-uri împreună într-o linie pentru a face un teren comun, la fel cum am făcut-o când am făcut-o Matrice LED Îmbunătățiți-vă coroana de Crăciun cu o matrice LED activată în mișcareAceastă coroană de Crăciun DIY folosește o matrice Arduino și LED pentru a produce un ecran uimitor de lumină care vă va impresiona prietenii și familia. Citeste mai mult .

rândul catodilor

Îndoiți fiecare catod astfel încât să se suprapună pe următorul și să le lipiți pentru a crea o linie neîntreruptă. Acum trebuie să ne lipim anodii pe picioarele rezistențelor de lângă ei. Am găsit cea mai ușoară metodă de a face acest lucru a fost să lipiți fiecare picior pe placa respectivă și apoi să plasați fier între ele pentru a încălzi ambele articulații, înainte de a adăuga în cele din urmă mai multă lipit pentru a pune la distanță între lor.

Verificați fiecare conexiune pentru a vedea că este fixată solid, apoi folosiți tăieturi de sârmă pentru a tăia excesul de picioare de la rezistențele și ledurile.

rezistențe la anoduri

Acum să repetăm ​​aceeași sarcină, dar de data asta conectăm celălalt capăt al rezistențelor noastre la picioarele Arduino. Aceasta este cea mai minusculă parte a lipirii. Fiecare rezistor se atașează mult de singur la acul său Arduino sau circuitul nu va funcționa așa cum este destinat. Am făcut mai multe greșeli aici și a trebuit să folosesc fitilă de lipit pentru a îndepărta lipirea nedorită de mai multe ori.

După ce ați făcut toate conexiunile corecte, verificați dublu că niciuna nu se suprapune cu vecinii. Dacă aveți acces la un multimetru aici, puteți utiliza modul de continuitate pentru a verifica dacă fiecare pin are o linie neîntreruptă la rezistența sa. Dacă tocmai ai un multimetru, există un ghid minunat de început în acest articol. 7 abilități tehnice DIY pentru a-ți învăța copiii, pentru că școlile nu vor Citeste mai mult

poză de continuitate

După ce ați verificat fiecare conexiune, tăiați lungimea în exces din picioarele rezistențelor

Adăugarea puterii

Acum executați o bucată de sârmă de la știftul GND al Arduino-ului dvs. într-o gaură lângă care se termină linia dvs. de catode soldate și așezați sârma neagră a suportului de baterie lângă ea.

gnd top fire

Acum a lipit sârmă pe știftul GND, la fel cum am făcut și cu rezistențele, și am lipit ambele fire până la capătul liniei catodurilor pentru a crea un teren comun pentru circuit.

În cele din urmă, atașați un fir la știftul VIN al arduino-ului dvs. și așezați-vă comutatorul între acel fir și pachetul de baterii. Scuze pentru comutatorul acoperit cu lipici fierbinte din această fotografie, a trebuit să demontez mașina finisată pentru a fotografia această etapă!

comuta vin

După ce totul este soldat, introduceți o baterie și apăsăți butonul. Felicitări! Circuitul este făcut. Dacă nu vedeți nimic aprins, verificați cu atenție fiecare articulație de lipit pentru a vedea unde poate exista o pauză sau un scurtcircuit.

împrejmuire

Acum că îl avem de lucru, să-l punem într-o cutie. Aici s-a folosit o cutie de carton pictată, deși puteți face ceva mai permanent folosind o cutie cumpărată într-un magazin hobby sau chiar o cutie de tupperware veche. Pentru un credit geek suplimentar, puteți chiar să vă imprimați 3D pe una dintre aceste imprimante 3D ieftine. 5 imprimante 3D ieftine pe care le puteți cumpăra de aziCâțiva ani în urmă, chiar și cele mai ieftine imprimante 3D erau în mod inconfortabil aproape de nota de 1.000 de dolari - acum puteți obține o imprimantă 3D de calitate cu prețul de până la 400 USD. Citeste mai mult

Reduceți protoboardul la dimensiuni scorând-l și îndepărtând cu atenție părțile de care nu aveți nevoie.

proto gif

Plasați circuitul în interiorul incintei dvs. și marcați unde trebuie să treacă LED-urile și întrerupătorul. Opțional, puteți marca și locul în care conectorul USB de pe placa Arduino îndeplinește muchia, astfel încât să îl puteți conecta pentru a schimba textul fără a deschide caseta. Forați sau tăiați găurile de care aveți nevoie în incintă.

face găuri

Acum adăugați puțin lipici fierbinte pe marginile LED-urilor și lipiți-le în loc. Am lipit o bucată de burete sub circuit, astfel încât să stea bine în cutie. Atașați întrerupătorul la carcasă. Am folosit lipici fierbinte, deși șuruburile sau șuruburile ar face o conexiune mult mai puternică. De asemenea, puteți lipi suportul bateriei pe partea din spate a plăcii de circuit pentru a opri deplasarea în interior când produsul este în uz, dar asigurați-vă că orice contact din metal din carcasă nu atinge niciuna dintre îmbinările dvs. de lipit!

comutator de masura

Jobul a fost terminat!

Închideți-vă incinta și ați terminat! Pentru a schimba textul, atașați cablul USB la placa Arduino și schimbați textul în paranteze după displayString în buclă metodă. Găsiți un loc întunecat și distrați-vă!

mai lent

Ați construit o mașină POV înainte și cunoașteți modalități de îmbunătățire a proiectării? Aveți de gând să construiți unul singur? Povestiți-ne despre proiectul dvs. în comentariile de mai jos, ne-ar plăcea să îl auzim!

Ian Buckley este un jurnalist independent, muzician, interpret și producător video care locuiește la Berlin, Germania. Când nu scrie sau pe scenă, ticăiește cu electronice sau coduri DIY, în speranța de a deveni un om de știință nebun.