viernes, 22 de mayo de 2015

Codigo y Testeo del robot



En esta oportunidad, se presentara el código desarrollado, con el cual se cumple los requerimientos mínimos para la operación de un robot sumo, el montaje consta de un sensor ultrasónico y un infrarrojo.

CÓDIGO

EN ESTA PARTE SE DEFINEN LAS ENTRADAS DE LOS COMPONENTES AL ARDUINO

#define trigPin 13
#define echoPin 12
int pinreceptor=A0;
int sensorval;
int motor_left[] = {2, 3};
int motor_right[] = {7, 8};

ESTA PARTE CONFIGURA SI EL COMPONENTE ES UNA ENTRADA O UNA SALIDA

void setup() {
  Serial.begin (9600);
  int i;
 for(i = 0; i < 2; i++){
  pinMode(motor_left[i], OUTPUT);
  pinMode(motor_right[i], OUTPUT);
}
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

}

EN EL LOOP SE EJECUTA LA LÓGICA DEL PROGRAMA

void loop() {

LAS PRIMERAS LINEAS SE ENCARGAN DE LEER LOS DATOS DE LOS SENSORES


   sensorval=analogRead(pinreceptor);
  Serial.println(sensorval);
  delay(100);
  long duration, distance;
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(100);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  Serial.println(distance);
 
   ESTA LINEA DICE QUE SI EL INFRARROJO DETECTA ALGO QUE NO ES NEGRO HACE:
   if (sensorval>0){
 
  SEGUIR SI EL SENSOR ULTRASÓNICO DETECTA ALGO DENTRO DE 20CM
  if(distance<20){
    seguir();
  }
 SINO QUE EJECUTE EL COMANDO BUSCAR
else{
   buscar();
}
}

SI EL SENSOR DETECTA NEGRO ENTONCES QUE EL ROBOT PARE
else{
  parar();
}

}


ACCIONES
void adelante(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW); }


void parar(){
 digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
 digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
}

void atras(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);


void izquierda(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);

}

void derecha(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);

}

void buscar(){
  adelante();
 parar();
  izquierda();
  derecha();
  delay(1000);
  parar();
  delay(1000);
  adelante();

}

void seguir(){
  adelante();
}

void lineaencontrada(){
  parar();
  atras();
  izquierda();
  delay(1000);
  izquierda();
}


Por ultimo se muestra un vídeo en el que se aprecia la prueba realizada al código

    

No hay comentarios:

Publicar un comentario