Analoge Ein- und Ausgabe
In diesem Beispiel wird eine LED über ein Potentiometer an- und ausgedimmt. Das Potentiometer ist auf der einen Seite mit dem 5V+ und auf der anderen Seite mit dem GND verbunden. Das mittlere Beinchen des Potentiometers ist mit dem Analog In 3 verbunden.
Wichtig hier bei ist, dass eine analoge Ausgabe nur auf PWM-Kanälen funktionieren kann (Digital Pins 3,5,6,9,10 oder 11)
/* Grundlagen analoge Ein- und Ausgabe
Autor: Stefan Hermann
URL: www.physical-computing.de */
int ledPin1=3; // wichtig ist, dass PWM-Pins benutzt werden (Pins: 3,5,6,9,10,11)
int potiPin=3; // Analog In
int val; // Speichert den aktuellen Sensorwert zwischen
void setup(){
pinMode(ledPin1,OUTPUT); // deklariert den Pin von LED1 als Ausgang
}
void loop(){
val=analogRead(potiPin); // der aktuelle Poti-Wert wird eingelesen. es können Werte zwischen 0 und 1023 entstehen
// die Analoge Ausgabe erfolgt auf digitalen Pins. Werte zwischen 0 und 255 können angegeben werden
analogWrite(ledPin1,val/4); // val/4 ergibt Werte zwischen 0 und 255
}

Diaak
4 Mai, 2008
Hallo zusammen,
ich hab das gerade nachgebaut und versucht abzuändern. Statt 2 habe ich 3 LED’s auf board gepackt und wollte, dass sie mit steigenden Potentiometer-Werten nacheinander anfangen hell zu werden. Wenn ich das richtig verstanden habe, bedeutet ein kleiner Wert wenig leuchten. Also habe ich:
analogWrite(ledPin1,val/4);
analogWrite(ledPin2,val/8);
analogWrite(ledPin3,val/12);
einfach durch höhere Werte geteilt, die, die sich dann rechnerisch ergeben steigen ja langsamer.
Leider fangen trotzdem alle 3 LED’s gleichzeitig und vor allem gleich hell an zu leuchten. Sind die Wertunterschiede nicht hoch genug? Oder wieso ist das so?
lg,
diaak
Diaak
4 Mai, 2008
edit: Ja, sind sie. Hätte ich ja auch gleich selbst probieren können. ;D Nun muss ich mir nur noch ne Funktion ausdenken, die die Werte unterschiedlich schnell steigen, aber trotzdem bei den gleichen Maximalwerten enden lässt.
Stefan
9 Mai, 2008
Also man muss darauf achten, dass man für analoge Ausgaben PWM-Kanäle benutzt.
Die analogen Ausgabewerte können zwischen 0 und 255 liegen.