Du hast bereits sehr wesentliche Eigenschaften vom Arduino kennengelernt. Du kennst:
- die digitale Ausgabe (digitalWrite)
- die analoge Ausgabe (analogWrite)
- das digitale Einlesen (digitalRead)
In diesem Posten werden wir das analoge Einlesen (analogRead) genauer anschauen. Beim digitalRead konntest du nur zwischen 5V und 0V unterscheiden (also nur zwei Zustände). Beim analogRead kannst du aber ganz genaue Spannungen von 0V bis 5V auslesen (genau 1024 Zustände).
Dies ist zum Beispiel wichtig, wenn man mit einem Drehregler ("Potentiometer" oder kurz: "Poti") etwas ansteuern möchte. Doch mehr dazu später.
Du kannst den Wert des Potentiometer auslesen und diesen Wert auf dem seriellen Monitor ausgeben.
- Ardurobot
- Steckkabel
- LED
- 200 Ohm Widerstand
- Potentiometer (Drehregler)
Potentiometer (Drehregler)
Der Drehregler ist nichts anderes als ein verstellbarer Widerstand.
Er hat drei Kontakte. Von vorn gesehen:
- der linke Kontakt wird mit GND verbunden
- der rechte Kontakt wird mit 5V (Vcc) verbunden
- der mittlere Kontakt ist der verstellbare Widerstand
Die genaue Funktion vom Potentiometer kannst du gerne im Netz nachlesen (z.B. hier). Wichtig für uns zu wissen ist, dass wir die Spannung am mittleren Pin variieren, wenn wir am Regler drehen.
Bildquelle: Funduino.de
AnalogRead
Diese Spannung (siehe oben) lässt sich mit dem Arduino - ähnlich wie bei einem Spannungsmessgerät - messen. Weil dies für einen Mikrocontroller speziell schwierig ist, hat unser Arduino dafür auch spezielle Pins zugeteilt gekriegt.
Schau dir den Arduino mal genauer an. Siehst du die speziellen Pins? Sie sind mit A0 bis A5 bezeichnet und befinden sich unten links (wenn oben bei der USB-Buchse ist).
Mit diesen Pins lässt sich die Spannung von 0V bis 5V auf 1024 einzelne Teilschritte aufteilen. 0V entspricht dem Wert 0. 2,5V entspricht dem Wert 512. 5V entspricht dem Wert 1023.
Was das genau heisst, wirst du merken, wenn du erst einmal die Versuchsanordnung aufgebaut hast und den Sketch auf deinen Arduino geladen hast. Also dann, rann ans Bauen!
Aufbauschema
Sketch 1
Lade folgenden Sketch auf deinen Arduino:
Aufgabe 1:
Dreh nun etwas am Potentiometer. Was fällt dir auf? Wie erklärst du dir dieses Phänomen (schau dir dafür den Sketch genau an!)
Sketch 2
Nun wollen wir aber genau wissen, wie lange die Pausen zwischen den Blinken sind. Dafür lassen wir den Wert am seriellen Monitor darstellen.
Lade dafür folgenden Sketch auf deinen Arduino:
Aufgabe 2:
Öffne nun wieder den seriellen Monitor und beobachte die Veränderung der Werte des Potentiometer, wenn du daran drehst.
Das analoge Auslesen von Spannungen (analogRead) ist etwas sehr wichtiges, wenn du mit Sensoren arbeiten möchtest. Einen solcher Sensor haben wir in diesem Posten kennengelernt (der Drehregler).
Löse nun folgende Vertiefungsaufgaben.
Vertiefungsaufgabe 1:
Verwende statt dem Pin A3 einen anderen analogen Pin (z.B. Pin A4).
Vertiefungsaufgabe 2:
Beim seriellen Monitor steht vor dem Wert des Potentiometers jeweils "Wert des Poti". Verändere nun diesen Text, so dass z.B. "Wert des Drehreglers" oder sonst etwas sinnvolles steht.
Vertiefungsaufgabe 3:
Zwei LEDs sollen abwechslungsweise blinken. Die Geschwindigkeit des Blinkens lässt sich wie bei unserem Beispielssketchs mit dem Potentiometer variieren. Baue die Schaltung auf und erstelle einen entsprechenden Sketch dafür.
Vertiefungsaufgabe 4:
Manchmal möchte man einfach den Wert eines Sensors nur auslesen und ihn auf dem seriellen Monitor darstellen lassen, um zu sehen, wie sich der Wert beeinflussen und manipulieren lässt.
Erstelle einen Sketch, der nichts anderes tut, als den Wert des Sensors (bei uns: Drehregler) auf dem seriellen Monitor anzuzeigen.
In Zweier- oder Dreiergruppen:
Mit dem Potentiometer kannst du auch die Geschwindigkeiten der Motoren steuern.
Weil jedoch das Potentiometer Werte von 0 - 1023 liefert und wir für das analogWrite nur Werte von 0-255 brauchen, können wir die Werte also nicht direkt übernehmen.
Es gibt verschiedene Möglichkeiten, wie man das lösen kann. Z.B. könnte man einen entsprechenden Widerstand vor das Potentiometer hängen oder man könnte einfach die Zahl des Potentiometers durch vier teilen. Die schönste Variante ist jedoch, wenn man dafür den Map-Befehl braucht. Denn dieser kann einen Zahlenstrahl auf einen beliebigen anderen Zahlenstrahl strecken oder kürzen. Genauere Infos, und wie man diesen anwendet, findest du hier.
Welche Variante du wählst ist dir überlassen. Schaffst du die Challenge?