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

Απλός αισθητήρας χρώματος DIY από το Magicbit: 5 βήματα
Απλός αισθητήρας χρώματος DIY από το Magicbit: 5 βήματα

Βίντεο: Απλός αισθητήρας χρώματος DIY από το Magicbit: 5 βήματα

Βίντεο: Απλός αισθητήρας χρώματος DIY από το Magicbit: 5 βήματα
Βίντεο: Αισθητήρες Παρκαρισματος τοποθετηση (Αναλυτικά tips) !!!!#Lesson 9 2024, Νοέμβριος
Anonim
Image
Image

Σε αυτό το σεμινάριο θα μάθουμε πώς να φτιάξουμε έναν απλό αισθητήρα χρώματος χρησιμοποιώντας το Magicbit με το Arduino.

Προμήθειες

  • Magicbit
  • Καλώδιο USB-A σε Micro-USB

Βήμα 1: Ιστορία

Ρύθμιση υλικού
Ρύθμιση υλικού

Γεια σας παιδιά, μερικές φορές πρέπει να χρησιμοποιήσετε αισθητήρες χρώματος για κάποιους σκοπούς. Αλλά ίσως να μην ξέρετε πώς λειτουργούν. Σε αυτό το σεμινάριο θα μάθετε πώς να φτιάξετε έναν απλό αισθητήρα χρωμάτων DIY χρησιμοποιώντας το Magicbit με το Arduino. Ας ξεκινήσουμε.

Βήμα 2: Θεωρία και Μεθοδολογία

Σε αυτό το έργο αναμένουμε να σας διδάξουμε να κατασκευάζετε αισθητήρα χρώματος που μπορεί να ανιχνεύσει κόκκινο, πράσινο και μπλε χρώματα. Αυτό είναι πολύ βασικό παράδειγμα. Λοιπόν, πώς να το κάνετε αυτό. Για το σκοπό αυτό χρησιμοποιούμε μονάδα RGB του Magicbit και ενσωματωμένο LDR. Πρώτα απ 'όλα πρέπει να μάθετε για κάποια θεωρία. Αυτό αφορά την ποσότητα ανάκλασης φωτός. Τώρα κάνω μια ερώτηση από εσάς. Ποια έγχρωμη επιφάνεια που αντανακλά περισσότερο το κόκκινο χρώμα; επίσης ποιες επιφάνειες αντανακλούν κυρίως πράσινα και μπλε φώτα. Σκέψου λίγο. Η απάντηση όμως είναι απλή. Η κόκκινη επιφάνεια αντανακλά ως επί το πλείστον κόκκινο χρώμα. Επίσης, οι πράσινες και μπλε επιφάνειες θα αντανακλούν πράσινα και μπλε φώτα. Έτσι σε αυτό το έργο χρησιμοποιούμε αυτή τη θεωρία. Για να αναγνωρίσουμε το χρώμα εκπέμπουμε κόκκινα, πράσινα και μπλε φώτα ένα προς ένα. Κάθε φορά που μετράμε το μέγεθος της αντανάκλασης χρησιμοποιώντας την τιμή LDR. Εάν κάποιο φως θα δώσει μεγαλύτερη αντανάκλαση από άλλα δύο φώτα, τότε αυτή η επιφάνεια θα πρέπει να αντανακλάται ως επί το πλείστον έγχρωμη επιφάνεια.

Βήμα 3: Ρύθμιση υλικού

Αυτό είναι πολύ απλό. Συνδέστε τη μονάδα RGB στην επάνω δεξιά θύρα του Magicbit. Αυτή η μονάδα διαθέτει LED Neopixel WS2812B. Αυτό το LED έχει 4 ακίδες. Δύο για ισχύ και δύο για δεδομένα μέσα και έξω. Επειδή χρησιμοποιούμε ένα led, χρειαζόμαστε μόνο ακίδες ισχύος και δεδομένα σε ακίδα. Εάν δεν έχετε αυτήν τη μονάδα, μπορείτε να αγοράσετε και μονάδα Neopixel. Εάν αγοράσατε αυτό το είδος μονάδας, πρέπει να συνδέσετε ακίδες ισχύος και δεδομένα σε καρφίτσα στο Magicbit. Αυτό είναι πολύ εύκολο. Συνδέστε το VCC και το GND του Magicbit σε ακίδες τροφοδοσίας της μονάδας RGB και καρφίτσα D33 σε ακίδα δεδομένων.

Βήμα 4: Ρύθμιση λογισμικού

Το μεγαλύτερο μέρος γίνεται από τον προγραμματισμό. Χρησιμοποιούμε το Arduino IDE για να προγραμματίσουμε το Magicbit. Στον κώδικα χρησιμοποιούμε δύο βιβλιοθήκες. Είναι βιβλιοθήκη Adafruit Neopixel για έλεγχο Neopixel LED και βιβλιοθήκη Adafruit OLED για λαβή OLED. Στη ρύθμιση διαμορφώνουμε τις εισόδους και τις εξόδους μας. Διαμορφώστε επίσης την ενσωματωμένη οθόνη OLED στο Magicbit. Στο βρόχο ελέγχουμε ότι το αριστερό κουμπί είναι πατημένο ή όχι του Magicbit. Εάν πιέσει, το σήμα εισόδου είναι 0. Επειδή έχει ήδη τραβηχτεί από την πλακέτα. Αν πάτησε τότε κάνουμε έλεγχο χρώματος. Εάν όχι, τότε στην οθόνη θα εμφανιστεί η ένδειξη "χωρίς χρώμα". Όταν πατήσετε το κουμπί, ενεργοποιήστε αυτόματα κόκκινα, πράσινα και μπλε φώτα ένα προς ένα και αποθηκεύστε την ποσότητα αντανάκλασης των χρωμάτων σε τρεις μεταβλητές. Στη συνέχεια συγκρίναμε αυτές τις τιμές και επιλέξαμε το χρώμα μέγιστης τιμής για εμφάνιση ως χρώμα εξόδου.

Συνδέστε λοιπόν καλώδιο micro USB στο Magicbit και επιλέξτε σωστά τον τύπο της πλακέτας και τις θύρες com. Τώρα ανεβάστε τον κωδικό. Τότε ήρθε η ώρα να δοκιμάσουμε τον αισθητήρα μας. Για να το δοκιμάσετε, διατηρήστε το κόκκινο, το πράσινο ή το μπλε επιφανειακό χαρτί ή το φύλλο πάνω στη μονάδα LDR και RGB και πατήστε το αριστερό κουμπί. Στη συνέχεια, η οθόνη OLED θα δείξει ποιο είναι το χρώμα της επιφάνειας. Εάν αυτό είναι λάθος, ο λόγος είναι ότι κάποιο χρώμα έχει υψηλή ένταση φωτός. Για παράδειγμα σε κάθε πράσινη επιφάνεια η έξοδος είναι κόκκινη, τότε θα πρέπει να μειώσετε τη φωτεινότητα του κόκκινου φωτός από κάποια ποσότητα. Επειδή το κόκκινο φως έχει πολύ υψηλή φωτεινότητα σε αυτή την περίπτωση. Άρα έχει μεγάλη αντανάκλαση. Εάν δεν γνωρίζετε πώς να ελέγχετε τη φωτεινότητα, ανατρέξτε στο σεμινάριο στον παρακάτω σύνδεσμο.

magicbit-arduino.readthedocs.io/el/latest/

Σε αυτόν τον σύνδεσμο μπορείτε να βρείτε πώς μπορείτε να ελέγξετε αυτήν τη μονάδα RGB από το Magicbit. Επίσης, μπορείτε να βρείτε πώς να εργάζεστε με το LDR και το κουμπί πίεσης χρησιμοποιώντας το Magicbit. Διαβάστε αυτό το έγγραφο και μελετήστε περαιτέρω πώς να βελτιώσετε τον αισθητήρα χρώματος. Επειδή αυτό είναι ένα πολύ βασικό παράδειγμα για το πώς λειτουργούν οι αισθητήρες χρώματος. Οι περισσότεροι τύποι αισθητήρων χρώματος λειτουργούν με αυτόν τον τρόπο. Προσπαθήστε λοιπόν να το βελτιώσετε αφαιρώντας τον θόρυβο του φωτός του περιβάλλοντος και άλλους θορύβους.

Βήμα 5: Κωδικός αισθητήρα χρώματος Arduino

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

#define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 οθόνη Adafruit_SSD1306 (128, 64). #define LDR 36 #define Button 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED. Εμφάνιση (); pinMode (LDR, INPUT); pinMode (Κουμπί, ΕΙΣΟΔΟΣ); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); καθυστέρηση (1000)? display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// if πατηθεί το κουμπί LED.setPixelColor (0, LED. Color (0, 50, 0)); // στο κόκκινο χρώμα LED.show (); καθυστέρηση (100)? R_value = analogRead (LDR); // λάβετε κόκκινη βάση LED.setPixelColor (0, LED. Color (150, 0, 0)); // στο πράσινο χρώμα LED.show (); καθυστέρηση (100)? G_value = analogRead (LDR); // λάβετε πράσινη βάση LED.setPixelColor (0, LED. Color (0, 0, 255)); // στο bluecolour LED.show (); καθυστέρηση (100)? B_value = analogRead (LDR); // get blue mount if (R_value> G_value && R_value> B_value) {// το κόκκινο εμφανίζεται περισσότερο ("RED", 3). } else if (G_value> R_value && G_value> B_value) {// green εμφανίζεται περισσότερο η οθόνη ("GREEN", 3). } else if (B_value> R_value && B_value> G_value) {// blue εμφανίζεται περισσότερο η οθόνη ("BLUE", 3). } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("ΠΡΑΣΙΝΟ ="); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // off RGB LED.show (); Οθόνη ("NO COLOR", 2). }} void Display (String commond, int size) {// display data display.clearDisplay (); display.setTextSize (μέγεθος); // Normal 1: 1 pixel scale.setTextColor (WHITE); // Σχεδιάστε λευκό κείμενο display.setCursor (0, 20); // Έναρξη στην επάνω αριστερή γωνία display.println (κοινή); display.display (); }

Συνιστάται: