Lösung: LED PWM I

Sketch: Quelltext

// Variablen
int Helligkeit=0;

void setup() {
  pinMode(8, INPUT_PULLUP);   // + Taster
  pinMode(9, INPUT_PULLUP);   // - Taster
  pinMode(13, OUTPUT);        // interne LED
  digitalWrite(13, LOW);      // interne LED aus
}

void loop() {
  if (digitalRead(8)==LOW){
    if (Helligkeit < 10) {
      Helligkeit = Helligkeit + 1;
    }
  }
  if (digitalRead(9)==LOW){
    if (Helligkeit > 0) {
      Helligkeit = Helligkeit - 1;
    }
  }
  // ***** PWM Beginn *****
  digitalWrite(13,HIGH);
  delay(Helligkeit*2);
  digitalWrite(13,LOW);
  delay((10-Helligkeit)*2);
  // ***** PWM Ende *****
}

Sketch: Erklärung

Variablen

Die globale Variable Helligkeit wird als int (Integer) definiert und mit 0 initialisiert.

Setup

Pin 8 und Pin 9 werden als INPUT_PULLUP definiert, Pin 13 (interne LED) 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 die LED ensprechend des Wertes von Helligkeit ein- bzw. ausgeschaltet.

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.

Messungen

PWM