int trigger=7; //Trigger-Pin des Ultraschallsensors an Pin7 des Arduino-Boards
int echo=6; // Echo-Pim des Ultraschallsensors an Pin6 des Arduino-Boards
int R=13; //rechtern reifem+
int L=12; //linker reifen
long dauer=0; // Das Wort dauer ist jetzt eine Variable, unter der die Zeit gespeichert wird, die eine Schallwelle bis zur Reflektion und zurück benötigt. Startwert ist hier 0.
long entfernung=0; // Das Wort „entfernung“ ist jetzt die variable, unter der die berechnete Entfernung gespeichert wird. Info: Anstelle von „int“ steht hier vor den beiden Variablen „long“. Das hat den Vorteil, dass eine größere Zahl gespeichert werden kann. Nachteil: Die Variable benötigt mehr Platz im Speicher.
void setup()
{
Serial.begin (9600); //Serielle kommunikation starten, damit man sich später die Werte am serial monitor ansehen kann.
pinMode(trigger, OUTPUT); // Trigger-Pin ist ein Ausgang
pinMode(echo, INPUT); // Echo-Pin ist ein Eingang
pinMode(R, OUTPUT);
pinMode(L, OUTPUT);
}
void loop()
{
digitalWrite(trigger, LOW); //Hier nimmt man die Spannung für kurze Zeit vom Trigger-Pin, damit man später beim senden des Trigger-Signals ein rauschfreies Signal hat.
delay(5); //Dauer: 5 Millisekunden
digitalWrite(trigger, HIGH); //Jetzt sendet man eine Ultraschallwelle los.
delay(10); //Dieser „Ton“ erklingt für 10 Millisekunden.
digitalWrite(trigger, LOW);//Dann wird der „Ton“ abgeschaltet.
dauer = pulseIn(echo, HIGH); //Mit dem Befehl „pulseIn“ zählt der Mikrokontroller die Zeit in Mikrosekunden, bis der Schall zum Ultraschallsensor zurückkehrt.
entfernung = (dauer/2) * 0.03432; //Nun berechnet man die Entfernung in Zentimetern. Man teilt zunächst die Zeit durch zwei (Weil man ja nur eine Strecke berechnen möchte und nicht die Strecke hin- und zurück). Den Wert multipliziert man mit der Schallgeschwindigkeit in der Einheit Zentimeter/Mikrosekunde und erhält dann den Wert in Zentimetern.
if (entfernung >= 500 || entfernung <= 0) //Wenn die gemessene Entfernung über 500cm oder unter 0cm liegt,…
{
Serial.println("Kein Messwert"); //dann soll der serial monitor ausgeben „Kein Messwert“, weil Messwerte in diesen Bereichen falsch oder ungenau sind.
}
else // Ansonsten…
{
Serial.print(entfernung); //…soll der Wert der Entfernung an den serial monitor hier ausgegeben werden.
Serial.println(" cm"); // Hinter dem Wert der Entfernung soll auch am Serial Monitor die Einheit "cm" angegeben werden.
}
delay(1000); //Das delay von einer Sekunde sorgt in ca. jeder neuen Sekunde für einen neuen Messwert.
}
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
const int HAR = 13;
const int HAY = 12;
const int HAG = 11;
const int NAR = 10;
const int NAY = 9;
const int NAG = 8;
const int HFG = 7;
const int HFR = 6;
const int NFG = 5;
const int NFR = 4;
void setup() {
pinMode (HAR,OUTPUT);
pinMode (HAY,OUTPUT);
pinMode (HAG,OUTPUT);
pinMode (NAR,OUTPUT);
pinMode (NAY,OUTPUT);
pinMode (NAG,OUTPUT);
}
void loop() {
digitalWrite(HAR,HIGH);
digitalWrite(HAY,LOW);
digitalWrite(HAG,LOW);
digitalWrite(NAR,LOW);
digitalWrite(NAY,LOW);
digitalWrite(NAG,HIGH);
digitalWrite(HFG,HIGH);
digitalWrite(HFR,LOW);
digitalWrite(NFG,LOW);
digitalWrite(NFR,HIGH);
delay (2000);
digitalWrite(HAR,HIGH);
digitalWrite(HAY,HIGH);
digitalWrite(HAG,LOW);
digitalWrite(NAR,LOW);
digitalWrite(NAY,HIGH);
digitalWrite(NAG,LOW);
digitalWrite(HFG,HIGH);
digitalWrite(HFR,LOW);
digitalWrite(NFG,LOW);
digitalWrite(NFR,HIGH);
delay (2000);
digitalWrite(HAR,LOW);
digitalWrite(HAY,LOW);
digitalWrite(HAG,HIGH);
digitalWrite(NAR,HIGH);
digitalWrite(NAY,LOW);
digitalWrite(NAG,LOW);
digitalWrite(HFG,LOW);
digitalWrite(HFR,HIGH);
digitalWrite(NFG,HIGH);
digitalWrite(NFR,LOW);
delay (2000);
digitalWrite(HAR,LOW);
digitalWrite(HAY,HIGH);
digitalWrite(HAG,LOW);
digitalWrite(NAR,HIGH);
digitalWrite(NAY,HIGH);
digitalWrite(NAG,LOW);
digitalWrite(HFG,LOW);
digitalWrite(HFR,HIGH);
digitalWrite(NFG,HIGH);
digitalWrite(NFR,LOW);
delay (2000);
}