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