Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Fahrzeug(1)

int geschwindigkeit = 240; /* Standardgewindigkeit für die Motoren */
float faktor = 0.75; /* Ausgleichsfaktor für die Motoren. Muss experimentell ermittelt werden.*/
/* !!!!!!!! Achtung Achtung Bei Linkskurven wird der Kurvenfaktor 2x eingesetzt
Wahrscheinlich reagieren die Motoren bzw. das Fahrgestell beim Vorwärtsgang anders als bei Rückwärtsgang :-((*/
float kurvenfaktor = 1.2; /* Faktor für den Kurvenradius */
const int El = 6; /* PWM - Ausgang zur Steuerung des Motors 1 = links */
const int Ml = 7; /* Laufrichtung von Motor 1 = links einstellen HIGH = vorwärts, LOW = rückwärts */
const int Er = 5; /* Analog für Motor 2 = rechts */
const int Mr= 4; /* Analog für Motor 2 = rechts */
const int inf =10;
int buttonState = 0;



void setup()
{
Serial.begin(9600);
pinMode(El, OUTPUT);
pinMode(Ml, OUTPUT);
pinMode(Er, OUTPUT);
pinMode(Mr, OUTPUT);
pinMode(inf,INPUT);
}

void halt()
{
int l = 0;
int r = 0;
Serial.print(l); Serial.print(" "); Serial.print(r); Serial.println(" halt");
digitalWrite(Ml,HIGH);
digitalWrite(Mr, HIGH);
analogWrite(El, l); //PWM Speed Control
analogWrite(Er, r); //PWM Speed Control
}

void geradeausvorwaerts(int g)
{
int l = floor(g*faktor);
int r = g;
Serial.print(l); Serial.print(" "); Serial.print(r); Serial.println(" geradeausvorwaerts");
digitalWrite(Ml,HIGH);
digitalWrite(Mr, HIGH);
analogWrite(El, l); //PWM Speed Control
analogWrite(Er, r); //PWM Speed Control
}




void linksdrehen(int g)
{
int l = floor(g*faktor);
int r = g;
Serial.print(l); Serial.print(" "); Serial.print(r); Serial.println(" linksdrehen");
digitalWrite(Ml, LOW);
digitalWrite(Mr, HIGH);
analogWrite(El, l); //PWM Speed Control
analogWrite(Er, r); //PWM Speed Control
}









void loop()
{
buttonState = digitalRead (inf);

if (buttonState == HIGH) {

halt();
delay(1000);
linksdrehen(geschwindigkeit);
}
else{
geradeausvorwaerts(geschwindigkeit);
}
}
 

 

Erstellt: Andreas Hecker (21.02.2014) Letzte Änderung: Maximilian Reitz (10.12.2014)