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; (oldval == LOW)) { // check whether key is held down
delay(10); // debounce the key!
if ((fadedirection == 0) &amp;&amp; (brightness < 255)){
brightness++;
}
if (brightness >= 255){ // going down
fadedirection = 1;
}
if ((fadedirection == 1) &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.