Baue ein Trimmpoti als Spannungsteiler so ein, dass eine
Spannung zwischen 0 V und 5 V eingestellt werden kann. Diese Spannung soll über
den Analogeingang A0 gemessen werden.
//Analog A0
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("A0 = ");
Serial.println(analogRead(A0));
delay(100);
}
Der Versuch zeigt, dass die Ausgabe jede Zahl zwischen 0
und 1023 zeigen kann. 0 steht für 0 V und 1023 steht für 5 V. Warum gerade
1023? Weil das die größte 10-Bit-Zahl ist. 11 111 111 (binär) = 1023 (dezimal).
Ändere das Programm so, dass die Spannung in Volt
angezeigt wird.
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("A0 = ");
Serial.println(analogRead(A0) * (5.0 /
1023.0));
delay(100);
}
Schaue dir die Messwerte im seriellen Monitor an. Du
kannst jetzt alles zwischen 0,00 V und 5,00 V einstellen. Versuche einmal,
genau 2,50 V zu treffen.
Beende dann den seriellen Monitor und starte den seriellen
Plotter. Damit werden deine Messwerte in einem Diagramm aufgezeichnet. Bewege
das Poti und beobachte die Änderungen im Diagramm.
Verringere die Wartezeit im Programm auf eine
Millisekunde. Führe dann eine Messung mit einem freien Kabel an A0 durch. Wenn
du das Ende anfasst, siehst du die 50-Hz-Schwingungen der Netzleitung als
Störsignale. Ohne direkte Berührung werden die Schwingungen kleiner.
Der serielle Plotter zeigt 500 Messwerte von links nach
rechts. Bei einer Verzögerung von einer Millisekunde dürften doch eigentlich
nur 25 Schwingungen aufgezeichnet werden. Warum sind es so viele? Weil die
Übertragung der Daten zu langsam ist. Stelle daher einmal in deinem Programm
und im seriellen Plotter eine Übertragungsrate von 500 000 Baud ein. Dann sieht
das Bild so aus: Es werden 37 Schwingungen gezeichnet. Damit hast du schon ein
recht ordentliches Oszilloskop gebaut.
Halte nun deine Hand nur in die Nähe des offenen Kabels und bewege deie Füße
auf dem Boden. Die Bewegungen werden klar und deutlich aufgezeichnet. Es liegt
daran, dass du dich durch die Bewegung unterschiedlich elektrisch auflädst.
Teste einmal ganz genau, ab welcher Spannung ein
digitaler Port eine 1 erkennt und unterhalb welcher Spannung er eine 0 liest.
Es gibt da einen engen Bereich, in dem jeweils der letzte Zustand erhalten
bleibt. Man nennt das Hysterese. Eine eindeutige Null findet man zum Beispiel
bei Spannungen unter 2,3 V, eine eindeutige Eins bei über 2,5 V. Aber diese
Eckpunkte können bei jedem Controller etwas anders sein.
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("D2 = ");
Serial.print(digitalRead(2));
Serial.print(" ");
Serial.print("A0 = ");
Serial.print(analogRead(A0) * (5.0 /
1023.0));
Serial.println(" V");
delay(100);
}
Miss die Spannung einer LED. Bei der roten LED kannst du
feststellen, dass erst ab einer Spannung über 1,5 V das Leuchten beginnt. Auch
bei großer Helligkeit steigt die Spannung nicht über 1,8 V. Untersuche auch
andere Farben.
Aufgabe 1: Baue ein Spiel und gewinne es!
Das Spiel geht so: Im seriellen Plotter entstehen zwei Linien. Die eine folgt einer perfekten Sinusfunktion. Die andere steuerst du mit dem Poti am Anschluss A0. Die Aufgabe besteht darin, beide Linien so gut wie möglich zur Deckung zu bringen. Du musst also die Spannung am Poti so nachstellen, dass sie der berechneten Kurve folgt.
Das Programm braucht zwei Variablen. int t wird als
Zähler gebraucht, der mit t++ erhöht wird. float sinus kann eine Kommazahl
(float) aufnehmen, mit der die berechnete Sinusfunktion dargestellt werden
soll. Das macht nichts, wenn man die Berechnung noch nicht ganz versteht, man muss
sie nur richtig in den Quelltexteditor bringen, kompilieren und laden.
//Sinus verfolgen
int t;
void setup() {
Serial.begin(9600);
}
void loop() {
t++;
float sinus = 2.5 + 2.5 * sin (t /
50.0);
Serial.print("S ");
Serial.print(sinus);
Serial.print(" A0 ");
Serial.println(analogRead(A0) * (5.0 /
1023.0));
delay(10);
}
Hier kommt das noch nicht perfekte Ergebnis eines ersten
Spiels. Man sieht zwar, dass die orange Linie der roten folgen soll, aber das
geht noch besser!
Aufgabe 2: Entwickle eine elektronische Flöte, deren
Tonhöhe mit dem Poti eingestellt wird.
Download: Arduino3.zip
Zurück: ArduinoKurs2.htm