Lösung: LED PWM II
Sketch: Quelltext
// Variablen
int Helligkeit=0; // Helligkeit in 10 Stufen
int pwm_wert=0; // PWM-Wert für analogWrite()
void setup() {
pinMode(8, INPUT_PULLUP); // + Taster
pinMode(7, INPUT_PULLUP); // - Taster
pinMode(9, OUTPUT); // interne LED
digitalWrite(9, LOW); // interne LED aus
}
void loop() {
// ***** Tastaturabfrage *****
if (digitalRead(8)==LOW){
if (Helligkeit < 10) {
Helligkeit = Helligkeit + 1;
}
}
if (digitalRead(7)==LOW){
if (Helligkeit > 0) {
Helligkeit = Helligkeit - 1;
}
}
// ***** PWM Berechnung *****
pwm_wert = (255*Helligkeit)/10;
analogWrite(9, pwm_wert);
delay(200); // Tasten entprellen
// ***** PWM Ende *****
}
Sketch: Erklärung
Variablen
Die globale Variable Helligkeit wird als int (Integer) definiert und mit 0 initialisiert.
Die globale Variable pwm_wert wird als int (Integer) definiert und mit 0 initialisiert.
Setup
Pin 8 und Pin 7 werden als INPUT_PULLUP definiert.
Pin 9 (externe LED mit Vorwiderstand) als OUTPUT .
Die interne LED wird ausgeschaltet.
Loop
Wenn der Taster an Pin 8 gedrückt wurde, wird zunächst überprüft, ob der Wert von Helligkeit < 10 ist, damit kein Überlauf stattfindet. Wenn nicht, wird der Wert um 1 erhöht.
Wenn der Taster an Pin 9 gedrückt wurde, wird zunächst überprüft, ob der Wert von Helligkeit > 0 ist, damit kein Überlauf stattfindet. Wenn nicht, wird der Wert um 1 erniedrigt.
Im PWM-Teil wird als erstes der pwm_wert aus der Variablen Helligkeit berechnet. Der pwm_wert muss zwischen 0 und 255 liegen und entspricht dem Tastverhältnis des mit analogWrite(9 , pwm_wert ) ausgegebenen PWM-Signals.
Die Wartezeit von 200 ms dient der Tasten-Entprellung und zur Herabsetzung der Reaktionszeit der Tasten. Ist die Wartezeit zu niedrig, kann der Wert von Helligkeit mit den Tastern nicht mehr vernünftig eingestellt werden.
Schaltplan / Layout
Elektronik / Hardware
Man muss darauf achten, den Taster richtig anzuschließen, ggf. muss man vorher mit einem Durchgangsprüfer die Pinbelegung des Tasters prüfen.
Da Pin 8 und Pin 9 low-active sind, müssen die Taster mit GND verbunden werden.
Die LED muss mit einem passenden Vorwiderstand in Reihe geschaltet werden.
Andernfalls können die LED oder das Arduino-Board beschädigt oder zerstört werden.
|