Materialien zum Unterricht

Lauflichtgeschwindigkeit regeln

Die Geschwindigkeit des Lauflichtes wird über die Wartezeit in der for-Schleife bestimmt. Wenn dieser Wert geändert wird, ändert sich auch die Geschwindigkeit.
Die Wartezeit soll über eine veränderbare Spannung, die mit einem Potentiometer eingestellt wird, festgelegt werden. Dazu muss ein Analogeingang, z.B. A0, benutzt werden.

1. Spannung über einen Analogeingang messen

Schließe einen drehbaren Widerstand (Potentiometer) an den analogen Eingang A0 an. Die beiden äußeren Kontakte werden mit 5V und Masse (GND) verbunden (egal wie rum), der mittlere Kontakt geht an den analogen Eingang.

void setup(void) {
    Serial.begin(9600); 
}

void loop(void) {
   int v=analogRead(A0);
   Serial.print("A0 = ");
   Serial.print(v);
   delay(1000);
}

Damit die eingelesenen Werte zu sehen sind, muss eine serielle Verbindung zwischen dem Arduino und dem Computer geschaffen werden.

Serial.begin(9600);

Der Wert in der Klammer legt die Übertragungsgeschwindigkeit fest und ist momentan nicht wichtig.

Im loop-Teil wird der Variablen v der Wert zugewiesen, der gerade am Anschluss A0 anliegt. Die beiden nächsten Zeilen geben diese Were aus. Sehen kann man sie Serial Monitor (Tools, Serial Monitor).

Der Controller wandelt die anliegende Spannung, die zwischen 0 und 5 V liegen darf, in Zahlenwerte zwischen 0 und 1023 um (das sind 1024 Wert). Damit man die Spannung anzeigen kann, muss dieser Wert in einen entsprechenden Spannungswert umgewandelt werden.

void loop(void) {
   int v=analogRead(A0);
   Serial.print("A0 = ");
   Serial.print(v);
   Serial.print(" = ");
   Serial.print(v/1024.0*5);
   Serial.printnl(" V");
   delay(1000); 
}
Erklärung: Der eingelesene Wert wird durch 1024.0 geteilt (die Kommastelle muss mit angegeben werden!) Dieser Wert wird dann mit 5 multipliziert und ausgegeben.

Beispiel: Wenn am Anschluss A0 2,5 V anliegen, ergibt das den Wert 512, also die Hälfte von 1024. Teilt man 512 durch 1024, erhält man 0,5. Dieser Wert mit 5 multipliziert ergibt die gewünschten 2,5.

 

2. Regeln der Geschwindigkeit

Der über das Potentiometer eingestellte Spannungswert wird bei jeden Schleifendurchlauf abgefragt und daraus ein Wert für den delay-Befehl berechnet.

Aufgabe: Ändere die Berechnung der Wartezeit, so dass auch bei schneller Bewegung der leuchtende Punkt noch zu verfolgen ist.

Aufgabe: Lass in einer leuchtenden Reihe einen dunklen Punkt wandern.

boolean an=LOW;
boolean aus=HIGH;

void setup() {
  for (int i=0; i<=7; i++) {
    pinMode(i,OUTPUT);
  }
}

void loop() {
  for (int i=0; i<=7; i++) {  
    digitalWrite(i,an); 
    int w=analogRead(A0);
    w=(w/1024.0*100)+10;
    delay(w); 
    digitalWrite(i,aus); 
  }
}

zurück