Απλό κύκλωμα LED και αυξομείωση έντασης με PWM

Στο κύκλωμα που ακολουθεί  έχουμε συνδέσει ένα LED με έναν αντιστάτη 220 Ω και με το κατάλληλο πρόγραμμα στο Arduino αναβοσβήνουμε το LED κάθε ένα δευτερόλεπτο.

/*
Blink
Ανάβει ένα  LED για 1 δευτερόλεπτο, και το κρατάει σβηστό επίσης για 1 δευτερόλεπτο,
συνεχώς.

*/
//  Στο Pin 9 έχουμε συνέσει το θετικό πόλο του LED .
//  Ονομάζουμε το pin 9 με το όνομα led:

int led = 9;


//  Στο  setup ορίζουμε το pin 9 ως έξοδο
void setup()
{

pinMode(led, OUTPUT);
}

 //  Στο loop που "τρέχει" συνεχώς ορίζουμε τις λειτουργίες του Arduino:
void loop()
{
digitalWrite(led, HIGH);
// Άναψε το LED on (HIGH είναι το επίπεδο της τάσης)
delay(1000); // Περίμενε 1 δευτερόλεπτο
digitalWrite(led, LOW);
//Σβήσε το LED off κάνοντας την τάση LOW
delay(1000); // Περίμενε 1 δευτερόλεπτο
}

Pulse Width Modulation, ή PWM, είναι μια τεχνική για την επίτευξη αναλογικών αποτελεσμάτων με ψηφιακά μέσα. Ο ψηφιακός έλεγχος χρησιμοποιείται για να δημιουργήσει ένα τετράγωνο κύμα, ένα σήμα που είναι ενεργοποιημένο και απενεργοποιημένο. Αυτό το μοτίβο on-off μπορεί να προσομοιώσει τις τάσεις ανάμεσα στο πλήρες (5 Volt) και στο off (0 Volts) αλλάζοντας το τμήμα της ώρας που το σήμα παραμένει σε "on" σε σχέση με το χρόνο που το σήμα παραμένει σε "off". Η διάρκεια του χρόνου "on" ονομάζεται πλάτος παλμού. Για να έχετε διάφορες αναλογικές τιμές, αλλάζετε ή διαμορφώνετε αυτό το πλάτος παλμών. Εάν επαναλάβετε αυτό το μοτίβο ενεργοποίησης-απενεργοποίησης αρκετά γρήγορα με μια λυχνία LED, για παράδειγμα, το αποτέλεσμα είναι σαν το σήμα να είναι μια σταθερή τάση μεταξύ 0 και 5v που ελέγχουν τη φωτεινότητα της λυχνίας LED.

Ο παρακάτω κώδικας επιδεικνύει τη χρήση της αναλογικής εξόδου (Pulse Width
Διαμόρφωση (PWM)) για την εξασθένιση μιας LED. Το PWM είναι μια τεχνική
για τη λήψη μιας αναλογικής συμπεριφοράς από μια ψηφιακή έξοδο
με την πολύ γρήγορη απενεργοποίηση και ενεργοποίησή της. Προσέξτε ότι η θύρα 9 έχει το σύμβολο ~ που δηλώνει την PWM

 

Arduino Code
//  Ο κώδικας δείχνει πως μειώνουμε την ένταση ενός ομοιόμορφα LED χρηιμποποιώντας το analogWrite

int ledPin = 9; // LED συνδεδεμένο με το ψηφιακό pin 9
void setup() {
// δεν ορίζουμε κάτι
}
void loop() {
// αύξησε από min σε max σε βήματα των 5 μονάδων :
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)
{
// ορίζει την τιμή (από 0 σε 255):
analogWrite(ledPin, fadeValue);
// περίμενε για  30 milliseconds ώστε να φανεί το αποτέλεσμα της αύξησης
delay(30);
}
// μείωσε από  max σε min σε βήματα των  5 μονάδων:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// ορίζει τις τιμές(από 255 σε 0 ):
analogWrite(ledPin, fadeValue);
// περίμενε για  30 milliseconds ώστε να φανεί το αποτέλεσμα της μείωσης
delay(30);
}
}