Analog Out - PWM

Eine variable Spannung mittels Pulsbreitenmodulation (englisch: PWM Pulsewidth Modulation) kann nur an bestimmten Pins eines Arduino Boards ausgegeben werden. Am Arduino Duemilanove sind dies Pin# 3,5,6,9,10,11
In diesem Beispiel wird eine LED an Pin 3 kontinuierlich auf und abgedimmt.

#define LED 3                 // choose the pin for the LED

int value = 0;             // int to store PWM value

void setup() {
pinMode(LED, OUTPUT);        // declare LED as output
}

void loop(){

for (value = 0; value < = 255; value++){
analogWrite(LED, value);
delay(10);
}
for (value = 255; value >= 0; value--){
analogWrite(LED, value);
delay(10);
}

}

Auf Druck eines Tasters an Pin2 wird eine LED an Pin3 heller und dunkler.

#define LED 3                   // LED connected to digital pin 3
#define BUTTON 2                // Button connected to pin 2

boolean val = 0;                // variable for reading the button status
boolean oldval = 0;             // old button status
int brightness = 0;             // LED brightness

boolean fadedirection = 0;      // fading up = 0 - fading down = 1

void setup() {
pinMode(LED, OUTPUT);         // declare LED as output
pinMode(BUTTON, INPUT);       // declare pushbutton as input
digitalWrite(BUTTON, HIGH);   // use internal Pull up Resistor!
}

void loop(){
val = digitalRead(BUTTON);                            // read input value

if ((val == LOW) &amp;amp;&amp;amp; (oldval == LOW)) {              // check whether key is held down
delay(10);                                          // debounce the key!

if ((fadedirection == 0) &amp;amp;&amp;amp; (brightness < 255)){
brightness++;
}
if (brightness >= 255){                             // going down
fadedirection = 1;
}
if ((fadedirection == 1) &amp;amp;&amp;amp; (brightness > 0)){
brightness--;
}
if(brightness <= 0){
fadedirection = 0;
}
}
oldval = val;                                  // val is now old
delay(10);
analogWrite(LED, brightness);                  // set PWM
}

Aufgabe:
Wenn ein Taster länger als eine Sekunde gedrückt wird dimmt eine LED auf.
Wird der Taster erneut länger als eine Sekunde gedrückt, so wird die LED dunkler.