Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Sie befinden sich in: Unterrichtsangebote Fächer Fachbereich III Informatik Arduino_Hecker Fahrzeuge Roboter bewegt sich auf Licht zu

Roboter bewegt sich auf Licht zu

Bauteile:

 

Code:

const int LichtsensorR = A0;
const int LichtsensorL = A1;
const int MotorVR = 6;
const int MotorVL = 5;
const int MotorDR = 7;
const int MotorDL = 4;
int gesch = 200;
int gesch2 =175;
int stay = 0;
int sensorValue = 0;
int start = 0;
float wertMAX = 0;
float mittelwert = 0;


void setup() {
  pinMode(MotorVR, OUTPUT);
  pinMode(MotorVL, OUTPUT);
  pinMode(MotorDR, OUTPUT);
  pinMode(MotorDL, OUTPUT);
  Serial.begin(9600);
  maxermitteln();
  bismaxdrehen();
}

void halt() {
 analogWrite(MotorVR, stay);
 analogWrite(MotorVL, stay);
 digitalWrite(MotorDR, HIGH);
 digitalWrite(MotorDL, HIGH);
}

void drehen(int gesch) {
 analogWrite(MotorVR, gesch);
 analogWrite(MotorVL, gesch);
 digitalWrite(MotorDR, HIGH);
 digitalWrite(MotorDL, LOW);
}

void geradeaus() {
 analogWrite(MotorVR, gesch2);
 analogWrite(MotorVL, gesch2);
 digitalWrite(MotorDR, HIGH);
 digitalWrite(MotorDL, HIGH);
}

void lenken(int l, int r) {
 analogWrite(MotorVR, r);
 analogWrite(MotorVL, l);
 digitalWrite(MotorDR, HIGH);
 digitalWrite(MotorDL, HIGH);
}


void maxermitteln() {
  drehen(200);
  start = millis();
  do {
    mittelwert = (analogRead(LichtsensorR)+analogRead(LichtsensorL))/2;
    if (mittelwert > wertMAX) {
      wertMAX = mittelwert;
      Serial.println(wertMAX);
    }
  
  } while (millis()-start < 7500);
}

void bismaxdrehen() {
  drehen(150);
  do {
    mittelwert = (analogRead(LichtsensorR)+analogRead(LichtsensorL))/2; 
  } while (abs(wertMAX-mittelwert) > 20 );
  halt();
}


void loop() {
 
   {
     if(analogRead(LichtsensorR)-5 > analogRead(LichtsensorL)) {
       lenken(225,50);
     }
     else
   {
     if(analogRead(LichtsensorR) < analogRead(LichtsensorL)-70) {
      lenken(50,200);
    }
    else
      geradeaus();
   }
   }
   if ((analogRead(LichtsensorR)+analogRead(LichtsensorL))/2-240 > wertMAX) {
     halt();
   }
}

 

 Von: Thomas Link Moreno, Leo Buchner und Tobias Berghöfer

Erstellt: Tobias Berghöfer (23.07.2014) Letzte Änderung: Andreas Hecker (03.12.2014)