Je kunt van alles doen met knipperende LED's en in dit eenvoudige project maken we een klein apparaat dat berichten in de lucht verlicht wanneer je het heen en weer beweegt. Het is eenvoudiger dan je denkt en de totale kosten van onderdelen zijn minder dan $ 5.
Dit project maakt gebruik van een optische illusie die persistentie van het gezichtsvermogen wordt genoemd om tekst in de lucht te laten verschijnen. Je bent dit fenomeen waarschijnlijk tegengekomen als iemand 's nachts snel een verlicht sterretje beweegt. We zullen een Arduino en enkele LED's gebruiken om dit effect na te bootsen. Dit project is eenvoudig te bouwen, met weinig componenten en weinig solderen (maar als je wat tips wilt hebben over hoe je aan de slag kunt met je soldeerbout, lees dan deze handleiding. Leer solderen, met deze eenvoudige tips en projecten Leer solderen met deze eenvoudige tips Tips en projecten Ben je een beetje geïntimideerd door de gedachte aan een heet strijkijzer en gesmolten metaal? Als je wilt gaan werken met elektronica, zul je moeten leren solderen. Laat ons helpen Lees meer).
Je zal nodig hebben
- Arduino (ik heb een $ 2 Nano gebruikt omdat hij compact en goedkoop is, maar elk model zou goed moeten zijn).
- 5x rode leds.
- 5x 220 Ohm weerstanden.
- 1x 9v batterijhouder.
- 1x tuimelschakelaar.
- 1x stuk protoboard.
- Een behuizing voor het eindproduct (ik gebruikte een kleine zwarte kartonnen doos).
Je hebt ook een soldeerbout en wat soldeer nodig om alles samen te voegen.
Hoewel optioneel, kan sommige soldeer lont erg handig zijn in het geval u soldeerfouten maakt. Een breadboard en enkele aansluitdraden zijn ook handig om je circuit te testen.
bedrading
De bedrading kan niet eenvoudiger zijn. Verbind eerst uw Arduino, LED's en weerstanden zoals getoond in dit diagram.
Pennen D2 tot en met D6 gaan respectievelijk naar elke weerstand die aan de positieve anode (lange poot) van elke led is bevestigd. De kathode is verbonden met aarde, die terug verbinding maakt met de Arduino. Als het klaar is, ziet het er ongeveer zo uit:
Dat is het: ons circuit is klaar! We zullen een batterijbehuizing toevoegen en er later naar overschakelen, maar dit is alles wat we nodig hebben om te testen of het werkt.
Code
Sluit nu je Arduino aan op de computer en open de Arduino IDE. Als je nog niet vertrouwd bent met het gebruik van de Arduino en een goede handleiding wilt hebben, dan is deze link Aan de slag met Arduino: een beginnershandleiding Aan de slag met Arduino: een beginnersgids Arduino is een prototype-platform voor open-source elektronica op basis van flexibele, gebruiksvriendelijke om hardware en software te gebruiken. Het is bedoeld voor kunstenaars, ontwerpers, hobbyisten en iedereen die geïnteresseerd is in het maken van interactieve objecten of omgevingen. Meer lezen is handig.
Open een nieuwe schets en kopieer deze code. De code is aangepast vanuit dit project en je kunt het volledig downloaden op deze 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); }
Sla de schets op en upload deze naar je bord. Als je fouten krijgt, zorg er dan voor dat je de juiste board en com port hebt geselecteerd. Uw LED's moeten gaan knipperen. Als dat niet het geval is, controleert u alle verbindingen op uw breadboard. De gehele getallen die aan het begin van de code worden opgegeven, bepalen hoe snel de tekst wordt weergegeven. Hoe hoger het nummer, hoe sneller u het apparaat moet zwaaien. Ik vond dat de nummers die hier werden gebruikt goed werkten.
Nu een snelle test doen. Ontkoppel je Arduino van de USB-kabel en bevestig je batterijhouder aan de VIN- en GND-pinnen van je arduino
Nu je het kunt verplaatsen, probeer je de LED's voorzichtig voor je te draaien. Je zou een aantal letters in de lucht moeten zien op voorwaarde dat het om jou heen donker genoeg is. Ik merkte dat het hielp om mijn telefoon in te stellen om dit vast te leggen.
Het werkt! Nu om het een beetje meer permanent te maken.
Strijkijzers klaar!
Leg je Arduino-bord, weerstanden en LED's zo op je protoboard:
Je kunt de lay-out natuurlijk zo compact maken als je wilt, zolang het circuit hetzelfde blijft. Zorg ervoor dat je ten minste één regel protoboard-contacten achterlaat aan elke kant van je Arduino voor de componenten en voeding. Als je een beginner bent in elektronica, volgen hier enkele geweldige tips voor jou. Beginner's Electronics: 10 vaardigheden die je moet kennen Elektronica van beginners: 10 vaardigheden die je moet weten Velen van ons hebben nog nooit een soldeerbout geraakt - maar dingen maken kan ongelooflijk lonend zijn . Hier zijn tien van de meest elementaire doe-het-zelf-elektronica-vaardigheden om u op weg te helpen. Lees verder .
We zullen de LED-kathoden samen in een lijn solderen om een gemeenschappelijke basis te creëren, net zoals we deden toen we onze LED-matrix maakten. Upgrade Your Christmas-krans met een bewegingsgeactiveerde LED-matrix Upgrade je kerstkrans met een bewegingsgeactiveerde LED-matrix Deze DIY-kerst krans maakt gebruik van een Arduino en LED-matrix voor een verbazingwekkende licht-up display dat indruk zal maken op uw vrienden en familie. Lees verder .
Vouw elke kathode zodanig dat deze de volgende overlapt en soldeer ze om een ononderbroken lijn te maken. Nu moeten we onze anodes solderen aan de benen van de weerstanden ernaast. Ik vond de gemakkelijkste manier om dit te doen was om elk been aan hun respectievelijke pad te solderen en het ijzer ertussen te plaatsen om beide gewrichten te verwarmen, voordat uiteindelijk meer soldeer werd toegevoegd om de ruimte ertussen te overbruggen.
Controleer elke verbinding om te zien of deze stevig is bevestigd en gebruik vervolgens draadsnijders om de overtollige poten af te snijden van de weerstanden en LED's.
Nu om diezelfde taak te herhalen, maar deze keer het andere uiteinde van onze weerstanden met de benen van de Arduino te verbinden. Dit is het meest onhandige deel van het solderen. Elke weerstand hecht veel aan zijn Arduino-pin alleen of het circuit werkt niet zoals het bedoeld is. Ik heb hier verschillende fouten gemaakt en moest soldeer lont gebruiken om ongewenst soldeer meerdere keren te verwijderen.
Nadat u alle juiste verbindingen hebt gemaakt, controleert u of geen van hen overlapt met hun buren. Als u hier toegang hebt tot een multimeter, kunt u de continuïteitsmodus gebruiken om te controleren of elke pin alleen een ononderbroken lijn heeft naar zijn weerstand. Als u zojuist een multimeter heeft, vindt u in dit artikel een goed beginhandboek. 7 DIY Tech Vaardigheden om je kinderen te onderwijzen, omdat scholen geen 7 DIY Techvaardigheden zullen aanleren om je kinderen te onderwijzen, omdat scholen niet meer zullen lezen
Nadat u elke verbinding hebt gecontroleerd, knipt u de overtollige lengte van de benen van de weerstanden af
Kracht toevoegen
Leid nu een stuk draad van de GND-pin van je Arduino naar een gat naast waar je lijn gesoldeerde kathoden eindigt, en plaats de zwarte draad van je batterijhouder ernaast.
Soldeer nu de draad op de GND-pin, op dezelfde manier als met de weerstanden, en soldeer beide draden aan het einde van de lijn van kathodes om een gemeenschappelijke basis voor het circuit te creëren.
Bevestig tenslotte een draad aan de VIN-pin van je arduino en plaats je schakelaar tussen die draad en de batterij. Excuses voor de hete lijm bedekte schakelaar op deze foto, ik moest de voltooide machine demonteren om deze fase te fotograferen!
Als alles is samengesoldeerd, plaatst u een batterij in de batterij en drukt u op de schakelaar. Hartelijk gefeliciteerd! Het circuit is klaar. Als u niets ziet oplichten, controleer dan zorgvuldig elke soldeerverbinding om te zien waar er een breuk of kortsluiting is.
omheining
Nu we het hebben, laten we het in een doos plaatsen. Hier werd een beschilderde kartonnen doos gebruikt, hoewel je iets duurzamer kon maken met een doos die je in een hobbywinkel had gekocht, of zelfs met een oude tupperware-doos. Voor extra geek-credits kun je zelfs 3D printen op een van deze goedkope 3D-printers. 5 goedkope 3D-printers die u vandaag werkelijk kunt kopen 5 goedkope 3D-printers die u vandaag echt kunt kopen Een paar jaar geleden waren zelfs de goedkoopste 3D-printers ongemakkelijk dicht bij het merk van $ 1.000 - nu kunt u een 3D-printer van hoge kwaliteit voor slechts $ 400 krijgen. Lees verder
Snijd je protoboard op maat door het te scoren en voorzichtig delen weg te knippen die je niet nodig hebt.
Plaats uw circuit in uw behuizing en markeer waar de LED's en de schakelaar door moeten prikken. U kunt optioneel ook aangeven waar de USB-connector op het Arduino-bord de rand raakt, zodat u deze kunt aansluiten om de tekst te wijzigen zonder de doos te openen. Boor of snijd de gaten die u nodig hebt in de behuizing.
Voeg nu een beetje hete lijm toe aan de randen van de LED's en plak ze op hun plaats. Ik plakte een stuk spons onder het circuit zodat het goed in de doos zou zitten. Bevestig uw schakelaar aan de zaak. Ik gebruikte hete lijm, hoewel schroeven of bouten een veel sterkere verbinding zouden maken. U kunt de batterijhouder ook aan de achterkant van de printplaat lijmen om te voorkomen dat deze naar binnen beweegt wanneer het item in gebruik is, maar zorg ervoor dat metalen contacten op de behuizing uw soldeerverbindingen niet raken!
Job is gedaan!
Sluit uw behuizing en u bent klaar! Om de tekst te wijzigen, sluit je je USB-kabel aan op het Arduino-bord en verander je de tekst tussen de haakjes na displayString in the loop- methode. Zoek een donkere plek en veel plezier!
Heb je al eerder een POV-machine gebouwd en weet je hoe je het ontwerp kunt verbeteren? Ben je van plan er zelf een te bouwen? Vertel ons over je project in de reacties hieronder, we horen het graag!