Σύνδεση LED τριών χρωμάτων σε arduino. Σύνδεση και έλεγχος λωρίδας LED στο arduino. Συναρμολογήστε το κύκλωμα σε ένα breadboard

Ένας ελεγκτής RGB χρησιμοποιείται για τον έλεγχο αυτών των συσκευών. Εκτός όμως από αυτόν, τα τελευταία χρόνια χρησιμοποιείται η πλακέτα Arduino.

Arduino - η αρχή της λειτουργίας

πλακέτα arduino

Η πλακέτα Arduino είναι μια συσκευή στην οποία είναι εγκατεστημένος ένας προγραμματιζόμενος μικροελεγκτής. Διάφοροι αισθητήρες, χειριστήρια ή κωδικοποιητής συνδέονται σε αυτό και, σύμφωνα με ένα δεδομένο σχέδιο (πρόγραμμα), η πλακέτα ελέγχει κινητήρες, LED και άλλους ενεργοποιητές, συμπεριλαμβανομένων άλλων πλακών Arduino χρησιμοποιώντας το πρωτόκολλο SPI. Η συσκευή μπορεί να ελεγχθεί μέσω τηλεχειριστηρίου, μονάδας Bluetooth, HC-06, Wi-Fi, ESP ή διαδικτύου και κουμπιών. Μερικές από τις πιο δημοφιλείς πλακέτες είναι οι Arduino Nano και Arduino Uno, καθώς και η Arduino Pro Mini, μια συσκευή που βασίζεται στον μικροελεγκτή ATmega 328.


Εμφάνιση Arduino Pro Mini
Εμφάνιση Arduino Uno
Εμφάνιση Arduino micro

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

Η αρχή του ελέγχου φορτίου μέσω του Arduino


Έλεγχος Arduino

Η πλακέτα έχει πολλές εξόδους, και ψηφιακές, με δύο καταστάσεις - ενεργοποίηση και απενεργοποίηση, και αναλογική, που ελέγχονται μέσω ενός ελεγκτή PWM με συχνότητα 500 Hz.

Αλλά οι έξοδοι έχουν σχεδιαστεί για ρεύμα 20 - 40 mA με τάση 5 V. Αυτό είναι αρκετό για να τροφοδοτήσει μια ενδεικτική λυχνία LED RGB ή μια μονάδα μήτρας LED 32x32 mm. Για πιο ισχυρό φορτίο, αυτό δεν αρκεί.

Για να λύσετε αυτό το πρόβλημα σε πολλά έργα, πρέπει να συνδέσετε πρόσθετες συσκευές:

  • Αναμετάδοση. Εκτός από μεμονωμένα ρελέ με τάση τροφοδοσίας 5V, υπάρχουν ολόκληρα συγκροτήματα με διαφορετικό αριθμό επαφών, καθώς και με ενσωματωμένους εκκινητές.
  • Ενισχυτές σε διπολικά τρανζίστορ. Η ισχύς τέτοιων συσκευών περιορίζεται από το ρεύμα ελέγχου, αλλά μπορείτε να συναρμολογήσετε ένα κύκλωμα από πολλά στοιχεία ή να χρησιμοποιήσετε ένα συγκρότημα τρανζίστορ.
  • Εφέ πεδίου ή τρανζίστορ MOSFET. Μπορούν να οδηγήσουν φορτία με ρεύματα πολλών αμπέρ και τάσεις έως 40 - 50 V. Όταν συνδέετε ένα mosfet σε ένα PWM και έναν κινητήρα ή άλλο επαγωγικό φορτίο, απαιτείται μια προστατευτική δίοδος. Όταν συνδέεται με LED ή λαμπτήρες LED, αυτό δεν είναι απαραίτητο.
  • Πλάκες επέκτασης.

Σύνδεση λωρίδας LED στο Arduino


σύνδεση λωρίδας led στο arduino

Γνώμη ειδικού

Alexey Bartosh

Ειδικός στην επισκευή, συντήρηση ηλεκτρολογικού εξοπλισμού και βιομηχανικών ηλεκτρονικών.

Ρωτήστε έναν ειδικό

Το Arduino Nano μπορεί να ελέγξει περισσότερα από ηλεκτρικούς κινητήρες. Χρησιμοποιούνται επίσης για λωρίδες LED. Επειδή όμως το ρεύμα εξόδου και η τάση της πλακέτας δεν επαρκούν για την απευθείας σύνδεση μιας λωρίδας με LED σε αυτήν, πρέπει να εγκατασταθούν πρόσθετες συσκευές μεταξύ του ελεγκτή και της λωρίδας LED.

μέσω ρελέ


Σύνδεση μέσω ρελέ

Το ρελέ συνδέεται με τη συσκευή σε μια ψηφιακή έξοδο. Η λωρίδα που ελέγχεται με τη βοήθειά της έχει μόνο δύο καταστάσεις - ενεργοποίηση και απενεργοποίηση. Χρειάζονται τρία ρελέ για τον έλεγχο της κόκκινης-μπλε-πράσινης κορδέλας. Το ρεύμα που μπορεί να ελέγξει μια τέτοια συσκευή περιορίζεται από την ισχύ του πηνίου (ένα πηνίο χαμηλής ισχύος δεν μπορεί να κλείσει μεγάλες επαφές). Για να συνδέσετε περισσότερη ισχύ, χρησιμοποιούνται συγκροτήματα ρελέ.

Με διπολικό τρανζίστορ


Σύνδεση με τρανζίστορ

Ένα διπολικό τρανζίστορ μπορεί να χρησιμοποιηθεί για την ενίσχυση του ρεύματος και της τάσης εξόδου. Επιλέγεται ανάλογα με το ρεύμα και την τάση του φορτίου. Το ρεύμα ελέγχου δεν πρέπει να είναι μεγαλύτερο από 20 mA, επομένως τροφοδοτείται μέσω αντίστασης περιορισμού ρεύματος 1 - 10 kOhm.

Το τρανζίστορ είναι καλύτερο να το χρησιμοποιήσετε n-p-nμε κοινό πομπό. Για υψηλότερο κέρδος, χρησιμοποιείται ένα κύκλωμα με πολλά στοιχεία ή ένα συγκρότημα τρανζίστορ (τσιπ ενισχυτή).

Με τρανζίστορ εφέ πεδίου

Εκτός από τα διπολικά, τρανζίστορ φαινομένου πεδίου χρησιμοποιούνται για τον έλεγχο των ζωνών. Ένα άλλο όνομα για αυτές τις συσκευές είναι MOS ή MOSFET-transistor.

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

Το στοιχείο συνδέεται μέσω μιας αντίστασης περιορισμού ρεύματος. Επιπλέον, είναι ευαίσθητο στις παρεμβολές, επομένως η έξοδος του ελεγκτή θα πρέπει να συνδεθεί στη γείωση με αντίσταση 10 kΩ.

Με πλακέτες επέκτασης


Σύνδεση Arduino με πίνακες επέκτασης

Εκτός από ρελέ και τρανζίστορ, χρησιμοποιούνται έτοιμα μπλοκ και πλακέτες επέκτασης.

Αυτό μπορεί να είναι Wi-Fi ή Bluetooth, ένα πρόγραμμα οδήγησης ελέγχου κινητήρα όπως η μονάδα L298N ή ένας ισοσταθμιστής. Έχουν σχεδιαστεί για να ελέγχουν φορτία διαφορετικής ισχύος και τάσης. Τέτοιες συσκευές είναι μονοκάναλες - μπορούν να ελέγχουν μόνο μια μονόχρωμη ταινία και πολυκάναλες - σχεδιασμένες για συσκευές RGB και RGBW, καθώς και ταινίες με LED WS 2812.

Παράδειγμα προγράμματος


Arduino και λωρίδα LED

Οι πλακέτες Arduino είναι σε θέση να ελέγχουν τις δομές LED σύμφωνα με προκαθορισμένα προγράμματα. Μπορείτε να κατεβάσετε τις βιβλιοθήκες τους από τον επίσημο ιστότοπο, να τις βρείτε στο Διαδίκτυο ή να γράψετε ένα νέο σκίτσο (κώδικα) μόνοι σας. Μπορείτε να συναρμολογήσετε μια τέτοια συσκευή με τα χέρια σας.

Ακολουθούν ορισμένες επιλογές για τη χρήση τέτοιων συστημάτων:

  • Έλεγχος φωτισμού. Με τη βοήθεια ενός αισθητήρα φωτός, το φως στο δωμάτιο ανάβει τόσο αμέσως όσο και με σταδιακή αύξηση της φωτεινότητας καθώς ο ήλιος δύει. Η ένταξη μπορεί να γίνει και μέσω wi-fi, με ενσωμάτωση στο σύστημα «έξυπνου σπιτιού» ή τηλεφωνική σύνδεση.
  • Ανάβοντας το φως στις σκάλες ή σε έναν μακρύ διάδρομο. Ο φωτισμός LED κάθε σκαλοπατιού ξεχωριστά φαίνεται πολύ ωραίος. Όταν ένας αισθητήρας κίνησης είναι συνδεδεμένος στην πλακέτα, η λειτουργία του θα προκαλέσει διαδοχικά, με χρονική καθυστέρηση, το φωτισμό βημάτων ή διαδρόμων και η απενεργοποίηση αυτού του στοιχείου θα οδηγήσει στην αντίστροφη διαδικασία.
  • Έγχρωμη μουσική. Εφαρμόζοντας ένα ηχητικό σήμα στις αναλογικές εισόδους μέσω των φίλτρων, η έξοδος θα είναι έγχρωμη-μουσική εγκατάσταση.
  • Τροποποίηση υπολογιστή. Με τη βοήθεια κατάλληλων αισθητήρων και προγραμμάτων, το χρώμα των LED μπορεί να εξαρτάται από τη θερμοκρασία ή το φορτίο του επεξεργαστή ή της μνήμης RAM. Μια τέτοια συσκευή λειτουργεί σύμφωνα με το πρωτόκολλο dmx 512.
  • Έλεγχος της ταχύτητας των φώτων πορείας με κωδικοποιητή. Παρόμοιες εγκαταστάσεις συναρμολογούνται σε τσιπ WS 2811, WS 2812 και WS 2812B.

Οδηγίες βίντεο

Την τελευταία φορά, εξετάστηκε μια μέθοδος για τη σύνδεση μιας λωρίδας LED σε ένα arduino μέσω του προγράμματος οδήγησης L298. Η διαχείριση χρωμάτων πραγματοποιήθηκε μέσω προγραμματισμού - η λειτουργία Random. Τώρα ήρθε η ώρα να μάθετε πώς να ελέγχετε το χρώμα της λωρίδας LED με βάση τις ενδείξεις του αισθητήρα θερμοκρασίας και υγρασίας DHT 11.

Ως βάση λαμβάνεται το παράδειγμα σύνδεσης μιας λωρίδας LED μέσω του προγράμματος οδήγησης L298. Επιπλέον, στο παράδειγμα έχει προστεθεί η οθόνη LCD 1602, η οποία θα εμφανίζει τις ενδείξεις του αισθητήρα DHT 11.

Για το έργο, θα χρειαστείτε τα ακόλουθα στοιχεία Arduino:

  1. Πλακέτα Arduino UNO.
  2. Οθόνη LCD 1602 + I2C.
  3. Αισθητήρας θερμοκρασίας και υγρασίας DHT
  4. Φωτισμός λωρίδας LED.
  5. Πρόγραμμα οδήγησης L298.
  6. Τροφοδοσία 9-12V.
  7. Θήκη για arduino και οθόνη (προαιρετικά).

Πρώτα απ 'όλα, ας δούμε το διάγραμμα κυκλώματος (Εικ. 1). Σε αυτό μπορείτε να δείτε πώς πρέπει να συνδέσετε όλα τα παραπάνω στοιχεία. Δεν υπάρχει τίποτα δύσκολο στη συναρμολόγηση του κυκλώματος και τη σύνδεσή του, ωστόσο, αξίζει να αναφέρουμε μια απόχρωση που οι περισσότεροι άνθρωποι ξεχνούν και ως αποτέλεσμα λαμβάνουν λανθασμένα αποτελέσματα από την εργασία της ταινίας LED με το Arduino.

Εικόνα 1. Σχηματικό διάγραμμα σύνδεσης Arduino και λωρίδας LED με αισθητήρα DHT 11

Προκειμένου να αποφευχθεί η εσφαλμένη λειτουργία της λωρίδας LED (τρεμόπαιγμα, αναντιστοιχία χρώματος, ελλιπής λάμψη κ.λπ.), η τροφοδοσία ολόκληρου του κυκλώματος πρέπει να είναι κοινή, π.χ. συνδέστε τις ακίδες GND (γείωση) του ελεγκτή Arduino και το πρόγραμμα οδήγησης L298 (λωρίδα LED). Πώς να το κάνετε αυτό, μπορείτε να δείτε στο διάγραμμα.

Λίγα λόγια για τη σύνδεση του αισθητήρα υγρασίας. Εάν αγοράσετε ένα γυμνό DHT 11, χωρίς ιμάντα, τότε μεταξύ της πρώτης και της δεύτερης επαφής, 5V και Data, αντίστοιχα, πρέπει να συγκολλήσετε μια αντίσταση με ονομαστική τιμή 5-10 kOhm. Το εύρος μέτρησης για τη θερμοκρασία και την υγρασία αναγράφεται στο πίσω μέρος του περιβλήματος του αισθητήρα DHT 11. Θερμοκρασία: 0-50 βαθμοί Κελσίου. Υγρασία: 0-80%.


Εικόνα 2. Σωστή σύνδεση του αισθητήρα υγρασίας DHT 11

Αφού συναρμολογήσουμε όλα τα στοιχεία του έργου σύμφωνα με το σχήμα, είναι απαραίτητο να γράψουμε τον κώδικα του προγράμματος που θα τα κάνει όλα να λειτουργήσουν όπως χρειαζόμαστε. Και χρειαζόμαστε τη λωρίδα LED για να αλλάζει χρώμα ανάλογα με τις ενδείξεις του αισθητήρα DHT 11 (υγρασία).

Για να προγραμματίσετε τον αισθητήρα DHT 11, θα χρειαστείτε μια επιπλέον βιβλιοθήκη.

Κωδικός προγράμματος Arduino και RGB - ταινία. Αλλαγή χρώματος κορδέλας ανάλογα με την υγρασία.

#include #include //βιβλιοθήκη για εργασία με οθόνη LCD 1602 #include //βιβλιοθήκη για εργασία με αισθητήρα υγρασίας και θερμοκρασίας DHT 11 int chk; Η //variable θα αποθηκεύσει όλα τα δεδομένα από τον αισθητήρα DHT11 int hum. //η μεταβλητή θα αποθηκεύσει τις ενδείξεις υγρασίας από τον αισθητήρα DHT11 dht11 DHT. //αντικείμενο τύπου DHT #define DHT11_PIN 4 //η επαφή δεδομένων του αισθητήρα DHT11 συνδέεται στην είσοδο 4 #define LED_R 9 //pin for channel R #define LED_G 10 //pin for channel G #define LED_B 11 //pin for channel B //pin for channel B //pin for channel B //pin για το κανάλι B // θα ληφθούν όλα τα χρώματα στο επιθυμητό χρώμα / θα αποθηκευτούν όλα τα χρώματα / θα αποθηκευτούν όλα τα χρώματα / θα αποθηκευτούν όλα τα χρώματα. led_r=0, led_g=0, led_b=0; //δηλώνοντας ένα αντικείμενο προβολής με διεύθυνση 0x27 //μην ξεχάσετε να χρησιμοποιήσετε μια οθόνη στο έργο μέσω της πλακέτας I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() ( //δημιουργία οθόνης lcd.init(); lcd.backlight(); // δηλώνει τις ακίδες ως εξόδους pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); ) void loop() ( chT11_DDDDDT11HTD = chT11_DDDD) 1 αισθητήρας //εξόδου δεδομένων για εμφάνιση lcd.print("Θερμοκρασία: "); λειτουργία του αισθητήρα, χρειάζεται μια καθυστέρηση για την ψηφοφορία lcd.clear(); hum = DHT.humidity; //λήψη μετρήσεων υγρασίας //in diapos one από 19 έως 30% υγρασία δώσει πράσινο χρώμα εάν ((βουητό >= 19) && (βουητό<= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (βουητό<= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (βουητό<= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Ετικέτες: Ετικέτες

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

Το RGB είναι μια συντομογραφία που σημαίνει: Κόκκινο - κόκκινο, Πράσινο - πράσινο, Μπλε - μπλε. Δηλαδή, τρία ξεχωριστά LED τοποθετούνται στο εσωτερικό αυτής της συσκευής ταυτόχρονα. Ανάλογα με τον τύπο, ένα RGB LED μπορεί να είναι είτε κοινή κάθοδος είτε κοινή άνοδος.

ανάμειξη χρωμάτων

Γιατί ένα RGB LED είναι καλύτερο από τρία συνηθισμένα; Όλα έχουν να κάνουν με την ιδιότητα της όρασής μας να αναμειγνύει φως από διαφορετικές πηγές τοποθετημένες η μία κοντά στην άλλη. Για παράδειγμα, αν βάλουμε μπλε και κόκκινα LED το ένα δίπλα στο άλλο, τότε σε απόσταση αρκετών μέτρων η λάμψη τους θα συγχωνευθεί και το μάτι θα δει μια μωβ κουκκίδα. Και αν προσθέσουμε και πράσινο, τότε το σημείο θα μας φαίνεται λευκό. Έτσι λειτουργούν οι οθόνες υπολογιστών, οι τηλεοράσεις και οι οθόνες εξωτερικού χώρου.

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

Αποδεικνύεται ότι όσο πιο πυκνές είναι οι πολύχρωμες κουκκίδες μεταξύ τους, τόσο λιγότερη απόσταση χρειάζεται το μάτι για να αναμίξει αυτά τα χρώματα. Εξ ου και το συμπέρασμα: σε αντίθεση με τρεις ανεξάρτητες λυχνίες LED, η ανάμειξη χρωμάτων ενός LED RGB είναι ήδη αισθητή σε απόσταση 30-70 εκ. Παρεμπιπτόντως, ένα LED RGB με ματ φακό εμφανίζεται ακόμα καλύτερα.

Σε πολλές εφαρμογές, τόσο ερασιτεχνικές όσο και επαγγελματικές, μερικές φορές είναι απαραίτητο να δημιουργηθούν χρώματα διαφόρων αποχρώσεων. Η χρήση ξεχωριστών μονόχρωμων LED σε τέτοιες περιπτώσεις είναι αδικαιολόγητη εποικοδομητικά και οικονομικά. Ως εκ τούτου, αναπτύχθηκαν RGB LED για τέτοιους σκοπούς.



Το RGB LED (η συντομογραφία σημαίνει RED, GREEN, BLUE) είναι ένας συνδυασμός κρυστάλλων ικανών να παράγουν κόκκινο, πράσινο και μπλε χρώματα. Χάρη σε αυτόν τον συνδυασμό, αυτά τα LED μπορούν να αναπαράγουν 16 εκατομμύρια αποχρώσεις φωτός. Τα LED RGB είναι εύκολο να ελεγχθούν και μπορούν να χρησιμοποιηθούν σε έργα Arduino χωρίς κανένα πρόβλημα. Αυτό το άρθρο θα δείξει ένα παράδειγμα ελέγχου ενός LED RGB χρησιμοποιώντας ένα Arduino.


Δεδομένου ότι το RGB LED, όπως σημειώθηκε παραπάνω, είναι ένας συνδυασμός κρυστάλλων τριών διαφορετικών βασικών χρωμάτων, απεικονίζεται στο κύκλωμα ως τρία LED. Δομικά, ένα τέτοιο LED έχει μία κοινή έξοδο και τρεις εξόδους για κάθε χρώμα. Παρακάτω είναι ένα διάγραμμα σύνδεσης ενός LED RGB σε ένα Arduino. Επίσης στο κύκλωμα υπάρχει μια αλφαριθμητική οθόνη LCD 16x2, ποτενσιόμετρα και αντιστάσεις συνδεδεμένα σε σειρά με τις γραμμές LED RGB. Αυτές οι αντιστάσεις (R1 = 100 ohms, R2 = 270 ohms, R3 = 330 ohms) περιορίζουν το ρεύμα των LED για να μην καούν. Μεταβλητές αντιστάσεις (ποτενσιόμετρα) VR1-VR3 με αντίσταση 10 KΩ χρησιμοποιούνται για τον έλεγχο της έντασης της λάμψης του RGB LED, δηλαδή μπορούν να χρησιμοποιηθούν για να ρυθμίσετε το χρώμα του LED αλλάζοντας την ένταση των κρυστάλλων κόκκινου, πράσινου και μπλε. Το ποτενσιόμετρο VR1 συνδέεται στην αναλογική είσοδο A0, το VR2 στην αναλογική είσοδο A1 και το VR3 στην αναλογική είσοδο A2.



Η οθόνη LCD σε αυτήν την περίπτωση χρησιμοποιείται για την εμφάνιση της τιμής χρώματος και της δεκαεξαδικής τιμής του χρωματικού κωδικού. Η τιμή του χρωματικού κωδικού εμφανίζεται στην 1η γραμμή της οθόνης LCD (ως Rxxx Gxxx Bxxx, όπου xxx είναι μια αριθμητική τιμή) και ο δεκαεξαδικός κωδικός εμφανίζεται στη 2η γραμμή της οθόνης LCD (ως HEXxxxxxx). Μια αντίσταση 100Ω R4 χρησιμοποιείται για τον περιορισμό του ρεύματος που εφαρμόζεται στον οπίσθιο φωτισμό της οθόνης LCD και μια μεταβλητή αντίσταση 10 KΩ VR4 χρησιμοποιείται για τη ρύθμιση της αντίθεσης της οθόνης LCD.


Ακολουθεί ένας κωδικός (σκίτσο) που σας επιτρέπει να ελέγχετε την αλλαγή χρώματος ενός LED RGB χρησιμοποιώντας μια πλακέτα Arduino και ποτενσιόμετρα που είναι συνδεδεμένα σε αυτήν.


#περιλαμβάνω // βιβλιοθήκη για οθόνη LCD LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Γραμμές Arduino για τη σύνδεση της LCD int Radj. int Gadj; int Badj; intRval=0; int Gval=0; intBval=0; int R = 9; int G = 10; int B = 11; void setup() ( pinMode(R, OUTPUT); // Η γραμμή 9 δρομολογείται στην έξοδο pinMode(G, OUTPUT); // Η γραμμή 10 δρομολογείται στην έξοδο pinMode(B, OUTPUT); // Η γραμμή 11 δρομολογείται στην έξοδο lcd.begin(16,2); //, Display0set.l) "RGB COLOUR"); lcd.setCurs or(4,1); lcd.print("GENERATOR"); καθυστέρηση(2000); lcd.setCursor(0, 0); lcd.print(" R G B "); lcd.setCursor(3,1); lcd.print("GENERATOR"); = analogRead(1); Badj = analogRead(2); Rval=Radj/4; // Μετατροπή του εύρους από (0-1023) σε (0-255) Gval=Gadj/4; // Μετατροπή του εύρους από (0-1023) σε (0-255) Bval=Badj/4; // setCursor(2,0); if (Rval<10) { lcd.setCursor(2,0); lcd.print("00"); lcd.print(Rval); } else if(Rval<100) { lcd.setCursor(2,0); lcd.print("0"); lcd.print(Rval); } else { lcd.setCursor(2,0); lcd.print(Rval); } lcd.setCursor(8,1); if (Rval<16) { lcd.print("0"); lcd.print(Rval, 16); } else { lcd.print(Rval, 16); } lcd.setCursor(7,0); if (Gval<10) { lcd.setCursor(7,0); lcd.print("00"); lcd.print(Gval); } else if(Gval<100) { lcd.setCursor(7,0); lcd.print("0"); lcd.print(Gval); } else { lcd.setCursor(7,0); lcd.print(Gval); } lcd.setCursor(10,1); if (Gval<16) { lcd.print("0"); lcd.print(Gval, 16); } else { lcd.print(Gval, 16); } lcd.setCursor(12,0); if (Bval<10) { lcd.setCursor(12,0); lcd.print("00"); lcd.print(Bval); } else if(Bval<100) { lcd.setCursor(12,0); lcd.print("0"); lcd.print(Bval); } else { lcd.setCursor(12,0); lcd.print(Bval); } lcd.setCursor(12,1); if (Bval<16) { lcd.print("0"); lcd.print(Bval, 16); } else { lcd.print(Bval, 16); } analogWrite(R, Rval); // ШИМ-выход для красного цвета analogWrite(G, Gval); // ШИМ-выход для зеленого цвета analogWrite(B, Bval); // ШИМ-выход для синего цвета }

Η διαμόρφωση πλάτους παλμού (PWM) είναι διασκεδαστική και ιδιαίτερα διασκεδαστική στην οδήγηση σερβομηχανισμών, αλλά σήμερα θα την εφαρμόσουμε σε LED τριών χρωμάτων. Αυτό θα μας επιτρέψει να ελέγξουμε το χρώμα του και να αποκτήσουμε κάποια εμφάνιση ομορφιάς.

PWM

Ο έξυπνος ορισμός του PWM έχει διατυπωθεί στη Wikipedia, οπότε θα τον αντιγράψω από εκεί: "PWM - προσέγγιση του επιθυμητού σήματος (πολυεπίπεδο ή συνεχές) σε πραγματικά δυαδικά σήματα (με δύο επίπεδα -κλειστό ), έτσι ώστε, κατά μέσο όρο, σε ένα ορισμένο χρονικό διάστημα, οι τιμές τους να είναι ίσες. <...> W Το IM είναι ένα παλμικό σήμα σταθερής συχνότητας και μεταβλητήςκύκλος καθηκόντων , δηλαδή η αναλογία της περιόδου επανάληψης του παλμού προς τη διάρκειά της. Ρυθμίζοντας τον κύκλο λειτουργίας (διάρκεια παλμού)μπορείτε να αλλάξετε τη μέση τάση στην έξοδο PWM. "


Τώρα ας καταλάβουμε τι σημαίνει αυτό. Ας υπάρχει ένα τέτοιο συνηθισμένο ορθογώνιο σήμα:




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


Εάν έχουμε μέγιστη τάση 5 V, τότε η τάση που λαμβάνεται στην έξοδο PWM είναι ίση με τον κύκλο λειτουργίας πολλαπλασιασμένο με 5 V (και διαιρείται με 100% έτσι ώστε το τυπικό-ναζί να μην είναι δεμένο):


Το Arduino σας επιτρέπει να γράψετε μια τιμή από 0 έως 255 στην έξοδο PWM, πράγμα που σημαίνει ότι μπορούμε να πάρουμε μια τάση με ανάλυση περίπου 20 mV.


Τρίχρωμο LED

Εδώ είναι, ένας τετράποδος όμορφος άντρας:


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

Εάν εφαρμόσετε +5V στο μακρύ πόδι και 0V σε όλα τα υπόλοιπα, θα έχετε λευκό φως (σε ικετεύω, προστατέψου τον εαυτό σου - βάλε περιοριστικές αντιστάσεις!). Το πόσο λευκό είναι μπορεί να κριθεί από το παρακάτω βίντεο:


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

PWM σε Arduino

Η συχνότητα PWM στο Arduino είναι περίπου 490 Hz. Στην πλακέτα Arduino UNO, οι ακίδες που μπορούν να χρησιμοποιηθούν για PWM είναι 3,5,6, 9, 10 και 11. Υπάρχει μια υπόδειξη για αυτό στην πλακέτα - υπάρχει μια περισπωμένη ή αιχμηρή μπροστά από τους αριθμούς ακίδων PWM με μεταξοτυπία.

Τίποτα δεν είναι πιο εύκολο από τον έλεγχο του PWM με ένα Arduino! Υπάρχει μόνο μία λειτουργία για αυτό. analogWrite (καρφίτσα, τιμή), Οπου καρφίτσα- αριθμός εξόδου και αξία- τιμή από 0 έως 255. Σε αυτήν την περίπτωση, δεν χρειάζεται να γράψετε τίποτα void setup()!

Μπορείτε να διαβάσετε περισσότερα για αυτό στα αγγλικά και.

Δουλεύει αρκετά

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

Ας συγκεντρώσουμε ένα απλό σχήμα:


Και γράψε έναν απλό κώδικα:

//Εξόδους κλήσης ανάλογα με το χρώμα
int REDpin = 9;
int ΠΡΑΣΙΝΗ καρφίτσα = 10;
int ΜΠΛΕ pin = 11;

κενός εγκατάσταση (){}

κενός βρόχος (){
για (τιμή int = 0 ; τιμή<= 255; value +=1) {
// Η φωτεινότητα του κόκκινου μειώνεται
analogWrite(REDpin, τιμή);
// Η φωτεινότητα του πράσινου αυξάνεται
analogWrite(GREENpin, 255-value);
// το μπλε είναι απενεργοποιημένο
analogWrite(BLUEpin, 255);
//παύση
καθυστέρηση(30);
}

για (τιμή int = 0 ; τιμή<= 255; value +=1) {
// το κόκκινο είναι απενεργοποιημένο
analogWrite(REDpin, 255);
// Η φωτεινότητα του πράσινου μειώνεται
analogWrite(GREENpin, value);
//Η φωτεινότητα του μπλε αυξάνεται
analogWrite(BLUEpin, 255-value);
//παύση
καθυστέρηση(30);
}

για (τιμή int = 0 ; τιμή<= 255; value +=1) {
// Η φωτεινότητα του κόκκινου αυξάνεται
analogWrite(REDpin, 255-value);
// πράσινο σβηστό
analogWrite(GREENpin, 255);
//Η φωτεινότητα του μπλε μειώνεται
analogWrite(BLUEpin, value);
//παύση
καθυστέρηση(30);
}
}