Beim folgenden Beispiel wird die Helligkeit einer LED über ein Potentiometer gesteuert.
Zum Anschluss der LED und des Potentiometers an ein Arduino Board wird folgendes benötigt:
Vom Arduino GND Pin wird ein schwarzes Jumperkabel zur Masse Reihe (blau) gesteckt. Die LED wird wie in der Abbildung auf das Steckbrett gesteckt. Das zweite Jumperkabel geht vom Arduino Pin 11 zur Anode der LED (längerer Draht). Der 220 Ohm Widerstand wird zwischen der Kathode der LED (abgeflachte Seite des Gehäuses) und der GND Reihe gesteckt.
Das Potentiometer wird neben die LED gesteckt, der linke Pin mit der GND Reihe verbunden, dert mittlere Pin geht zum Arduino Pin A0, der reechte Pin zur +5V Reihe.
Zudem muss die +5V Reihe mit dem +5V Pin des Arduino verbunden werden.
Steckbrett Ansicht:
Schaltplan:
Um den Pin, an dem die LED angeschlossen wird, nicht ständig als Zahl angeben zu müssen, wird eine Konstante namens ledPin global erzeugt und mit dem Wert 11 (der Pin an dem die LED angeschlossen wird) initialisiert. Falls wir die LED später an einem anderen Pin anschliessen wollen, brauchen wir nur den Wert der Konstanten ändern und nicht überall im Programm.
Dasselbe machen wir für den Pin an dem das Potentiometer angeschlossen wird. Das Potentiometer wird in diesem Beispiel an Pin A0 angeschlossen
const int potPin = A0;
const int ledPin = 11;
Zudem benötigen wir eine Variable um den Zusatnbd des Tasters zwischen zu speichern.
int buttonState = 0;
In der Setup Funktion des Arduino Programms wird der Pin für die LED als Ausgang und der Pin für den Taster als Eingang mit dem **pinMode() ** Befehl gesetzt.
pinMode(potPin, INPUT);
pinMode(ledPin, OUTPUT);
In der Loop Funktion wird zunächst der Wert des Potentiometers in die Variable potiValue mit der Funktion analogRead() eingelesen. Der Ausgangswert ledValue wird mit Hilfe der map() aus der potiValue Variable errechnet. Dann wird der errechnete ledValue Wert mit analogWrite als PWM Wert am ledPin ausgegeben.
potiValue = analogRead(potPin);
ledValue = map(potiValue, 0, 1023, 0, 255);
analogWrite(ledPin, ledValue);
Die Loop Funktion wird ständig aufgerufen, solange der Arduiuno läuft.
Das Programm setzt die Helligkeit der LED in Abhängigkeit des Potentiometer Wertes.
So sieht das komplette Programm aus:
// C++ code
//
const int potPin = A0;
const int ledPin = 11;
int potiValue = 0;
int ledValue = 0;
void setup()
{
pinMode(potPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
potiValue = analogRead(potPin);
ledValue = map(potiValue, 0, 1023, 0, 255);
analogWrite(ledPin, ledValue);
delay(10); // Delay a little bit to improve simulation performance
}
Es gibt eine Simulation für TinkerCAD Circuits. Hier kann die Schaltung simuliert werden, inklusive des Arduino Programm in Blocks bzw C++.
Hier das Programm in Blocks:
Und so sieht die Simulation der Schaltung aus.
Der Link zur TinkerCAD Circuits Simulation. Ein Klick auf Start Simulation startet die Simulation.
Tinkercad Circuits - Arduino fade LED mit Potentiometer