Letzte Woche ging es um Fader und in diesem Artikel geht es um Arduino und Potenziometer…
Vorbereitungen:
Für dieses Projekt werden folgende Bauteile benötigt:
Schaltungsaufbau:
Ein Potenziometer hat drei Kontaktanschlüsse und wird erst mal auf das Steckboard gesteckt. Der mittlere Kontakt führt zum ersten Analog-In Pin des Arduino und dann führt ein äußerer Kontakt an 5 Volt und der andere an Ground des Arduino.
Durch das Potenziometer/den Poti wird ein analoger Sensorwert als Verzögerungszeit benutzt.
Im Beispiel wird das mittlere Bein des Potentiometers im AnalogIn 0 ausgelesen. Der Wert, der zwischen 0 und 1023 liegt, wird als Verzögerung (delay) in das Programm eingefügt und reguliert so die Blinkgeschwindigkeit der LED.
Auch mit diesem Arduino-Code macht experimentieren Sinn. Statt mit dem ausgelesenen Potiwert nur die Verzögerung festzulegen, könnte man ja auch per Potiwert den PWM Analogwert beeinflussen.
Programmierung:
int sensorPin = A0; // Arduino-Pin für Potentiometer
int ledPin = 13; // Arduino-Pin für LED
int sensorValue = 0; // Variable zum speichern des Wertes der vom Sensor/Poti kommt
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
sensorValue = analogRead(sensorPin); // Wert des Sensors/Poti lesen
digitalWrite(ledPin, HIGH); // LED einschalten
delay(sensorValue); //Verzögerung in Millisekunden laut Sensorwert
digitalWrite(ledPin, LOW); // LED aus
delay(sensorValue); //Verzögerung in Millisekunden laut Sensorwert
}
Experimente mit dem Potenziometer:
Auch mit diesem Arduino-Code macht experimentieren Sinn. Statt mit dem ausgelesenen Potiwert nur die Verzögerung festzulegen, könnte man ja auch per Potiwert den PWM Analogwert beeinflussen.
Der Arduino-Code sieht dann modifiziert so aus:
int sensorPin = A0; // Arduino-Pin für Potentiometer
int ledPin = 13; // Arduino-Pin für LED
int sensorValue = 0; // Variable zum speichern des Wertes der vom Sensor/Poti kommt
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
sensorValue = analogRead(sensorPin); // Wert des Sensors/Poti lesen
analogWrite(ledPin, sensorValue); // Sensorwert/Potiwert bestimmt PWM Analogwert
delay(1000);
digitalWrite(ledPin, LOW); // LED aus
delay(1000);
}
Der Poti beeinflusst hier also die Helligkeit der LED per PWM. Wenn man mag, kann man es sich jetzt auch richtig kompliziert machen und jeder einzelnen Poti-Position (und deren Analogwert) einem analogem Ausgabewert zuordnen.
Die Idee wäre also die, den Poti zu nutzen um die Werte für den Fader (zweites Fader-Projekt) einzustellen.
Der Fader (Analog Out) schreibt ja per „analogWrite“ Werte von 0 bis 255 an den Arduino-Pin.
Im zweiten Fader-Projekt wird zuerst der Wert „50“ an die LED/ den LED-Pin geschrieben.
- Wert 1 = 50
- Wert 2 = 100
- Wert 3 = 200
- Wert 4 = 255
Im zweiten Fader Projekt stehen diese Werte aber fest im Arduino-Code. Hier ist jetzt die Idee diese Werte abhängig vom Poti zu verändern.
Schauen wir uns die loop nochmal genauer an:
void loop()
{
sensorValue = analogRead(sensorPin); // Wert des Sensors/Poti lesen
analogWrite(ledPin, sensorValue); // Sensorwert/Potiwert bestimmt PWM Analogwert
delay(1000);
digitalWrite(ledPin, LOW); // LED aus
delay(1000);
}
Per „sensorValue“ wird der Sensorpin, der hier der Potipin ist, gelesen. Die Werte die hier gelesen werden können sind Werte zwischen 0 und 1023.
Per „analogWrite“ wird jetzt der Potiwert an den LED-Pin geschickt. Da „analogWrite“ aber nur Werte von 0 bis 255 ermöglicht, gibt es eventuell ein kleines Problem.
Was passiert wenn der Poti einen Wert über 255 „sendet“?
Das „delay“ ist auf 1000 Millisekunden eingestellt.
Per „digitalWrite“ wird die LED auf Low gesetzt.
Die Mischung von analogWrite und digitalWrite ist ein weiteres Highlight dieses Arduino-Codes.
Interessant an diesem Projekt bleibt für mich die Frage wie die „Übersetzung“ zwischen analogRead und analogWrite realisiert wird.
Aus meiner Sicht gibt es mindestens zwei verschiedene Möglichkeiten:
- Potiwert 0-255 werden direkt so weitergegeben und alles darüber ist auch gleich 255
- Potiwert 1023 entspricht analogWrite-Wert 255
Arduino Gruppe Peine:
Wer sich für Mikrocontroller Programmierung interessiert ist in der Arduino Gruppe Peine genau richtig. Auch Raspberry Fans und Nutzer anderer Mikrocontroller sind willkommen.
Die Arduino Gruppe Peine trifft sich Dienstags von 18:00 Uhr bis 21:00 Uhr. Die Teilnehmerzahl ist begrenzt und deshalb bitte vorher per Kontaktformular oder Mail an info@fuhselab.de melden. Der Veranstaltungsort wird kurzfristig festgelegt und den Teilnehmerinnen und Teilnehmern per E-Mail mitgeteilt.
Das Angebot “Arduino Gruppe Peine“ kann für einen Jahresbeitrag von 60,- Euro genutzt werden. Für einen Beitrag von 20,- Euro pro Teilnehmer können die Workshops genutzt werden. Materialkosten werden projektabhängig zusätzlich erhoben.
Weitere interessante Webartikel zum Thema Arduino gibt es auf der Fuhselab Webseite und in der Artikelübersicht 2022 und der Artikelübersicht 2023.