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