Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Smart Robot Sensor/Servo

Programm zum Messen des Abstandes in verschiedene Richtungen.

#include
Servo servoblau;

int entfernung=0;
long messung=0;
int echoPin=A4;
int triggerPin=A5;
long messung160=0;
long messung40=0;
long messung100=0;
int test = 0;




void setup() {
  // put your setup code here, to run once:
Serial.begin(9600); // Serielle Kommuntikation starten
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
servoblau.attach(3);
}


void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);

digitalWrite (triggerPin, HIGH);
delay (10);
digitalWrite(triggerPin, LOW);

messung = pulseIn(echoPin, HIGH);

entfernung = (messung/2) / 29;

  Serial.println (entfernung);
  delay (60);
 


if (entfernung <= 50)
{

delay(1000);
      servoblau.write(160); //Position 2 ansteuern mit dem Winkel 160°

     delay(1000); //Das Programm stoppt für 3 Sekunden
     
     digitalWrite(triggerPin, LOW);
     delayMicroseconds(2);

     digitalWrite (triggerPin, HIGH);
     delay (10);
     digitalWrite(triggerPin, LOW);
     messung160 = pulseIn(echoPin, HIGH)/58;
     Serial.println(messung160);
 
     servoblau.write(40); //Position 3 ansteuern mit dem Winkel 40°
        delay(1000);//Das Programm stoppt für 3 Sekunden
        delayMicroseconds(2);

     digitalWrite (triggerPin, HIGH);
     delay (10);
     digitalWrite(triggerPin, LOW);
 
      messung40 = pulseIn(echoPin, HIGH)/58;
      Serial.println(messung40);

    servoblau.write(100); //Position 4 ansteuern mit dem Winkel 100°
       delay(1000);//Das Programm stoppt für 3 Sekunden
       delayMicroseconds(2);

     digitalWrite (triggerPin, HIGH);
     delay (10);
     digitalWrite(triggerPin, LOW);

    messung100 = pulseIn(echoPin, HIGH)/58;
    Serial.println(messung100);
delay(1000);

    if ( messung160>messung40 ){
      if ( messung100>messung160 ){
      //wenn 100 Grad am grössten ist
      test = 1;
    }
      else
      {//wenn 160 Grad am grössten ist
      test = 1;
      }

    if (messung40>messung160 and messung40>messung100)
  {  //wenn 40 Grad am grössten ist
    test = 1;

    
  }
else
{
  servoblau.write(100);
}
}
}
}
 

Von: Mathias Mohs, Dominik Hartung, Lukas Schadl, Max Wolter, Jakob Kalff

Erstellt: Jakob Kalff (05.02.2020) Letzte Änderung: Jakob Kalff (26.02.2020)