Arduino project απο την αρχή εώς το τέλος, Μέρος 2ο
Στο δεύτερο μέρος αυτής της σειράς παρουσιάζω το Arduino project, σκοπός του οποίου είναι ο πλήρης έλεγχος ενός RGB led (εναλλαγή όλων των χρωμάτων) μέσω ενός μόνο ποτενσιόμετρου.
Το dimming του καθενός απο τα βασικά χρώματα (Κόκκινο, Πράσινο, Μπλέ) θα γίνει με τη μέθοδο PWM (Pulse Width Modulation), της οποίας κάνω μια αρκετά αναλυτική παρουσίαση.
Για την επείδειξη της λογικής πίσω απο το PWM έφτιαξα το παρακάτω κύκλωμα, το οποίο με τη χρήση δύο ποτενσιόμετρων μπορεί να μεταβάλει τη συχνότητα και το duty cycle του παλμού PWM. Ο παλμός οδηγεί το Gate ενός n-type MOSFET το οποίο λειτουργεί σαν διακόπτης για το led.
Το αρχείο Fritzing: pwm example
Ο κώδικας χρησιμοποιεί την εξωτερική βιβλιοθήκη PWM (Arduino PWM Frequency Library v_05) Αντιγράφουμε το φάκελο PWM απο το zip μέσα στο φάκελο Libraries του Arduino IDE
#include <PWM.h> //Προσθέτει τη βιβλιοθήκη PWM.h void setup() { InitTimersSafe(); //Αυτό είναι η εντολή της βιβλιοθήκης PWM για να ξεκινήσει. } void loop() /* Το κυρίως loop (βρόγχος). Ότι εντολές υπάρχουν μεσα στις αγκύλες επαναλαμβάνονται ξανά και ξανά */ { int pot = analogRead(A0); /* Διαβάζει την τάση στο pin A0 οπου είναι συνδεδεμένο το πρώτο ποτενσιόμετρο και τη μετατρέπει σε ένα αριθμό απο 0 εώς 1023. Στη συνέχεια την αποθηκεύει στη μεταβλητή pot. Το int μπροστά απο το όνομα της μεταβλητής ορίζει οτι είναι ακέραιος αριθμός (integer) */ int pot2 = analogRead(A1); // Το ίδιο με απο πάνω για το δεύτερο ποτενσιόμετρο SetPinFrequencySafe(9, 1+(pot2/5)); /* Ορίζει τη συχνότητα στην έξοδο (pin 9) βάσει του μαθηματικού τύπου 1+(pot2/5). Επομένως οι τιμές που παίρνει είναι απο 1 Hz (για pot2=0) εώς 205 Hz (για pot2=1023) */ pwmWrite(9, pot/4); /*Δίνει τον παλμό PWM στο pin 9. Το pot/4 ορίζει το duty cycle. Καθώς τα επιτρεπτά νούμερα είναι απο 0 εώς 255, διαιρούμε την τιμή του pot η οποία είναι απο 0 εώς 1023 δια του 4 για να εκμεταλλευτούμε όλο το εύρος του ποτενσιόμετρου. */ }