Interaction Design WikiBits & Atoms III

Pulse Width Modulation

English Version

Um z.B. eine LED zum ‘Faden’ zu bringen benötigen wir eine Pulse-Width Modulation. Dabei wird ein digitales Signal am Arduino ausgegeben, welches den entsprechenden PIN (PWM Pins sind mit PWM bzw. ~ gekennzeichnet) sehr schnell EIN und AUS schaltet. Je länger nun die EIN-Zeiten des Pins sind, desto heller erscheint uns die LED – im Gegensatz dazu erscheint uns die LED dunkler, wenn die AUS-Zeiten länger sind. Die PWM Funktion des Mikrocontrollers ermöglicht es uns einfache Werte an dem entsprechenden PIN zu setzen 0 entspricht dabei 0V oder AUS und 255 entspricht 5V bzw. EIN. Jeglicher Zwischenwert (z.B. 127) kann als eine Zusammensetzung aus 0V und 5V gesehen werden und entspricht dann z.B. 2.5V.

Visualisierung

Diese Visualisierung zeigt, wie ein PWM Wert vom Arduino generiert wird. 

Funktion
 

Um über einen PWM fähigen Pin am Arduino z.B. eine LED zu dimmen rufen wir für diesen Pin folgende Funktion auf:

analogWrite(PIN, Wert);
Ausgeben des Wertes (0-255) am angegebenen PIN


Hier ein kurzes Beispiel, welches eine LED fadet

Beispiel PWM Expand source
#define LED_PIN 11 // PWM fähiger PIN
 
void setup()
{
  pinMode(LED_PIN, OUTPUT); 
}
 
void loop()
{
  for(int i=0; i<255; i++)
  {
    analogWrite(LED_PIN, i); // Den Wert i an LED_PIN setzen
    delay(10);
  }
   
  for(int i= 255; i>0; i--)
  {
    analogWrite(LED_PIN, i); // Den Wert i an LED_PIN setzen
    delay(10);
  }
}

Weitere Informationen:

PWM - auf Arduino.cc
The Secrets of Arduino PWM - auf Arduino.cc
analogWrite() - auf Arduino.cc
Pulse-Width-Modulation - auf Wikipedia.org