sábado, 30 de noviembre de 2024

¡Haz tu propio Robot Mini Sumo! | Fácil y económico | Codigo

 Aqui puedes encontrar el codigo usado para el robot sumo basandonos en Arduino UNO

Para el modulo de arranque se utilizaron lo siguiente componentes

 

https://www.ingenieromaker.com/?Categor%C3%ADa=Modulo%2520de%2520arranque


//Codigo Final de minisumo
//Talent Land 2018

#include <AFMotor.h> //libreria para controlador de motores

#define Pulsador 16 //Go
#define Pulsador2 17 //Go


long distancia; // variable sensor ultrasonico
long tiempo;    //variable sensor ultrasonico

int estadoAC = 0;

AF_DCMotor motor3(3);//habilitar salida motor 3
AF_DCMotor motor4(4);//habilitar salida motor 4

void setup()
{
  Serial.begin(9600);
  //configurar pines para sensor ultrasonico
   pinMode(10, OUTPUT); //poner pin 10 de arduino como salida
   pinMode(9, INPUT);   //poner pin 9 de arduino como entrada
  //configurar pines para sensores de linea
   pinMode( 14, INPUT); //poner pin A0 de arduino como entrada digital
   pinMode( 15, INPUT);//poner pin A1 de arduino como entrada digital
   pinMode(Pulsador, INPUT);
      pinMode(Pulsador2, OUTPUT);

   
}
     
void loop() {
     estadoAC = digitalRead (Pulsador);

    if (estadoAC == 1){      
     digitalWrite(Pulsador2,HIGH);
     digitalWrite(10,LOW); // Por cuestión de estabilización del sensor
     delayMicroseconds(2);//esperar 5 microsegundos
     digitalWrite(10, HIGH); // envío del pulso para disparo del ultrasónico
     delayMicroseconds(4);//esperar 10 microsegundos
     tiempo=pulseIn(9, HIGH);//recibir el pulso del sensor y guardarlo en variable tiempo
     //distancia= int(0.017*tiempo);//convertir tiempo del pulso en distancia y convertirlo en cm
     distancia= int((tiempo/2)/29.154);
    
      
     
    if(distancia <= 14)//si el sensor ultrasonico detecta obstaculo de 15 cm o menos sigue hacia adelante
  {       
       motor3.setSpeed(255); //motor 3 adelante
       motor3.run(FORWARD);  //motor 3 adelante
       motor4.setSpeed(255); //motor 4 adelanteo  qqo
       motor4.run(FORWARD);  //motor 4 adelante
     delay (100);//espera 3 segundos
        Serial.print(distancia);
        Serial.println("cm");
  }
       motor3.setSpeed(100); //motor 3 adelante
       motor3.run(FORWARD);  //motor 3 adelante
       motor4.setSpeed(100); //motor 3 adelante
       motor4.run(BACKWARD);  //motor 3 adelante
    // delay (3000);//espera 3 segundos
   
       Serial.print(distancia);
         Serial.println("cm");
   
    if((!digitalRead(14)))//si el sensor inferior derecha detecta
  {
    //instrucciones para que avance para atras
       motor3.setSpeed(255); //motor 3 atras
       motor3.run(BACKWARD); //motor 3 atras
       motor4.setSpeed(255); //motor 4 atras
       motor4.run(BACKWARD); //motor 4 atras
     delay (400);//espera 1 segundo
      //instrucciones para que gire a la izquierda
      motor3.setSpeed(255); //motor 3 adelante
      motor3.run(FORWARD);  //motor 3 adelante
      motor4.setSpeed(255); //motor 4 atras
      motor4.run(BACKWARD); //motor 4 atras
     delay (600);//espera 1 segundo
          Serial.print(distancia);
             Serial.println("cm");
  }   
 
  if((!digitalRead(15)))//si el sensor inferior izquierda detecta
  {
     //instrucciones para que avance para atras
       motor3.setSpeed(255); //motor 3 atras
       motor3.run(BACKWARD); //motor 3 atras
       motor4.setSpeed(255); //motor 4 atras
       motor4.run(BACKWARD); //motor 4 atras
     delay (400);//espera 1 segundo
      //instrucciones para que gire a la derecha
      motor4.setSpeed(255); //motor 4 adelante
      motor4.run(FORWARD);  //motor 4 adelante
      motor3.setSpeed(123); //motor 3 atras
      motor3.run(BACKWARD); //motor 3 atras
    delay (600);//espera 1 segundo
          Serial.print(distancia);
             Serial.println("cm");
  }
    
  }else{
  if (estadoAC == 0){      
     digitalWrite(Pulsador2,LOW);
      motor4.setSpeed(0); //STOP
      motor4.run(RELEASE); //STOP
      motor3.setSpeed(0); //STOP
      motor3.run(RELEASE); //STOP
     }
  }
}

Otra version de codigo sin controlador de arranque.

#include <AFMotor.h> //libreria para tarjeta azul
long distancia; // variable sensor ultrasonico
long tiempo;    //variable sensor ultrasonico
AF_DCMotor motor3(3);//habilitar salida motor 3
AF_DCMotor motor4(4);//habilitar salida motor 4

void setup()
{
  //configurar pines para sensor ultrasonico
   pinMode(10, OUTPUT); //poner pin 10 de arduino como salida
   pinMode(9, INPUT);   //poner pin 9 de arduino como entrada
  //configurar pines para sensores de linea
   pinMode( 11, INPUT); //poner pin A0 de arduino como entrada digital
   pinMode( 10, INPUT);//poner pin A1 de arduino como entrada digital

   
}
     
void loop()
{
 
     digitalWrite(10,LOW); // Por cuestión de estabilización del sensor
     delayMicroseconds(5);//esperar 5 microsegundos
     digitalWrite(10, HIGH); // envío del pulso para disparo del ultrasónico
     delayMicroseconds(10);//esperar 10 microsegundos
     tiempo=pulseIn(9, HIGH);//recibir el pulso del sensor y guardarlo en variable tiempo
     distancia= int(0.017*tiempo);//convertir tiempo del pulso en distancia y convertirlo en cm
    
    
    if(distancia <=15)//si el sensor ultrasonico detecta obstaculo de 15 cm o menos sigue hacia adelante
  {       
       motor3.setSpeed(255); //motor 3 adelante
       motor3.run(FORWARD);  //motor 3 adelante
       motor4.setSpeed(255); //motor 4 adelante
       motor4.run(FORWARD);  //motor 4 adelante
       delay (3000);//espera 3 segundos
  }
     //siempre ira hacia adelante
       motor3.setSpeed(255); //motor 3 adelante
       motor3.run(FORWARD);  //motor 3 adelante
       motor4.setSpeed(255); //motor 3 adelante
       motor4.run(FORWARD);  //motor 3 adelante
   
    if((!digitalRead(14)))//si el sensor inferior derecha detecta
  {
    //instrucciones para que avance para atras
       motor3.setSpeed(255); //motor 3 atras
       motor3.run(BACKWARD); //motor 3 atras
       motor4.setSpeed(255); //motor 4 atras
       motor4.run(BACKWARD); //motor 4 atras
      delay (1000);//espera 1 segundo
      //instrucciones para que gire a la izquierda
      motor3.setSpeed(255); //motor 3 adelante
      motor3.run(FORWARD);  //motor 3 adelante
      motor4.setSpeed(255); //motor 4 atras
      motor4.run(BACKWARD); //motor 4 atras
      delay (1000);//espera 1 segundo
  }   
 
  if((!digitalRead(15)))//si el sensor inferior izquierda detecta
  {
     //instrucciones para que avance para atras
       motor3.setSpeed(255); //motor 3 atras
       motor3.run(BACKWARD); //motor 3 atras
       motor4.setSpeed(255); //motor 4 atras
       motor4.run(BACKWARD); //motor 4 atras
      delay (1000);//espera 1 segundo
      //instrucciones para que gire a la derecha
      motor4.setSpeed(255); //motor 4 adelante
      motor4.run(FORWARD);  //motor 4 adelante
      motor3.setSpeed(255); //motor 3 atras
      motor3.run(BACKWARD); //motor 3 atras
      delay (1000);//espera 1 segundo
  }       
     
    
}
 

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...