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(9pwm_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

Schaltplan

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.