Carrito servomotor sensor ultrasonico

int PinIN1 = 13;
int PinIN2 = 12;
int PinIN3 = 11;
int PinIN4 = 10;
int PinIN5 = 9;  //Entradas//
int PinIN6 = 8;
int PinIN7 = 7;
int PinIN8 = 6;
const int Trigger = 4; 
const int Echo = 5;     
  long t; //tiempo que demora en llegar el eco
  long d; //distancia en centimetros
  #include <Servo.h> 
Servo myservo;  //creamos un objeto servo 
int angulo;
void setup() {
  Serial.begin(9600);          //inicializamos la comunicación
  pinMode(Trigger, OUTPUT);    //pin como salida
  pinMode(Echo, INPUT);        //pin como entrada
  digitalWrite(Trigger, LOW);  //Inicializamos el pin con 0

  pinMode(PinIN1, OUTPUT);
  pinMode(PinIN2, OUTPUT);
  pinMode(PinIN3, OUTPUT);
  pinMode(PinIN4, OUTPUT);
  pinMode(PinIN5, OUTPUT);
  pinMode(PinIN6, OUTPUT);
  pinMode(PinIN7, OUTPUT);
  pinMode(PinIN8, OUTPUT);

   myservo.attach(3);  // asignamos el pin 3 al servo.
  Serial.begin(9600); // iniciamos el puerto serial
}
void loop()
{

 sensor ();

if (d>15){
adelante();//condicional para que avanze hasta  encontrar un objeto
Serial.println("adelante");  
}
  else if (d<=10){
    MotorStop();
    delay(1000);// condicional para detenerse al encontrar un objeto a 15cm de distancia
    Serial.println("stop");
  
  servo();
  }
}

  void MotorStop()
{
  digitalWrite (PinIN1, 0);
  digitalWrite (PinIN2, 0);
  digitalWrite (PinIN3, 0);
  digitalWrite (PinIN4, 0);
  digitalWrite (PinIN5, 0);
  digitalWrite (PinIN6, 0);
  digitalWrite(PinIN7, 0);
  digitalWrite (PinIN8, 0);
}

void adelante()
{
  digitalWrite (PinIN1, 0);
  digitalWrite (PinIN2, 1);
  digitalWrite (PinIN3, 1);
  digitalWrite (PinIN4, 0);
  digitalWrite (PinIN5, 0);
  digitalWrite (PinIN6, 1);
  digitalWrite (PinIN7, 1);
  digitalWrite (PinIN8, 0);
}
void derecha()
{
  digitalWrite (PinIN1, 0);
  digitalWrite (PinIN2, 1);
  digitalWrite (PinIN3, 0);
  digitalWrite (PinIN4, 1);
  digitalWrite (PinIN5, 0);
  digitalWrite (PinIN6, 1);
  digitalWrite (PinIN7, 0);
  digitalWrite (PinIN8, 1);
}

void izquierda()
{
  digitalWrite (PinIN1, 1);
  digitalWrite (PinIN2, 0);
  digitalWrite (PinIN3, 1);
  digitalWrite (PinIN4, 0);
  digitalWrite (PinIN5, 1);
  digitalWrite (PinIN6, 0);
  digitalWrite (PinIN7, 1);
  digitalWrite (PinIN8, 0);
}

void atras()
{
  digitalWrite (PinIN1,1);
  digitalWrite (PinIN2, 0);
  digitalWrite (PinIN3, 0);
  digitalWrite (PinIN4, 1);
  digitalWrite (PinIN5, 1);
  digitalWrite (PinIN6, 0);
  digitalWrite (PinIN7, 0);
  digitalWrite (PinIN8, 1);

}
void sensor ()
{
 
  digitalWrite(Trigger, 1);
  delayMicroseconds(10);          //Enviamos un pulso de 10us
  digitalWrite(Trigger, 0);
  
  t = pulseIn(Echo, 1); //obtenemos el ancho del pulso
  d = t/59;             //escalamos el tiempo a una distancia en cm
  
   Serial.println(d);
   
}
void servo()
{
  angulo=90;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  delay(2000);  
 
  angulo= 0;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  delay(2000);  

  angulo=90 ;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  delay(2000); 

  angulo= 180;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  delay(2000);
}

Necesito hacer que mi arduino guarde la distancia en cada giro del servo para despues decidir a donde girar.

Copiaste el código de algún tutorial?
Cuando mueves el servo le estas diciendo el ángulo al que pretendes que se mueva, almacena la información de distancia en un arreglo o vector de acuerdo al ángulo y solucionado.
ejemplo

// defines como global este vector de 4 elementos
int distancias[4] = {0};  // esto como variable global

..............

// luego en tu rutina servo del loop

int  sensor ()
{
  digitalWrite(Trigger, 1);
  delayMicroseconds(10);          //Enviamos un pulso de 10us
  digitalWrite(Trigger, 0);
  
  t = pulseIn(Echo, 1); //obtenemos el ancho del pulso
  d = t/59;             //escalamos el tiempo a una distancia en cm
  return d;   
}

void servo()
{
  angulo=90;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  distancia[0] = sensor();
  delay(2000);  
 
  angulo= 0;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  distancia[1] = sensor();
  delay(2000);  

  angulo=90 ;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  distancia[2] = sensor();
  delay(2000); 

  angulo= 180;
  myservo.write(angulo);
  Serial.print("ángulo:  ");
  Serial.println(angulo);
  distancia[3] = sensor();
  delay(2000);
}

Ahora no se para que lo quieres pero sigue tu.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.