Arduino Auto
Das Arduino-Auto ist der finale Schritt in der Robotik. Hier ist unser 3-rädriges Auto ohne Servo, das über eine Schaltung eine Strcke fährt und diese nach einer Hindernisserkennung dann wechselt. Das Auto hat Blinker und Scheinwerfer sowie eine Hupe. Das ganze wird mit folgener Schaltung gesteuert:
//
// ARDUINO AUTO PROGRAMM
//
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//Motor rechts
int enRechts = ; //Geschwindigkeit
int inR1 = ; //Vorwärts
int inR2 = ; //Rückwärts
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Motor links
int enLinks = ; //Geschwindigkeit
int inL1 = ; //Vorwärts
int inL2 = ; //Rückwärts
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//Ultraschallsensor
int EchoPin = ; //Ultraschall Echo
int TrigPin = ; //ULtraschall Trigger
long dauer = 0; //Speicherung der Zeit für die Schallmessung
long entf = 0; //speicherung der Entfehrnung
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//Licht
int vorderlichtL = 10;
int vorderlichtR = 5;
int ruecklichtL = ;
int ruecklichtR = ;
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//Blinker
int blinkerVL = ;
int blinkerVR = ;
int blinkerHL = ;
int blinkerHR = ;
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//Hupe
int Buzzer = 9;
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/*
void setup()
{
pinMode(EchoPin, INPUT);
pinMode(TrigPin, OUTPUT);
//setze mehrere Pins auf einmal als Output fest:
for (int pinindex = 6; pinindex < 11; pinindex++) {
pinMode(pinindex, OUTPUT); // Schleife setzt Pins 6-10 als Output fest
}
}
*/
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/*
void loop()
{
//Entfernungsmessung
digitalWrite(TrigPin, LOW);
delay (5); //kurz Spannung vom Pin nehmen
digitalWrite(TrigPin, HIGH);
delay (10); //Schallwelle aussenden
digitalWrite(TrigPin, LOW);//Dann wird der „Ton“ abgeschaltet.
dauer = pulseIn(EchoPin, HIGH); //Mit dem Befehl „pulseIn“ zählt der Mikrokontroller die Zeit in Mikrosekunden, bis der Schall zum Ultraschallsensor zurückkehrt.
entf = (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 (entf <= 20) //Wenn die gemessene Entfernung über 500cm oder unter 0cm liegt,…
{
anhalten();
delay(1000);
rueckwaerts();
delay(1000);
anhalten();
delay(1000);
rechtsV();
delay(3000);
anhalten();
delay(1000);
linksV();
delay(3000);
anhalten();
delay(1000);
}
else
{
rueckwaerts();
}
}
*/
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void vorwaerts() //geradeaus nach vorne
{
// start rechter Motor
digitalWrite(inR1, HIGH);
digitalWrite(inR2, LOW);
analogWrite(enRechts, 60); //Geschwindigkeit von 0-255
// start linker Motor
digitalWrite(inL1, HIGH);
digitalWrite(inL2, LOW);
analogWrite(enLinks, 60); //Geschwindigkeit von 0-255
delay(2000);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void rueckwaerts() //geradeaus nach hinten
{
// start rechter Motor
digitalWrite(inR1, LOW);
digitalWrite(inR2, HIGH);
analogWrite(enRechts, 60); //Geschwindigkeit von 0-255
// start linker Motor
digitalWrite(inL1, LOW);
digitalWrite(inL2, HIGH);
analogWrite(enLinks, 60); //Geschwindigkeit von 0-255
delay(2000);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void anhalten() //Alle Motoren aus
{
// Start beider Motoren
digitalWrite(inR1, LOW);
digitalWrite(inR2, LOW);
digitalWrite(inL1, LOW);
digitalWrite(inL2, LOW);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void rechtsV() //rechts nach vorne
{
// start rechter Motor
digitalWrite(inR1, HIGH);
digitalWrite(inR2, LOW);
analogWrite(enRechts,60); //Geschwindigkeit von 0-255
// start linker Motor
digitalWrite(inL1, HIGH);
digitalWrite(inL2, LOW);
analogWrite(enLinks, 120); //Geschwindigkeit von 0-255
delay(2000);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void linksV() //links nach vorne
{
// start rechter Motor
digitalWrite(inR1, HIGH);
digitalWrite(inR2, LOW);
analogWrite(enRechts,120); //Geschwindigkeit von 0-255
// start linker Motor
digitalWrite(inL1, HIGH);
digitalWrite(inL2, LOW);
analogWrite(enLinks, 60); //Geschwindigkeit von 0-255
delay(2000);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void rechtsH() //rechts nach hinten
{
// start rechter Motor
digitalWrite(inR1, LOW);
digitalWrite(inR2, HIGH);
analogWrite(enRechts,60); //Geschwindigkeit von 0-255
// start linker Motor
digitalWrite(inL1, LOW);
digitalWrite(inL2, HIGH);
analogWrite(enLinks, 120); //Geschwindigkeit von 0-255
delay(2000);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void linksH() //links nach hinten
{
// start rechter Motor
digitalWrite(inR1, LOW);
digitalWrite(inR2, HIGH);
analogWrite(enRechts,120); //Geschwindigkeit von 0-255
// start linker Motor
digitalWrite(inL1, LOW);
digitalWrite(inL2, HIGH);
analogWrite(enLinks, 60); //Geschwindigkeit von 0-255
delay(2000);
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
void blinkerR() //Blinker nach rechts
{
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
digitalWrite();
delay();
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *