Κάντε έναν POV LED Air Writer για κάτω από $ 5

Σε αυτό το απλό έργο, θα φτιάξουμε μια μικρή συσκευή που θα ανάβει τα μηνύματα στον αέρα όταν το κυματίζει. Είναι πιο εύκολο από ό, τι νομίζετε και το συνολικό κόστος είναι κάτω από $ 5.

Σε αυτό το απλό έργο, θα φτιάξουμε μια μικρή συσκευή που θα ανάβει τα μηνύματα στον αέρα όταν το κυματίζει.  Είναι πιο εύκολο από ό, τι νομίζετε και το συνολικό κόστος είναι κάτω από $ 5.
Διαφήμιση

Μπορείτε να κάνετε όλα τα πράγματα με LED που αναβοσβήνουν και σε αυτό το απλό έργο, θα φτιάξουμε μια μικρή συσκευή που θα ανάβει τα μηνύματα στον αέρα όταν τα κυματίζει πίσω και πίσω. Είναι πιο εύκολο από ό, τι νομίζετε και το συνολικό κόστος των ανταλλακτικών είναι κάτω από $ 5.

Αυτό το έργο χρησιμοποιεί μια οπτική ψευδαίσθηση που ονομάζεται επιμονή της όρασης για να εμφανιστεί το κείμενο στον αέρα. Πιθανότατα συναντήσατε αυτό το φαινόμενο, όταν κάποιος μετακινεί γρήγορα ένα νυχτερινό σπινθήρα. Θα χρησιμοποιήσουμε ένα Arduino και μερικά LED για να μιμηθούμε αυτό το αποτέλεσμα. Αυτό το έργο είναι απλό να κατασκευαστεί, με λίγα εξαρτήματα και λίγη συγκόλληση (αν και αν θέλετε μερικές συμβουλές για να ξεκινήσετε με το συγκολλητικό σίδερο, ελέγξτε τον οδηγό Μάθετε πώς να κολλήσετε με αυτές τις απλές συμβουλές και σχέδια Μάθετε πώς να κολλήσετε με αυτά τα απλά Συμβουλές και Έργα Είστε λίγο εκφοβισμένοι από τη σκέψη ενός ζεστού σιδήρου και λιωμένου μετάλλου; Αν θέλετε να αρχίσετε να εργάζεστε με ηλεκτρονικά, θα πρέπει να μάθετε να κολλήσετε.

Θα χρειαστείτε

  • Arduino (χρησιμοποίησα ένα $ 2 Nano επειδή είναι συμπαγές και φθηνό, αλλά οποιοδήποτε μοντέλο θα πρέπει να είναι εντάξει).
  • 5x κόκκινα LED.
  • 5x 220 Ohm αντιστάσεις.
  • Υποδοχή μπαταρίας 1x 9v.
  • 1x Κλείδωμα.
  • 1 τεμάχιο protoboard.
  • Μια θήκη για το τελικό προϊόν (χρησιμοποίησα ένα μικρό κουτί από χαρτόνι βαμμένο μαύρο).

Θα χρειαστείτε επίσης ένα συγκολλητικό σίδερο και κάποιο συγκολλητικό για να το βάλετε όλοι μαζί.

Ενώ είναι προαιρετικό, κάποιο φιτίλιο συγκόλλησης μπορεί να έρθει πολύ χρήσιμο σε περίπτωση που κάνετε τυχόν σφάλματα συγκόλλησης. Ένα breadboard και μερικά καλώδια σύνδεσης είναι επίσης χρήσιμα για να ελέγξετε το κύκλωμά σας.

Απαιτούμενα στοιχεία για το έργο

Καλωδίωση

Η καλωδίωση δεν θα μπορούσε να είναι απλούστερη. Αρχικά, συνδέστε τα Arduino, τις λυχνίες LED και τις αντιστάσεις σας, όπως φαίνεται σε αυτό το διάγραμμα.

pov fritzing

Οι ακίδες D2 έως D6 πηγαίνουν σε κάθε αντίσταση αντιστοίχως, οι οποίες συνδέονται με τη θετική άνοδο (μακρύ σκέλος) κάθε LED. Η κάθοδος συνδέεται με το έδαφος, που συνδέεται πίσω με το Arduino. Όταν γίνει, θα πρέπει να φαίνεται κάτι τέτοιο:

ευ

Αυτό είναι: το κύκλωμά μας γίνεται! Θα προσθέσουμε μια θήκη μπαταρίας και ένα διακόπτη σε αυτό αργότερα, αλλά αυτό είναι το μόνο που πρέπει να ελέγξουμε αν λειτουργεί.

Κώδικας

Τώρα συνδέστε το Arduino σας στον υπολογιστή και ανοίξτε το ID του Arduino. Εάν είστε νέος στη χρήση του Arduino και θέλετε έναν καλό οδηγό για να προχωρήσετε, αυτός ο σύνδεσμος Ξεκινώντας με το Arduino: Οδηγός για αρχάριους Ξεκινώντας με το Arduino: Ένας οδηγός για αρχάριους Το Arduino είναι μια πλατφόρμα πρωτότυπου ηλεκτρονικών ανοικτών πηγών βασισμένη σε ευέλικτες, να χρησιμοποιούν υλικό και λογισμικό. Πρόκειται για καλλιτέχνες, σχεδιαστές, χομπίστες και όσους ενδιαφέρονται να δημιουργήσουν διαδραστικά αντικείμενα ή περιβάλλοντα. Διαβάστε περισσότερα θα είναι χρήσιμη.

Ανοίξτε ένα νέο σκίτσο και αντιγράψτε αυτόν τον κώδικα. Ο κώδικας τροποποιήθηκε από αυτό το έργο και μπορείτε να τον κατεβάσετε πλήρως σε αυτό το 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); } 

Αποθηκεύστε το σκίτσο και μεταφορτώστε το στο σκάφος σας. Εάν εμφανίσετε τυχόν σφάλματα, βεβαιωθείτε ότι έχετε επιλέξει τη σωστή πλακέτα και τη θύρα com. Τα LED σας θα πρέπει να αρχίσουν να τρεμοπαίζουν. Εάν δεν το κάνουν, ελέγξτε όλες τις συνδέσεις σας στο breadboard σας. Οι ακέραιοι που δηλώνονται στην αρχή του κώδικα καθορίζουν πόσο γρήγορα εμφανίζεται το κείμενο. Όσο μεγαλύτερος είναι ο αριθμός, τόσο πιο γρήγορα θα χρειαστεί να κάνετε κύμα της συσκευής. Βρήκα ότι οι αριθμοί που χρησιμοποιούνται εδώ λειτουργούσαν καλά.

Τώρα για να κάνετε μια γρήγορη δοκιμή. Αποσυνδέστε το Arduino από το καλώδιο USB και τοποθετήστε την υποδοχή της μπαταρίας στις καρφίτσες VIN και GND του arduino

pov fritz με το batt

Τώρα που μπορείτε να το μετακινήσετε, δοκιμάστε προσεκτικά τα LED που βρίσκονται μπροστά σας. Θα πρέπει να δείτε μερικά γράμματα που σχηματίζονται στον αέρα, αρκεί να είναι αρκετά σκοτεινό γύρω σας. Βρήκα ότι βοήθησε να θέσει το τηλέφωνό μου για να συλλάβει αυτό.

δοκιμή ψωμιού

Δουλεύει! Τώρα για να γίνει λίγο πιο μόνιμη.

Σίδερα στο Ready!

Τοποθετήστε τον πίνακα Arduino, τις αντιστάσεις και τις λυχνίες LED στο πρωτόπλοιο σας όπως αυτό:

που βρίσκονται επί του σκάφους

Μπορείτε φυσικά να κάνετε τη διάταξη τόσο συμπαγή όσο επιθυμείτε, όσο το κύκλωμα παραμένει το ίδιο. Σιγουρευτείτε ότι αφήνετε τουλάχιστον μία γραμμή επαφών protoboard από κάθε πλευρά του Arduino για τα εξαρτήματα και το τροφοδοτικό. Αν είστε αρχάριος στην ηλεκτρονική, εδώ είναι μερικές καλές συμβουλές για σας Ηλεκτρονικά για αρχάριους: 10 Δεξιότητες που πρέπει να ξέρετε Ηλεκτρονικά για αρχάριους: 10 δεξιότητες που πρέπει να ξέρετε Πολλοί από εμάς δεν έχουν αγγίξει ποτέ ούτε ένα συγκολλητικό σίδερο - αλλά τα πράγματα μπορούν απίστευτα να επιβραβεύουν . Εδώ είναι δέκα από τις πιο βασικές δεξιότητες ηλεκτρονικών ειδών DIY για να σας βοηθήσουν να ξεκινήσετε. Διαβάστε περισσότερα .

Θα είμαστε συγκολλητικές οι κάθοδοι LED μαζί σε μια γραμμή για να κάνουμε ένα κοινό έδαφος, όπως κάναμε όταν κάναμε το LED matrix μας Αναβαθμίστε το Χριστουγεννιάτικο Στεφάνι σας με ένα κινητό ενεργοποιημένο Matrix LED Αναβαθμίστε το Στεφάνι σας Χριστουγέννων με ένα Motion Activated LED Matrix Αυτό το DIY Χριστούγεννα το στεφάνι χρησιμοποιεί ένα πίνακα Arduino και LED για να παράγει μια εκπληκτική οθόνη φωτισμού που θα εντυπωσιάσει τους φίλους και την οικογένειά σας. Διαβάστε περισσότερα .

καθόδους σειρών

Διπλώστε κάθε κάθοδο έτσι ώστε να επικαλύπτει την επόμενη και να τα συγκολλήσετε για να δημιουργήσετε μια αδιάσπαστη γραμμή. Τώρα πρέπει να κολλήσουμε τις ανόδους μας στα πόδια των αντιστάσεων δίπλα τους. Βρήκα ότι ο ευκολότερος τρόπος για να γίνει αυτό ήταν να κολλήσει κάθε πόδι στο αντίστοιχο μαξιλάρι τους και στη συνέχεια τοποθετήστε το σίδερο μεταξύ τους για να θερμάνουν και τις δύο αρθρώσεις, πριν προσθέσετε τελικά περισσότερη συγκόλληση για να γεφυρώσετε το χάσμα μεταξύ τους.

Ελέγξτε κάθε σύνδεση για να δείτε ότι είναι στερεά συνδεδεμένη και, στη συνέχεια, χρησιμοποιήστε κόπτες για να κόψετε τα υπερβολικά πόδια από τις αντιστάσεις και τις λυχνίες LED.

αντιστάσεις στις ανόδους

Τώρα επαναλάβετε το ίδιο έργο, αλλά αυτή τη φορά συνδέοντας το άλλο άκρο των αντιστάσεων μας στα πόδια του Arduino. Αυτό είναι το πιο άσχημο μέρος της συγκόλλησης. Κάθε αντίσταση προσκολλάται πολύ στον πείρο του Arduino μόνο ή το κύκλωμα δεν θα λειτουργήσει με τον τρόπο που προορίζεται. Έκανα πολλά λάθη εδώ και έπρεπε να χρησιμοποιήσω το φυτίλι για να αφαιρέσω την ανεπιθύμητη συγκόλληση πολλές φορές.

Μόλις κάνετε όλες τις σωστές συνδέσεις, ελέγξτε διπλά ότι καμία από αυτές δεν επικαλύπτεται με τους γείτονές τους. Εάν έχετε πρόσβαση σε ένα πολυμέτρο εδώ, μπορείτε να χρησιμοποιήσετε τη λειτουργία συνέχειας για να ελέγξετε ότι κάθε ακροδέκτης έχει μόνο μια αδιάσπαστη γραμμή στην αντίσταση της. Αν έχετε μόλις ένα πολύμετρο, υπάρχει ένας πολύ καλός οδηγός για να ξεκινήσετε σε αυτό το άρθρο. 7 DIY Τεχνικές δεξιότητες για να διδάξετε τα παιδιά σας, επειδή τα σχολεία δεν θα έχουν 7 τέτοιες τεχνικές δεξιότητες για να διδάξουν τα παιδιά σας, επειδή τα σχολεία δεν θα διαβάσουν περισσότερα

εικόνα συνέχειας

Μόλις ελέγξετε κάθε σύνδεση, κόψτε το επιπλέον μήκος από τα πόδια των αντιστάσεων

Προσθήκη ενέργειας

Τώρα εκτελέστε ένα κομμάτι σύρμα από τον πείρο GND του Arduino σας σε μια τρύπα δίπλα από την άκρη της γραμμής σας συγκολλημένων καθόδων και τοποθετήστε το μαύρο σύρμα της θήκης της μπαταρίας σας δίπλα.

gnd καλώδια πάνω

Τώρα κολλήστε το καλώδιο στην ακίδα GND, όπως ακριβώς κάναμε με τις αντιστάσεις και στερεώστε τα δύο καλώδια στο τέλος της γραμμής των καθόδων για να δημιουργήσετε ένα κοινό έδαφος για το κύκλωμα.

Τέλος, συνδέστε ένα καλώδιο στην καρφίτσα VIN του arduino σας και τοποθετήστε το διακόπτη μεταξύ του σύρματος και της μπαταρίας. Ζητήστε συγνώμη για τον διακόπτη που καλύπτεται με θερμή κόλλα σε αυτή τη φωτογραφία, έπρεπε να αποσυναρμολογήσω την τελική μηχανή για να φωτογραφίσετε αυτό το στάδιο!

διακόπτης vin

Μόλις όλα αυτά είναι συγκολλημένα μαζί, βάλτε μια μπαταρία μέσα και χτυπήστε το διακόπτη. Συγχαρητήρια! Το κύκλωμα γίνεται. Εάν δεν βλέπετε τίποτα να φωτίζεται, ελέγξτε προσεκτικά κάθε κόλλα συγκόλλησης για να δείτε πού μπορεί να υπάρχει σπάσιμο ή βραχυκύκλωμα.

Περίφραξη

Τώρα που το έχουμε λειτουργήσει, ας το βάλουμε σε κουτί. Εδώ χρησιμοποιήθηκε ένα ζωγραφισμένο κουτί από χαρτόνι, αν και θα μπορούσατε να κάνετε κάτι πιο μόνιμο χρησιμοποιώντας ένα κουτί που αγοράστηκε σε ένα κατάστημα χόμπι, ή ακόμα και ένα παλιό κιβώτιο tupperware. Για επιπλέον πιστεύω, θα μπορούσατε ακόμη και να εκτυπώσετε 3D το δικό σας σε έναν από αυτούς τους φτηνούς 3D εκτυπωτές. 5 Φτηνές 3D Εκτυπωτές Μπορείτε πραγματικά να αγοράσετε σήμερα 5 Φτηνές 3D εκτυπωτές που μπορείτε να αγοράσετε σήμερα Σήμερα Λίγα χρόνια πίσω, ακόμη και οι φθηνότερες εκτυπωτές 3D ήταν άβολα κοντά στο σήμα 1.000 $ - τώρα μπορείτε να πάρετε έναν ποιοτικό 3D εκτυπωτή για τόσο χαμηλά όσο $ 400. Διαβάστε περισσότερα

Μειώστε το πρωτόμπαρ σας σε μέγεθος βαθμολογώντας το και προσεκτικά αποσπάστε τα μέρη που δεν χρειάζεστε.

proto gif

Τοποθετήστε το κύκλωμά σας μέσα στο περίβλημα σας και σημειώστε πού πρέπει να περάσουν τα LED και ο διακόπτης. Μπορείτε επίσης να επισημάνετε όπου η υποδοχή USB του πίνακα Arduino ανταποκρίνεται στην άκρη ώστε να μπορείτε να την συνδέσετε για να αλλάξετε το κείμενο χωρίς να ανοίξετε το κουτί. Τρυπήστε ή κόψτε τις τρύπες που χρειάζεστε στο περίβλημα.

κάνει τρύπες

Τώρα προσθέστε μια μικρή ζεστή κόλλα στις άκρες των λυχνιών LED και στερεώστε τα στη θέση τους. Έχω κολλήσει ένα κομμάτι σφουγγάρι κάτω από το κύκλωμα, έτσι ώστε να καθίσει σφιχτά στο κουτί. Συνδέστε το διακόπτη στη θήκη. Χρησιμοποίησα θερμή κόλλα, αν και οι βίδες ή τα μπουλόνια θα έκαναν μια πολύ ισχυρότερη σύνδεση. Μπορείτε επίσης να κολλήσετε τη βάση μπαταρίας στο πίσω μέρος της πλακέτας κυκλώματος για να σταματήσετε να κινείται γύρω από το εσωτερικό όταν το στοιχείο είναι σε χρήση, αλλά βεβαιωθείτε ότι οι μεταλλικές επαφές της θήκης δεν έρχονται σε επαφή με κανένα από τα αρθρώματα συγκόλλησης!

διακόπτης μέτρησης

Η εργασία ολοκληρώθηκε!

Κλείστε το περίβλημα σας, και τελειώσατε! Για να αλλάξετε το κείμενο, συνδέστε το καλώδιο USB στην πλακέτα Arduino και αλλάξτε το κείμενο μέσα στις αγκύλες μετά το displayString στη μέθοδο του βρόχου . Βρείτε ένα σκοτεινό μέρος και διασκεδάστε!

πιο αργός ρυθμός

Έχετε οικοδομήσει μια μηχανή POV πριν και να μάθουν τρόπους για να βελτιωθεί στο σχέδιο; Σχεδιάζετε να κατασκευάσετε τον εαυτό σας; Πείτε μας για το έργο σας στα σχόλια παρακάτω, θα θέλαμε να το ακούσουμε!

In this article