Werte im Seriellen Monitor sind schön und gut, aber sicherlich möchtest du lieber etwas Hardware steuern. Also los – Zeit für einen Dimmer für deine LED!
Auf deinem Breadboard sollten sich jetzt sowohl die LED samt Vorwiderstand als auch dein Poti befinden. Wenn nicht, baue diese kurz auf mit Hilfe dieser Skizze, die du schon aus der letzten Lektion kennst:
In der vorangegangen Lektion hast du gesehen, wie du mit dem Poti an einem Analog-Pin Werte von 0 bis 1023 erzeugen kannst.
Diese Werte kannst du verwenden, um sie direkt auf die Helligkeit der LED “umzulegen”. Das würde bedeuten, dass 0 eine erloschene LED bedeutet und 1023 eine mit maximaler Helligkeit.
___STEADY_PAYWALL___
Aber: Es gibt hier einen kleinen Haken. Um die Helligkeit der LED zu steuern, benötigen wir ein analoges (veränderbares) Signal. Dieses wird mit Hilfe der Pulsweitenmodulation (kurz PWM) erzeugt. Kurz gesagt, kannst du damit ein analoges Signal über einen Digital-Pin simulieren. Die Signalstärke bzw. Stromspannung wird durch Aus- und Anschalten des Pins in einer bestimmten Frequenz erzeugt.
So erreichst du, dass die LED nicht nur einfach (digital) an oder aus ist, sondern, dass du sie durch höhere oder niedrigere Spannungen heller oder dunkler “drehen” kannst.
Allerdings sind bei der Verwendung von PWM nur Werte von 0 bis 255 erlaubt. Dein Poti “liefert” jedoch 0 bis 1023. Deshalb benötigst du eine weitere neue Funktion: map();
So bringst du die Werte zueinander
Die Map-Funktion ist äußerst praktisch und wird dir zukünftig noch häufiger zur Seite stehen. Ihr Prinzip ist dabei ganz einfach:
Du nimmst einen bestimmten Wert, der in einem Bereich X liegt. Anschließend ermittelst du, auf welcher Position dieser Wert in einem anderen (größer oder kleineren) Bereich Y liegt.
In deinem Sketch sieht das dann folgendermaßen aus:
potiWert = analogRead(potiPin);
ledWert = map(potiWert, 0, 1023, 0, 255);
Zunächst liest du den aktuellen Wert des Potis mit der Funktion analogRead() aus. Das analoge Signal des Potis wird mit Hilfe des Analog-Digital-Konverters in einen Wert von 0 bis 1023 umgewandelt.
Der ermittelte potiWert ist der erste Parameter in der Funktion. Gefolgt vom zulässigen Bereich des Potis, also 0 bis 1023.
Zuletzt fehlt noch der Bereich, in dem der entsprechende potiWert gefunden werden soll. Das ist der zulässige Bereich der PWM, also 0 bis 255. Den entsprechenden Wert speicherst du dann in der Variablen ledWert.
Lass die LED leuchten
Nun musst du nur noch den ledWert zur LED bringen. Das machst du mit der Funktion analogWrite()
analogWrite(ledPin, ledWert);
Diese bedient sich der Pulsweitenmodulation und erzeugt ein Signal, dass die LED mit der gewünschten, am Poti eingestellten Helligkeit, aufleuchten lässt.
Probiere es gleich aus! Den passenden Sketch findest du in den Downloads dieser Lektion.