- Απαιτούμενα υλικά:
- LDR:
- RGB LED:
- Διάγραμμα κυκλώματος:
- Επεξήγηση προγραμματισμού:
- Εργασία του Arduino Color Mixing Lamp:
Τι γίνεται αν μπορούμε να δημιουργήσουμε διαφορετικά χρώματα χρησιμοποιώντας ένα μόνο LED RGB και να κάνουμε τη γωνία του δωματίου μας πιο ελκυστική; Λοιπόν, εδώ είναι μια απλή λάμπα ανάμιξης με βάση το Arduino που μπορεί να αλλάξει χρώμα όταν υπάρχει αλλαγή στο φως στο δωμάτιο. Έτσι, αυτή η λάμπα θα αλλάξει αυτόματα το χρώμα της ανάλογα με τις συνθήκες φωτισμού στο δωμάτιο.
Κάθε χρώμα είναι ο συνδυασμός κόκκινου, πράσινου και μπλε χρώματος. Μπορούμε λοιπόν να δημιουργήσουμε οποιοδήποτε χρώμα χρησιμοποιώντας κόκκινα, πράσινα και μπλε χρώματα. Έτσι, εδώ θα διαφοροποιήσουμε το PWM, δηλαδή την ένταση του φωτός στα LDR. Αυτό θα αλλάξει περαιτέρω την ένταση του κόκκινου, πράσινου και μπλε χρώματος σε RGB LED, και θα δημιουργηθούν διαφορετικά χρώματα.
Στον παρακάτω πίνακα εμφανίζονται οι συνδυασμοί χρωμάτων με αντίστοιχη αλλαγή στους κύκλους λειτουργίας.
Απαιτούμενα υλικά:
- 1 x Arduino UNO
- 1 x Breadboard
- 3 x 220-ohm αντιστάσεις
- Αντιστάσεις 3 x 1-kilohm
- Καλώδια αλτών
- 3 x LDR
- 3 x χρωματιστές λωρίδες (κόκκινο, πράσινο, μπλε)
- 1 x RGB LED
LDR:
Θα χρησιμοποιήσουμε εδώ φωτοαντίσταση (ή εξαρτώμενη από το φως αντίσταση, LDR ή φωτοαγώγιμο στοιχείο) σε αυτό το κύκλωμα. Τα LDR κατασκευάζονται από υλικά ημιαγωγών για να έχουν τη δυνατότητα να έχουν τις ευαίσθητες στο φως ιδιότητές τους. Αυτά τα LDR ή PHOTO RESISTORS λειτουργούν με βάση την αρχή της «αγωγιμότητας φωτογραφιών». Τώρα αυτό που λέει αυτή η αρχή είναι, όποτε το φως πέφτει στην επιφάνεια του LDR (σε αυτήν την περίπτωση) η αγωγιμότητα του στοιχείου αυξάνεται ή με άλλα λόγια, η αντίσταση του LDR πέφτει όταν το φως πέφτει στην επιφάνεια του LDR. Αυτή η ιδιότητα της μείωσης της αντίστασης για το LDR επιτυγχάνεται επειδή είναι μια ιδιότητα του ημιαγωγού υλικού που χρησιμοποιείται στην επιφάνεια.
Εδώ χρησιμοποιούνται τρεις αισθητήρες LDR για τον έλεγχο της φωτεινότητας των μεμονωμένων κόκκινων, πράσινων και μπλε LED μέσα σε RGB Led. Μάθετε περισσότερα σχετικά με τον έλεγχο του LDR με το Arduino εδώ.
RGB LED:
Υπάρχουν δύο τύποι LED RGB, ένας είναι κοινός τύπος καθόδου (κοινός αρνητικός) και άλλος είναι κοινός τύπος ανόδου (κοινός θετικός) τύπος. Στο CC (Common Cathode ή Common Negative), θα υπάρχουν τρία θετικά τερματικά που κάθε τερματικό αντιπροσωπεύει ένα χρώμα και ένα αρνητικό τερματικό που αντιπροσωπεύει και τα τρία χρώματα.
Στο κύκλωμα μας θα χρησιμοποιήσουμε τύπο CA (Common Anode ή Common Positive). Στον τύπο Common Anode, αν θέλουμε να είναι ενεργοποιημένο το RED LED, πρέπει να γειώσουμε τον ακροδέκτη LED RED και να ενεργοποιήσουμε το κοινό θετικό. Το ίδιο ισχύει για όλα τα LED. Μάθετε εδώ για τη διασύνδεση RGB LED με το Arduino.
Διάγραμμα κυκλώματος:
Το πλήρες διάγραμμα κυκλώματος αυτού του έργου δίνεται παραπάνω. Η σύνδεση +5V και γείωσης που φαίνεται στο διάγραμμα κυκλώματος μπορεί να ληφθεί από τον πείρο 5V και γείωσης του Arduino. Το ίδιο το Arduino μπορεί να τροφοδοτηθεί από τον φορητό υπολογιστή σας ή μέσω της υποδοχής DC χρησιμοποιώντας έναν προσαρμογέα 12V ή μια μπαταρία 9V.
Θα χρησιμοποιήσουμε το PWM για να αλλάξουμε τη φωτεινότητα των οδηγήσεων RGB. Μπορείτε να μάθετε περισσότερα για το PWM εδώ. Ακολουθούν ορισμένα παραδείγματα PWM με το Arduino:
- Μεταβλητή παροχή ηλεκτρικού ρεύματος από την Arduino Uno
- DC Motor Control με χρήση Arduino
- Γεννήτρια τόνου με βάση το Arduino
Επεξήγηση προγραμματισμού:
Αρχικά, δηλώνουμε όλες τις εισόδους και τους ακροδέκτες εξόδου όπως φαίνεται παρακάτω.
const byte red_sensor_pin = A0; const byte green_sensor_pin = A1; const byte blue_sensor_pin = A2; const byte green_led_pin = 9; const byte blue_led_pin = 10; const byte red_led_pin = 11;
Δηλώστε τις αρχικές τιμές των αισθητήρων και των led ως 0.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; άκυρη ρύθμιση () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
Στην ενότητα βρόχου, θα πάρουμε έξοδο τριών αισθητήρων με το analogRead (); λειτουργία και αποθήκευση σε τρεις διαφορετικές μεταβλητές.
void loop () { red_sensor_value = analogRead (red_sensor_pin); καθυστέρηση (50) blue_sensor_value = analogRead (blue_sensor_pin); καθυστέρηση (50) green_sensor_value = analogRead (green_sensor_pin);
Εκτυπώστε αυτές τις τιμές στην σειριακή οθόνη για σκοπούς εντοπισμού σφαλμάτων
Serial.println ("Τιμές ακατέργαστου αισθητήρα:"); Serial.print ("\ t Κόκκινο:"); Serial.print (red_sensor_value); Serial.print ("\ t Μπλε:"); Serial.print (blue_sensor_value); Serial.print ("\ t Green:"); Serial.println (green_sensor_value);
Θα λάβουμε τιμές 0-1023 από τους αισθητήρες, αλλά οι ακίδες Arduino PWM έχουν τιμές 0-255 ως έξοδο. Πρέπει λοιπόν να μετατρέψουμε τις πρώτες μας τιμές σε 0-255. Για αυτό πρέπει να διαιρέσουμε τις ακατέργαστες τιμές με 4 Ή απλά μπορούμε να χρησιμοποιήσουμε τη λειτουργία χαρτογράφησης του Arduino για να μετατρέψουμε αυτές τις τιμές.
red_led_value = red_sensor_value / 4; // καθορισμός Red LED blue_led_value = blue_sensor_value / 4; // καθορισμός Blue LED green_led_value = green_sensor_value / 4; // ορίστε το Green Led
Εκτυπώστε αντιστοιχισμένες τιμές στη σειριακή οθόνη
Serial.println ("Αντιστοιχισμένες τιμές αισθητήρα:"); Serial.print ("\ t Κόκκινο:"); Serial.print (red_led_value); Serial.print ("\ t Μπλε:"); Serial.print (blue_led_value); Serial.print ("\ t Green:"); Serial.println (green_led_value);
Χρησιμοποιήστε το analogWrite () για να ορίσετε έξοδο για RGB LED
analogWrite (red_led_pin, red_led_value); // ένδειξη κόκκινο LED analogWrite (blue_led_pin, blue_led_value); // ένδειξη μπλε LED analogWrite (green_led_pin, green_led_value); // υποδείξτε πράσινο
Εργασία του Arduino Color Mixing Lamp:
Καθώς χρησιμοποιούμε τρία LDR έτσι, όταν προσπίπτει φως σε αυτούς τους αισθητήρες, η αντίσταση του αλλάζει, με αποτέλεσμα οι τάσεις να αλλάζουν και στις αναλογικές ακίδες του Arduino που λειτουργούν ως ακίδες εισόδου για αισθητήρες.
Όταν η ένταση του φωτός αλλάζει σε αυτούς τους αισθητήρες, το αντίστοιχο led σε RGB θα ανάβει με την αλλαγή της αντίστασης και έχουμε διαφορετική χρωματική ανάμιξη σε RGB led χρησιμοποιώντας PWM