Mit einem Potenziometer (kurz: Poti) lässt sich ein analoger Wert am Arduino auslesen. Ein Poti verringert die Spannung durch drehen oder schieben am Regler von 5 Volt Stufenlos bis auf 0 Volt. Dieser Änderung der Spannung kann an einem analogen Eingang des Arduino abgefragt werden und auf die Helligkeit einer LED ausgegeben werden. Kurz gesagt wir bauen einen Dimmer.
- Ein Poti wird über 5 Volt und GND an einen analogen Eingang PIN "A0" verdrahtet.
- Eine LED wird über einen Vorwiderstand (220 Ohm) an einen digitalen (PWM) PIN "D9" angeschlossen.
Der höchste Wert am Arduino ist 5 Volt was einem Wert von 1024 entspricht und einem niedrigsten Wert von 0 Volt was einem Wert von 0 entspricht. Der PWM Ausgang des Arduino kann aber nur einen Wert von 0 bis 255 ausgeben. Würde die LED wie auf Bild geregelt werden dann wäre die hellste Stufe bei einer 1/4 Umdrehung des Poti bereits erreicht.
Um dies zu ändern braucht es entweder den "map, to" oder den "zuordnen" Block, der aus dem oberen Wert des Eingang 1023 einen oberen Wert bis 255 macht. Lädt man das folgende Beispiel auf den Arduino und öffnet den Serial Monitor, dann sieht man wie aus den 0 bis 1023 der Wert 0 bis 255 wird.
Die untere Grenze "0" des A0 entspricht weiterhin dem Wer 0 daran ändert sich nichts.
Was sich ändert ist der obere Wert. Aus den 1023 werden dann 255 und alle Werte dazwischen werden im Verhältnis aufgeteilt. 511 entspricht dann zum Beispiel einem Wert von 127. Damit stimmt die Drehung des Poti mit der Helligkeit der LED überein. 0 ist damit aus und 1023 ist damit 255 und die LED leuchtet in der hellsten Stufe.
Nun muss man den zugeordneten Wert nur noch auf einen PWM Pin, hier der Pin 9 ausgeben. Nun kann die Helligkeit der LED über den Poti von "aus" bis "ganz hell" geregelt werden. Im oberen Beispiel ist über den Serial Monitor noch die "Zuordnung" zu sehen.
Natürlich muss das "zuordnen" nicht über eine Variable realisiert werden. Der "zuordnen" Block kann auch direkt an den "analogWrite" Block angedockt werden.
Da ein Wert von 255 an einem PWM Pin im Grund 5 Volt beuteten würde die LED ohne den Vorwiderstand kaputt gehen. Wenn die LED aber schon an einem PWM Pin angeschlossen ist kann man sich diesen Widerstand auch "sparen". Hierzu braucht es dann den Block "zuordnen". Damit kann frei entschieden werden wie der Wert des analogen Eingangs umgerechnet wird. Meine rote LED darf maximal 2,3 Volt "bekommen", dies entspricht bei mir einem Wert 222, da ich das zum testen viel zu hell finde verwende ich einen Wert von 190.
Wenn der Ausgang des PWM Signals also über die Software begrenzt wird kann auf den Wiederstand verzichtet werden.
Das fertige Programm für den Dimmer sieht dann so wie auf dem Bild unten aus. Dreht man den Poti nun von links nach rechts ändert sich die Helligkeit der LED der Stellung des Poti entsprechend.
Der dazugehörige Arduino Code sieht dann so aus:
void setup() {
}
void loop() {
analogWrite(9 , map ( analogRead(0) , 0 , 1023 , 0 , 190 ) );
}