Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Sie befinden sich in: Unterrichtsangebote Fächer Fachbereich III Informatik Arduino Fahrzeuge Fahrzeug bewegt sich auf eine Lichtquelle zu

Fahrzeug bewegt sich auf eine Lichtquelle zu

In dem folgendem Programm ist zu sehen, wie sich der Arduino dreht, die Lichtwerte in seiner Umgebung misst, den höchsten heraussucht und darauf zufährt.

 

Vorraussetzungen:

- Arduino Mega

- Lichtsensor

- Fahrgestell

ArduinoMegaLichtsensor13

Probleme:

- Die Drehgeschwindigkeit herausfinden

- Anbau des Lichtsensors

 

Code:

const int Lichtsensor = 8;
const int MotorVR = 11;
const int MotorVL = 9;
const int MotorHR = 10;
const int MotorHL = 12;
int gesch = 100;
int sensorValue = 0;

void setup() {
pinMode(MotorVR, OUTPUT);
pinMode(MotorVL, OUTPUT);
pinMode(MotorHR, OUTPUT);
pinMode(MotorHL, OUTPUT);
 Serial.begin(9600);
}

void halt() {
 digitalWrite(MotorVR, LOW);
 digitalWrite(MotorVL, LOW);
 digitalWrite(MotorHR, LOW);
 digitalWrite(MotorHL, LOW);
}

void drehen() {
 analogWrite(MotorVR, gesch);
 digitalWrite(MotorVL, LOW);
 analogWrite(MotorHR, gesch);
 digitalWrite(MotorHL, LOW);
}

void geradeaus() {
 analogWrite(MotorVR, gesch);
 analogWrite(MotorVL, gesch);
 analogWrite(MotorHR, gesch);
 analogWrite(MotorHL, gesch);
}

void loop() {
 
  /*sensorValue = analogRead(Lichtsensor);  
  Serial.println(sensorValue);*/
  int wertMAX;
  int wert1;
  int wert2;
  int wert3;
  int wert4;
  int wert5;
  int wert6;
  int wert7;
  int wert8;
  int wert9;
  int wert10;
 
  int wert21;
  int wert22;
  int wert23;
  int wert24;
  int wert25;
  int wert26;
  int wert27;
  int wert28;
  int wert29;
  int wert210;

 
 
  drehen();
  delay(1000);
  halt();
  wert1 = analogRead(Lichtsensor);
 
  drehen();
  delay(1000);
  halt();
  wert2 = analogRead(Lichtsensor);
  if (wert1 > wert2) {
    wert1 = wertMAX;
  }
  else {
    wert2 = wertMAX;
  }
 
  drehen();
  delay(1000);
  halt();
  wert3 = analogRead(Lichtsensor);
  if (wert3 > wertMAX) {
    wert3 = wertMAX;
  }
 
    drehen();
  delay(1000);
  halt();
  wert4 = analogRead(Lichtsensor);
  if (wert4 > wertMAX) {
    wert4 = wertMAX;
  }
    
    drehen();
  delay(1000);
  halt();
  wert5 = analogRead(Lichtsensor);
  if (wert5 > wertMAX) {
    wert5 = wertMAX;
  }
    
    drehen();
  delay(1000);
  halt();
  wert6 = analogRead(Lichtsensor);
  if (wert6 > wertMAX) {
    wert6 = wertMAX;
  }
    
    drehen();
  delay(1000);
  halt();
  wert7 = analogRead(Lichtsensor);
  if (wert7 > wertMAX) {
    wert7 = wertMAX;
  }
    
    drehen();
  delay(1000);
  halt();
  wert8 = analogRead(Lichtsensor);
  if (wert8 > wertMAX) {
    wert8 = wertMAX;
  }
    
    drehen();
  delay(1000);
  halt();
  wert9 = analogRead(Lichtsensor);
  if (wert9 > wertMAX) {
    wert9 = wertMAX;
  }
    
    drehen();
  delay(1000);
  halt();
  wert10 = analogRead(Lichtsensor);
  if (wert10 > wertMAX) {
    wert10 = wertMAX;
  }
 
  /*
  ------------------------------------------------------
  */
 
  drehen();
  delay(1000);
  halt();
  wert21 = analogRead(Lichtsensor);
  if ((wertMAX - 15) <= wert21 <= (wertMAX + 15)) {
    geradeaus();
  }
   else {
    drehen();
    delay(1000);
    halt();
    wert22 = analogRead(Lichtsensor);
    if ((wertMAX - 15) <= wert22 <= (wertMAX + 15)) {
    geradeaus();
    }
     else {
      drehen();
      delay(1000);
      halt();
      wert23 = analogRead(Lichtsensor);
      if ((wertMAX - 15) <= wert23 <= (wertMAX + 15)) {
      geradeaus();
      }
       else {
       drehen();
       delay(1000);
       halt();
       wert24 = analogRead(Lichtsensor);
       if ((wertMAX - 15) <= wert24 <= (wertMAX + 15)) {
       geradeaus();
        }
         else {
           drehen();
           delay(1000);
           halt();
           wert25 = analogRead(Lichtsensor);
           if ((wertMAX - 15) <= wert25 <= (wertMAX + 15)) {
           geradeaus();
           }
            else {
             drehen();
             delay(1000);
             halt();
             wert26 = analogRead(Lichtsensor);
             if ((wertMAX - 15) <= wert26 <= (wertMAX + 15)) {
             geradeaus();
             }
              else {
               drehen();
               delay(1000);
               halt();
               wert27 = analogRead(Lichtsensor);
               if ((wertMAX - 15) <= wert27 <= (wertMAX + 15)) {
               geradeaus();
               }
                else {
                 drehen();
                 delay(1000);
                 halt();
                 wert28 = analogRead(Lichtsensor);
                 if ((wertMAX - 15) <= wert28 <= (wertMAX + 15)) {
                 geradeaus();
                 }
                  else {
                   drehen();
                   delay(1000);
                   halt();
                   wert29 = analogRead(Lichtsensor);
                   if ((wertMAX - 15) <= wert29 <= (wertMAX + 15)) {
                   geradeaus();
                   }
                    else {
                     drehen();
                     delay(1000);
                     halt();
                     wert210 = analogRead(Lichtsensor);
                     if ((wertMAX - 15) <= wert210 <= (wertMAX + 15)) {
                     geradeaus();
          }
         }
        }
       }
      }
     }
    }
   }
  }
 }
Serial.println(''Maximalwert:'');  

Serial.println(wertMAX);
}

 

Von: Johannes Scholz, Philipp Lopinski, Aljoscha Malek

                

Erstellt: Andreas Hecker (03.07.2014) Letzte Änderung: Andreas Hecker (03.12.2014)