Πίνακας περιεχομένων:

Digilog_Bike POV Display: 14 Βήματα
Digilog_Bike POV Display: 14 Βήματα

Βίντεο: Digilog_Bike POV Display: 14 Βήματα

Βίντεο: Digilog_Bike POV Display: 14 Βήματα
Βίντεο: Persistence of Vision Display using Microchip PIC 18F2550 Not Arduino 2024, Ιούλιος
Anonim
Image
Image

Digilog

Digitalηφιακό + Αναλογικό

Το ψηφιακό συναντά το αναλογικό

POV

Persistance Of Visual

Γνωστή και ως οθόνη μετά την εικόνα, εάν ανακινείται με μεγάλη ταχύτητα, η μετά εικόνα παραμένει.

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

Βήμα 1: Έννοια ιδέας

Ιδέα ιδέας
Ιδέα ιδέας

Το POV υλοποιείται συνδέοντας έναν ιμάντα LED στον τροχό ενός ποδηλάτου.

Βήμα 2: Λίστα υλικών

Λίστα υλικών
Λίστα υλικών
Λίστα υλικών
Λίστα υλικών

Υπολογισμός & Εισόδου/Εξόδου

1. Arduino Mega 2560 [arduino] x3

2. Μονάδα αισθητήρα Hall V2 [YwRobot] x3

3. WS2812-5050 Ευέλικτο Neopixel [Adafruit] x3

4. Μαγνητικό (διάμετρος 15mm, πάχος 50mm) x3

5. Arduino Mega Case x3

Γραμμή ρεύματος

5. Μπαταρία λιθίου 5000mAh/3.7V [TheHan] x3

6. Ρυθμιστής AVR 5V & μονάδα φόρτισης & PCM: JBATT-U5-LC [Jcnet] x3

7. Σετ καλωδίων 4Jumper 65PCS/SET [OR0012] x3

Βήμα 3: Εργαλεία

Εργαλεία
Εργαλεία

Δεν χρειάζονται πάρα πολλά εργαλεία, ωστόσο θα χρειαστείτε:

1. Μηχανή συγκόλλησης

2. Ένα συγκολλητικό σίδερο

3. Πιστόλι κόλλας

4. Ρυθμιστής

Βήμα 4: Δημιουργία πλαισίου

Image
Image
Κάνοντας πλαίσιο
Κάνοντας πλαίσιο

Κοπή ποδηλάτου και προσάρτηση της βάσης

Ο μύλος χρησιμοποιήθηκε για να κόψει τους τροχούς ποδηλάτου από το ποδήλατο και συγκολλήθηκαν χαλύβδινες πλάκες για να ασφαλίσουν τους τροχούς.

Βήμα 5: Σχεδιάζοντας τελικές εικόνες και έννοιες

Σκιαγράφηση τελικών εικόνων και εννοιών
Σκιαγράφηση τελικών εικόνων και εννοιών
Σκιαγράφηση τελικών εικόνων και εννοιών
Σκιαγράφηση τελικών εικόνων και εννοιών
Σκιαγράφηση τελικών εικόνων και εννοιών
Σκιαγράφηση τελικών εικόνων και εννοιών

Επιλέξαμε έναν δράκο ως τελική εικόνα. Επειδή το κύμα του δράκου φάνηκε να αντιπροσωπεύεται καλύτερα από το εφέ μετά την εικόνα.

Βήμα 6: Κάντε περικοπή κινούμενης εικόνας

Κάντε περικοπή κινούμενης εικόνας
Κάντε περικοπή κινούμενης εικόνας
Κάντε περικοπή κινούμενης εικόνας
Κάντε περικοπή κινούμενης εικόνας

Χωρίστε την εικόνα σε τρία μέρη που θα χωρέσουν σε κάθε ποδήλατο και διαιρέστε το σύνολο των 12 εικόνων με χρώμα και κίνηση.

Βήμα 7: Προετοιμασία λογισμικού

Λογισμικό Προετοιμασία
Λογισμικό Προετοιμασία
Λογισμικό Προετοιμασία
Λογισμικό Προετοιμασία

Υπομέρος 1. Εγκαταστήστε το Arduino

Λήψη Arduino:

(Εγκαταστήστε για να ταιριάζει στην έκδοση και το σύστημά σας.)

-

Υπομέρος 2. Εγκατάσταση βιβλιοθήκης

*(Εάν θέλετε να εγκαταστήσετε μέσω του Github, επισκεφθείτε τον σύνδεσμο παραπάνω Βιβλιοθήκη Github Arduino:

1. Εκτελέστε το πρόγραμμα Arduino

2. Επιτρέψτε τον σύνδεσμο Πάνω μενού - σκίτσο - συμπεριλάβετε βιβλιοθήκη - προσθέστε βιβλιοθήκη. Zip

3. Θα πρέπει να επιλέξετε το αρχείο. Zip που έχει ήδη εγκαταστήσει τη βιβλιοθήκη github4

*(Εάν θέλετε να χρησιμοποιήσετε τις υπηρεσίες προγράμματος Arduino)

1. Εκτελέστε προγράμματα Arduino

2. Επιτρέψτε τον σύνδεσμο Κορυφαίο μενού - σκίτσο - περιλαμβάνει βιβλιοθήκη - βιβλιοθήκη διαχείρισης - αναζήτηση "Adafruit neopixel" - μπορείτε να δείτε το "Adafruit Neopixel by Adafruit"

3. Εγκατάσταση και ενημέρωση βιβλιοθήκης

-

Υπομέρος 3. Εγκατάσταση προγράμματος μετατροπής

1. Εγκατάσταση προγράμματος περιστροφικού κύκλου (R. C. P):

2. Πρέπει να διαβάσετε ένα αρχείο README

Βήμα 8: Δημιουργία τροφοδοσίας υλικού

Κατασκευή τροφοδοσίας υλικού
Κατασκευή τροφοδοσίας υλικού
Κατασκευή τροφοδοσίας υλικού
Κατασκευή τροφοδοσίας υλικού
Κατασκευή τροφοδοσίας υλικού
Κατασκευή τροφοδοσίας υλικού

*Αυτός είναι ο τρόπος παροχής τάσης Arduino 5V μέσω της μπαταρίας. Ακολουθήστε τα παρακάτω βήματα.

1. Συνδέστε τη μπαταρία λιθίου και τη μονάδα φόρτισης JBATT. (Για αναφορά, η μονάδα JBATT διαθέτει ενσωματωμένο διακόπτη τροφοδοσίας.)

2. Συνδέστε το τερματικό εξόδου του JBATT στο τερματικό Vin του Arduino και το τερματικό Ground.

3. Συνδέστε τη θύρα USB Micro 5pin στη θύρα φόρτισης για να ελέγξετε εάν το προϊόν λειτουργεί σωστά.

4. Στη συνέχεια, γυρίστε τον ενσωματωμένο διακόπτη στη θέση ON.

5. Εάν ανάψει το κόκκινο led και ανάψει το πράσινο led στο Arduino, η διαμόρφωση της βαθμίδας ισχύος του προϊόντος ολοκληρώνεται κανονικά.

Βήμα 9: Δημιουργία εισόδου/εξόδου υλικού & Έλεγχος εξόδου (NeoPixel Working)

Πραγματοποίηση εισόδου/εξόδου υλικού και έλεγχος εξόδου (NeoPixel που λειτουργεί)
Πραγματοποίηση εισόδου/εξόδου υλικού και έλεγχος εξόδου (NeoPixel που λειτουργεί)
Πραγματοποίηση εισόδου/εξόδου υλικού και έλεγχος εξόδου (NeoPixel που λειτουργεί)
Πραγματοποίηση εισόδου/εξόδου υλικού και έλεγχος εξόδου (NeoPixel που λειτουργεί)
Πραγματοποίηση εισόδου/εξόδου υλικού και έλεγχος εξόδου (NeoPixel που λειτουργεί)
Πραγματοποίηση εισόδου/εξόδου υλικού και έλεγχος εξόδου (NeoPixel που λειτουργεί)

*Αυτό το μέρος αποτελείται από αισθητήρα και στάδιο εξόδου

1. Συνδέστε τους αισθητήρες Arduino και Hall. Η καρφίτσα δεδομένων συνδέεται με τον ακροδέκτη Arduino 2.

2. Όταν το Arduino ενεργοποιηθεί και ο μαγνήτης βρίσκεται σε στενή επαφή με τον αισθητήρα Hall, το κόκκινο led θα ανάψει.

3. Συνδέστε το Arduino και το Neopixel. Χρησιμοποιούνται μόνο 30 Neopixel.

4. Συνδέστε τον πείρο δεδομένων με τον ακροδέκτη Arduino 6.

5. Συνδέστε το Arduino και κατεβάστε το καλώδιο στη θύρα usb του υπολογιστή σας και εκτελέστε το Arduino στον υπολογιστή σας.

6. Επιλέξτε Εργαλείο - πίνακας - "Arduino / Genuino Mega ή Mega 2560" από την επάνω γραμμή μενού του προγράμματος Arduino.

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

8. Επικολλήστε τον παρακάτω κώδικα και κάντε κλικ στο κουμπί Μεταφόρτωση επάνω αριστερά. (Στη συνέχεια, όλες οι μεταφορτώσεις προγράμματος ακολουθούν τα βήματα 5-8.)

9. Η διαμόρφωση ολοκληρώνεται όταν ενεργοποιηθούν και τα 30 neoled pixel.

#1 συμπεριλαμβανομένου του αρχείου κεφαλίδας και της προεπεξεργασίας

Πρώτα πρέπει να φέρουμε τη βιβλιοθήκη Adafruit_NeoPixel που είναι σε θέση να ενεργεί Neopixels.

Η βιβλιοθήκη μπορεί να χρησιμοποιηθεί με τη δήλωση αντικειμένων.

Η κλάση Adafruit_NeoPixel μπορεί να εισαγάγει 3 παραμέτρους δημόσια.

Η πρώτη παράμετρος είναι ο αριθμός των LED.

δευτερόλεπτα παράμετρος είναι ο αριθμός pin που συνδέεται με την ψηφιακή είσοδο Neopixel.

Τρίτη παράμετρος είναι η εισαγωγή επιλογών σύμφωνα με τα χαρακτηριστικά του προϊόντος. Το τρίχρωμο προϊόν WS2812b χρησιμοποιεί την είσοδο 'NEO_GRB'

#περιλαμβάνω

#define PIN 6 Adafruit_NeoPixel strip = Adafruit_Neopixel (30, PIN, NEO_GRB+NEO_KHZ800);

#2 ρύθμιση

Στο τμήμα εγκατάστασης, προετοιμάστε το αντικείμενο και προετοιμάστε το για χρήση.

Το 'Adafruit_Neopixle_Object.begin ()' θέτει όλα τα LED να απενεργοποιούνται.

Έξοδος 'Adafruit_Neopixle_Object.show ()' με τη φωτεινότητα ρυθμισμένη στο LED.

void setup () {

strip.begin (); strip.show (); }

#3 κύριος βρόχος

Η δράση του κύριου βρόχου χρησιμοποιεί ένα βρόχο for για διαδοχική έξοδο (0,1 δευτερόλεπτα) των λυχνιών LED σε λευκό χρώμα

void loop () {

για (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, 255, 255, 255); strip.show (); καθυστέρηση (100)? }}

Βήμα 10: Συναρμολόγηση και προσάρτηση στον τροχό

Συναρμολόγηση και προσάρτηση στον τροχό
Συναρμολόγηση και προσάρτηση στον τροχό
Συναρμολόγηση και προσάρτηση στον τροχό
Συναρμολόγηση και προσάρτηση στον τροχό

1. Συνδέστε Neopixels. (Δώστε προσοχή στον έλεγχο αριθμού καρφιτσών)

2. Συνδέστε τον αισθητήρα Hall. (Ανατρέξτε στο Βήμα.9)

3. Συνδέστε το πλαίσιο στο Arduino ανάμεσα στα ποδήλατα. (Συνδέστε τη θήκη Arduino παράλληλα με το πλαίσιο του ποδηλάτου).

4. Τοποθετήστε το Arduino που είναι συνδεδεμένο στο Neopixel. (Προσοχή γιατί το πιστόλι κόλλας είναι ζεστό).

5. Τοποθετήστε τον συνδεδεμένο αισθητήρα Hall στο Arduino, (Ασφαλίστε τη σύνδεση του καλωδίου ώστε να μην πέσει ο αισθητήρας Hall).

6. Συγκόλληση για σύνδεση μπαταρίας. (Προσοχή όταν κολλάτε).

7. Στερεώστε το με ένα πιστόλι κόλλας. (Συνδέστε τη μονάδα φόρτισης στην μπαταρία για να εξασφαλίσετε χώρο).

8. Συνδέστε κάθε γραμμή πριν συνδεθείτε στο Arduino, 9. Συνδέστε σύμφωνα με κάθε αριθμό ακίδων. (Συνδέστε τις γραμμές μετάβασης για τη μονάδα φόρτισης χωρίς να τις μπερδέψετε).

10. Τελειώστε με ένα πιστόλι κόλλας μία φορά, (Προσέξτε να μην πέσετε).

Βήμα 11: Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)

Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)
Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)
Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)
Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)
Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)
Έλεγχος INPUT (Δεδομένα αισθητήρα HALL)

*Ελέγξτε τον κωδικό λογισμικού για να δείτε αν ο αισθητήρας λειτουργεί.

1. Επικολλήστε και ανεβάστε τον παρακάτω κώδικα.

2. Κάντε κλικ στο κουμπί Serial Monitor στην επάνω δεξιά γωνία του Arduino.

3. Όταν ο μαγνήτης βρίσκεται σε επαφή με τον αισθητήρα Hall για περισσότερο από 1 δευτερόλεπτο, η διαμόρφωση ολοκληρώνεται όταν εμφανιστεί η λέξη "μαγνητική επαφή" στη σειριακή οθόνη.

------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ #1 Ορίστε τον αριθμό pin και τη ρύθμιση

Ο πρώτος αριθμός ακίδων διαμόρφωσης που χρησιμοποιεί τον αισθητήρα Hall και ορίζει τον αριθμό pin ως θύρα μόνο για είσοδο.

Ρυθμίστε την επικοινωνία για να ελέγξετε τα δεδομένα του αισθητήρα Hall στη σειριακή οθόνη.

#define HALL 2

void setup () {pinMode (HALL, INPUT); Serial.begin (9600); }

#2 κύριος βρόχος

Ελέγξτε τα δεδομένα του αισθητήρα Hall σε διαστήματα 0,1 δευτερολέπτων.

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

void loop () {

if (digitalRead (HALL)) {Serial.println ("μαγνητική επαφή"); } καθυστέρηση (100); }

Βήμα 12: Αλγόριθμος κωδικοποίησης

*Δημιουργήστε λογική και κωδικοποίηση για τον έλεγχο Neopixels με βάση τις τιμές των αισθητήρων.

1. Επικολλήστε και ανεβάστε τον παρακάτω κώδικα.

2. Είναι φυσιολογικό η εικόνα να μην εμφανίζεται σωστά επειδή δεν παράγεται καρέ. Αλλά μπορείτε να δείτε ότι λειτουργεί χοντρικά.

3. Αγγίξτε γρήγορα και αφήστε τον αισθητήρα Hall και τον μαγνήτη μέσα σε 1 δευτερόλεπτο. Επαναλάβετε αυτή τη λειτουργία περίπου 10 φορές.

4. Η διαμόρφωση ολοκληρώνεται όταν τα χρώματα των Neopixels αλλάζουν τακτικά.

#1 Συμπεριλαμβανομένων αρχείων κεφαλίδας και προεπεξεργασίας

Πρώτον, πρέπει να καταλάβουμε ότι η μνήμη του Arduino Mega δεν είναι αρκετά μεγάλη για να χωρέσει ένα αρχείο εικόνας.

Επομένως, το αρχείο κεφαλίδας 'avr/pgmspace' χρησιμοποιείται για τη χρήση διαφορετικού χώρου μνήμης.

Για να χρησιμοποιήσετε Neopixels, δηλώνετε ένα αντικείμενο και μια διαμόρφωση έναν αριθμό εισόδου I/O.

Ο πίνακας εικόνας είναι πολύ μεγάλος για κωδικοποίηση, οπότε κατεβάστε και επικολλήστε τα συνημμένα αρχεία.

#περιλαμβάνω

#include #define PIN 6 #define NUMPIXELS 30 #define HALL 2 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); // επικόλληση πίνακα στο 'image_array_1.txt' // "'image_array_2.txt' //" 'image_array_3.txt' // "'image_array_4.txt'

#2 Παγκόσμια μεταβλητή & ρύθμιση

Ορίστε μια καθολική μεταβλητή.

Το κύριο πράγμα είναι να ρυθμίσετε τη φωτεινότητα, καθορίζει τον κύκλο ζωής του προϊόντος.

int count = 0;

διπλό v = 0; διπλό last_v = 0; διπλός χρονοδιακόπτης = micros (); διπλό ex_timer = micros (); διπλό last_timer = micros (); int deg = 36; int pix = 35; int rgb = 3; διπλό q_arr [2] = {0, 0}; int HALL_COUNT = 0; διπλό VELO? διπλός χρόνος επεξεργασίας = micros (); void setup () {strip.setBrightness (255); strip.begin (); strip.show (); Serial.begin (230400); }

#3 κύριος βρόχος - τμήμα εξόδου έκφρασης εικόνας

Αυτός ο κωδικός είναι μια δήλωση υπό όρους σχετικά με τον τρόπο εξόδου του χρόνου περιστροφής του τροχού κατά ανάλυση.

Αυτό το μέρος χρησιμοποιεί τον κύκλο περιστροφής του τροχού ποδηλάτου μια φορά ως μια πολύ σημαντική παράμετρο.

Επίσης, είναι σημαντικό να διαβάζετε δεδομένα πίνακα εικόνων από τη μνήμη.

void loop () {

if ((count (ex_timer / 120.0) - (micros () - processing_timer))) {timer = micros (); if (VELO> 360000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_1 [count] [1])), pgm_read_byte (& (image_1 [count] [2])), pgm_read_byte (& (image_1 [count] [0])))); } strip.show (); } else if (VELO 264000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_2 [count] [1])), pgm_read_byte (& (image_2 [count] [2])), pgm_read_byte (& (image_2 [count] [0])))); } strip.show (); } else if (VELO 204000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_3 [count] [1])), pgm_read_byte (& (image_3 [count] [2])), pgm_read_byte (& (image_3 [count] [0])))); } strip.show (); } else if (VELO <= 204000) {for (int i = 0 + 5; i = 120)) {for (int i = 0 + 5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Χρώμα (0, 0, 0)); } strip.show (); }

#4 κύριος βρόχος - έλεγχος και ανίχνευση χρόνου επεξεργασίας και κύκλου

Αυτό είναι το πιο σημαντικό μέρος ολόκληρου του συστήματος.

Αρχικά, ελέγξτε τον χρόνο που απαιτείται για την εκτέλεση ολόκληρου του κώδικα και ρυθμίστε τον χρόνο εξόδου LED ανά κύκλο.

Ο χρόνος που ανιχνεύεται κάθε φορά που περιστρέφεται ο τροχός προβλέπει τον χρόνο του επόμενου κύκλου.

Η επιτάχυνση μπορεί να εκτιμηθεί αφαιρώντας τον τελευταίο μετρημένο χρόνο κύκλου από τον έγκαιρο μετρημένο χρόνο κύκλου.

Το σύστημα υπολογίζει τον χρόνο επεξεργασίας και την επιτάχυνση για να υπολογίσει πόσο χρόνο ανάβουν συνεχώς τα LED.

processing_timer = micros ();

εάν ((digitalRead (HALL) == HIGH) && (HALL_COUNT == 1)) {VELO = v; v = micros () - last_timer; ex_timer = q_arr [0] - q_arr [1] + v; last_timer = micros (); q_arr [0] = q_arr [1]; q_arr [1] = v; μετρά = 0; HALL_COUNT = 0; } else if (digitalRead (HALL) == LOW) {HALL_COUNT = 1; }}

Βήμα 13: Χρήση Λογισμικού

Χρήση Λογισμικού
Χρήση Λογισμικού
Χρήση Λογισμικού
Χρήση Λογισμικού
Χρήση Λογισμικού
Χρήση Λογισμικού

*Χρησιμοποιήστε λογισμικό για να μετατρέψετε την εικόνα και να εισαγάγετε δεδομένα πορείας στον κώδικα

1. Εισάγετε την εικόνα από το παραπάνω βήμα στο φάκελο εικόνας στο φάκελο R. C. P που είναι εγκατεστημένος στο βήμα προετοιμασίας.

- Ο τρόπος τοποθέτησης της εικόνας είναι ο εξής.- Μετονομάστε 4 κινούμενες εικόνες του προϊόντος # 1 με σειρά 1.png, 2.png, 3-p.webp

2. Εκτελέστε το αρχείο Ver.5.exe.

3. Βεβαιωθείτε ότι 12 αρχεία pro_1_code_1.txt σε pro_3_code_4.txt δημιουργούνται στο φάκελο R. C. P.

4. Εάν δεν έχει δημιουργηθεί, αλλάξτε τα περιεχόμενα του config.txt ως το ακόλουθο αρχείο διαμόρφωσης.

5. Μόλις δημιουργηθεί το αρχείο, αντιγράψτε ολόκληρο το περιεχόμενο από το αρχείο pro_1_code_1.txt και επικολλήστε το στο τμήμα που εμφανίζεται στον παρακάτω κώδικα.

6. Προσθέστε το περιεχόμενο pro_1_code_2.txt, pro_1_code_3.txt και pro_1_code_4.txt στο επισημασμένο τμήμα στην 5η σειρά.

7. Αναφερόμενοι στα 5 και 6, ο pro_2_code…, pro_3_code συμπληρώνει τον κώδικα με τον ίδιο τρόπο.

Βήμα 14: Ολοκληρώστε

Πλήρης
Πλήρης
Πλήρης
Πλήρης
Πλήρης
Πλήρης

Ολοκληρώθηκε η παραγωγή ενός POV που δημιουργεί μία εικόνα με τρεις τροχούς.

Συνιστάται: