Está en la página 1de 7

int motor_A_I = 9; //Declarado como entero el pin 9 y define el giro del motor A hacia

la izquierda

int motor_A_D = 8; //Declarado como entero el pin 8 y define el giro del motor A hacia
la derecha

int m_final_A_I = 6; //Declarado como entero el pin 6 y define el final del giro del motor
A hacia la izquierda

int m_final_A_D = 7;

int motor_B_I = 10; //Declarado como entero el pin 9 y define el giro del motor A hacia
la izquierda

int motor_B_D = 11; //Declarado como entero el pin 8 y define el giro del motor A hacia
la derecha

int m_final_B_I = 12; //Declarado como entero el pin 6 y define el final del giro del motor
A hacia la izquierda

int m_final_B_D = 13; //Declarado como entero el pin 7 y define el final del giro del motor
A hacia la derecha

char byte_inicio_B = 'B'; //Declarado como caracter para definir que el motor A va
encender

char byte_inicio_A = 'A'; //Declarado como caracter para definir que el motor A va
encender

char byte_final = 'F'; //Declarado como caracter para definir el finalizador para cualquier
motor

int longitud_cadena = 0; //Declarado como entero para guardar el numero de caracteres


escritos en cadena

char cadena[100]; //Declarado como caracter el vector para almacenar lo escrito de


que motor arrancar

char velocidades[100]; //Declarado como caracter el vector para almacenar los escrito de
la velocidad del motor
byte contador = 0; //Declarado como byte para almacenar temporalmente el numero
de caracteres escritos en cadena

int retardo = 0; //Declarado como entero

int numchar = 0; //Declarado como entero

int numero_caracteres = 0; //Declarado como entero

int contador_velocidades = 0; //Declarado como entero para almacenar los caracteres


escritos en cadena para la velocidad

void setup() //Inicializar la forma de trabajo de los pins y puerto serie

memset(cadena, 0, sizeof(cadena)); //Limpia la informacion contenidad en el vector


cadena llenando cada celda con 0

pinMode(motor_A_I,OUTPUT); //Declara el pin motor_A_I como salida

pinMode(motor_A_D,OUTPUT); //Declara el pin motor_A_D como salida

pinMode(m_final_A_I,INPUT); //Declara el pin m_final_A_I como entrada

pinMode(m_final_A_D,INPUT); //Declara el pin m_final_A_D como entrada

pinMode(motor_B_I,OUTPUT); //Declara el pin motor_A_I como salida

pinMode(motor_B_D,OUTPUT); //Declara el pin motor_A_D como salida

pinMode(m_final_B_I,INPUT); //Declara el pin m_final_A_I como entrada

pinMode(m_final_B_D,INPUT);

Serial.begin(9600); //Habilita el puerto serie con velocidad de 9600 bps

void loop() //Ejecuta el programa de forma ciclica


{

Serial.flush(); //Pausa el programa hasta que la transmision del


buffer ha terminado

memset(cadena, 0, sizeof(cadena)); //Limpia la informacion contenida en


el vector cadena llenando cada celda con 0

memset(velocidades, 0, sizeof(velocidades)); //Limpia la informacion contenidad


en el vector velocidades llenando cada celda con 0

if(Serial.available() > 0) //Condincion que indica que si el numero


obtenido en bytes disponibles es mayor a 0 que ejecute la accion

while(Serial.available() > 0) //Bucle que indica que se cumpla la accion


mientras el numero obtenido en bytes disponibles es mayor a 0

delay(5); //Pausa el programa por 5 milisegundos

numero_caracteres = Serial.available(); //Almacena en la variable


numero_caracteres el contenido del puerto serie del numero de bytes disponibles

//Serial.println("numero de caracteres disponibles en buffer");

//Serial.println(numero_caracteres);

cadena[contador] = Serial.read(); //La posicion del vector cadena es el


valor de la varible contador y el vector almacena un byte capturado desde el puerto serie para
devolver luego el siguiente

contador++; //La varible contador aumenta en 1 cada vez que


se cumple la accion en el bucle

longitud_cadena = contador; //La variable longitud_cadena almacena


el valor que tiene la variable contador

contador = 0; //La variable contador se inicializa con cero para


leer la proxima cadena de caracteres del puerto serie

if(motor_A() == true) //Condicion que indica que si la funcion


booleana motor_A() es verdadera se ejecute la accion

Serial.println("motor A encendido"); //Envia el valor "motor A


encendido" en el puerto serie con retorno de carro y salto de linea
for(int velocidad = 1; velocidad <= longitud_cadena-2; velocidad++) //Repetir hasta que
velocidad sea menor longitud_cadena-2, comenznado en 1 y que aumente la variable
velocidad en 1

contador_velocidades = longitud_cadena-2; //La variable


contador_velocidades almacena el valor longitud_cadena restando-2

velocidades[velocidad-1] = cadena[velocidad]; //La posicion del vector


velocidades es igual al valor que almacena velocidad menos 1 y el vector velocidades almacena
el valor del vector cadena en la poscion que tiene la varible velocidad

Serial.println("velocidades A");

Serial.println(velocidades);

if (velocidades[0] == 'D')

Serial.println("hacia a la derecha");

digitalWrite(motor_A_I,LOW);

digitalWrite(motor_A_D,HIGH);

else if(velocidades[0] == 'I')

Serial.println("hacia a la izquierda");

digitalWrite(motor_A_I,HIGH);

digitalWrite(motor_A_D,LOW);

if(motor_B() == true) //Condicion que indica que si la funcion


booleana motor_A() es verdadera se ejecute la accion

{
Serial.println("motor B encendido"); //Envia el valor "motor A
encendido" en el puerto serie con retorno de carro y salto de linea

for(int velocidad = 1; velocidad <= longitud_cadena-2; velocidad++) //Repetir hasta que


velocidad sea menor longitud_cadena-2, comenznado en 1 y que aumente la variable
velocidad en 1

contador_velocidades = longitud_cadena-2; //La variable


contador_velocidades almacena el valor longitud_cadena restando-2

velocidades[velocidad-1] = cadena[velocidad]; //La posicion del vector


velocidades es igual al valor que almacena velocidad menos 1 y el vector velocidades almacena
el valor del vector cadena en la poscion que tiene la varible velocidad

Serial.println("velocidades B");

Serial.println(velocidades);

if (velocidades[0] == 'D')

Serial.println("hacia a la derecha");

digitalWrite(motor_B_I,LOW);

digitalWrite(motor_B_D,HIGH);

else if(velocidades[0] == 'I')

Serial.println("hacia a la izquierda");

digitalWrite(motor_B_I,HIGH);

digitalWrite(motor_B_D,LOW);

}
}

boolean motor_A() //Funcion declarada como booleana


para indicar las acciones a cumplir por el motor_A

if(cadena[0] == byte_inicio_A && cadena[longitud_cadena-1] == byte_final) //Condicion


que ve si el primer caracter del vector cadena es igual al byte_inicio_A y si el ultimo caracter
del vector cadena es igual al byte_final ejecuta las acciones que se piden

return true; //Si la condicion se cumple devuelve


verdadero

else //Caso contrario

return false; //Si la condicion no se cumple devuelve


falso

boolean motor_B() //Funcion declarada como booleana


para indicar las acciones a cumplir por el motor_A

if(cadena[0] == byte_inicio_B && cadena[longitud_cadena-1] == byte_final) //Condicion


que ve si el primer caracter del vector cadena es igual al byte_inicio_A y si el ultimo caracter
del vector cadena es igual al byte_final ejecuta las acciones que se piden
{

return true; //Si la condicion se cumple devuelve


verdadero

else //Caso contrario

return false; //Si la condicion no se cumple devuelve


falso

También podría gustarte