From decdffddb760a444f7c9e395c18e6a03eba0e40d Mon Sep 17 00:00:00 2001 From: Miguel Delgado Date: Tue, 26 Nov 2024 07:39:44 -0600 Subject: [PATCH] inicial --- MinisumoTapatioMotorBoard.ino | 165 ++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 MinisumoTapatioMotorBoard.ino diff --git a/MinisumoTapatioMotorBoard.ino b/MinisumoTapatioMotorBoard.ino new file mode 100644 index 0000000..66a20f4 --- /dev/null +++ b/MinisumoTapatioMotorBoard.ino @@ -0,0 +1,165 @@ +/* +Codigo base para robot RC, utilizando la placa Tapatio Motor Board +By: Miguel Angel Delgado López - miguel.delgado.lop@gmail.com +*/ + +//Velocidad con la que quieres que se mueva el robot +//debe ser un valor máximo de 255 y dependerá de lo motores que uses +int power=150; + +//Pines necesario para controlar los diver Tapatio Driver +#define M01 6 +#define M02 5 +#define M03 10 +#define M04 9 + +//Pines para los sensores P= Principal I= Izquierdo D= Derecho +#define sensP A0 +#define sensI A3 +#define sensD A7 + + +#define led1 13 + +int estrategia = 0; +boolean start = true; +boolean inicio = true; +int umbral = 900; + +int tiempoReversa=.5; //en segundos + + + + +//Configuracion de los pines como salida e iniciar el Bluetooth +void setup() { + Serial.begin(9600); + pinMode(M01,OUTPUT); + pinMode(M02,OUTPUT); + pinMode(M03,OUTPUT); + pinMode(M04,OUTPUT); + //-----------SENSORES---------------- + pinMode(sensP,INPUT); + pinMode(sensI,INPUT); + pinMode(sensD,INPUT); + +} + +//Método principal que al recibir una letra hace que se mueva el robot RC +void loop() { + + if(!start){ + velocidad(0, 0); + int x= leerSensores(); + Serial.println(x); + }else{ + if(inicio){ + for(int x=0;x<30;x++){ + led(0); + delay(50); + led(1); + delay(50); + } + inicio=false; + }else{ + int sensores=leerSensores(); + if(sensores==0){ + velocidad(power,power); + Serial.println("adelante"); + }else{ + if(sensores==1){ + switch(estrategia){ + case 0: + //Frente por izquierda + velocidad(power,-power); + Serial.println("Frente Izquieda"); + break; + case 1: + //Frente por la derecha + velocidad(-power,power); + Serial.println("Frente Derecha"); + break; + case 2: + //Atras por izquierda + velocidad(-power,-power*.3); + Serial.println("atras izquierda"); + break; + case 3: + //atras por derecha + velocidad(-power*.3,-power); + Serial.println("atras derecha"); + break; + } + } + if(sensores==2|| sensores==3){ + //case 1://se activo sensor izquierdo + Serial.println("izquerdo"); + velocidad(-power,-power); + delay(tiempoReversa*1000); + } + + if(sensores==4|| sensores==5){ + //case 2://Se activo sensor derecho + Serial.println("derecho"); + velocidad(-power,-power); + delay(tiempoReversa*1000); + } + + if(sensores==6||sensores==7){ + // case 3://se activaron los 2 sensores + //reversa + Serial.println("ambos"); + velocidad(-power,-power); + delay(tiempoReversa*1000); + } + } + } + } +} + + + int leerSensores(){ + int v=0; + v+=digitalRead(sensP); + v+=analogRead(sensI)255){ + izq=255; + }else{ + if(izq<-255){ + izq=-255; + } + } + if(der>255){ + der=255; + }else{ + if(der<-255){ + der=-255; + } + } + if(izq>0){ + analogWrite(M01,izq); + analogWrite(M02, 0); + }else{ + analogWrite(M01, 0); + analogWrite(M02, abs(izq)); + } + if(der>0){ + analogWrite(M03,der); + analogWrite(M04, 0); + }else{ + analogWrite(M03, 0); + analogWrite(M04, abs(der)); + } +} \ No newline at end of file