3. Programación de Carrito Arduino
3.1. Test de movimientos
Para poder programar necesitamos desconectar el módulo Bluetooth, podemos desconectar todo el módulo o simplemente dejar libre el RX (pin 0) del Arduino
El código es el siguiente:
//Pines de conexión del driver int Pin_Motor_Der_A = 8; int Pin_Motor_Der_B = 9; int Pin_Motor_Izq_A = 10; int Pin_Motor_Izq_B = 11; void setup() { // inicializar la comunicación serial a 9600 bits por segundo: Serial.begin(9600); // configuramos los pines como salida pinMode(Pin_Motor_Der_A, OUTPUT); pinMode(Pin_Motor_Der_B, OUTPUT); pinMode(Pin_Motor_Izq_A, OUTPUT); pinMode(Pin_Motor_Izq_B, OUTPUT); } void loop() { //movemos el robot hacia delante por 2 segundos Mover_Adelante(); delay(2000); //movemos el motor a la derecha por 2 segundos Mover_Derecha(); delay(2000); } void Mover_Adelante() { digitalWrite (Pin_Motor_Der_A, HIGH); digitalWrite (Pin_Motor_Der_B, LOW); digitalWrite (Pin_Motor_Izq_A, HIGH); digitalWrite (Pin_Motor_Izq_B, LOW); } void Mover_Retroceso() { digitalWrite (Pin_Motor_Der_A,LOW ); digitalWrite (Pin_Motor_Der_B,HIGH ); digitalWrite (Pin_Motor_Izq_A,LOW ); digitalWrite (Pin_Motor_Izq_B,HIGH ); } void Mover_Derecha() { digitalWrite (Pin_Motor_Der_A,LOW ); digitalWrite (Pin_Motor_Der_B,HIGH ); digitalWrite (Pin_Motor_Izq_A,HIGH); digitalWrite (Pin_Motor_Izq_B,LOW); } void Mover_Izquierda() { digitalWrite (Pin_Motor_Der_A,HIGH); digitalWrite (Pin_Motor_Der_B,LOW); digitalWrite (Pin_Motor_Izq_A,LOW ); digitalWrite (Pin_Motor_Izq_B,HIGH ); } void Mover_Stop() { digitalWrite (Pin_Motor_Der_A, LOW); digitalWrite (Pin_Motor_Der_B, LOW); digitalWrite (Pin_Motor_Izq_A, LOW); digitalWrite (Pin_Motor_Izq_B, LOW);
3.2. Robot Móvil controlado por Bluetooth
Descargaremos una aplicación llamada “MikroApp” que instalaremos en el móvil
aparece un botón para conectar este con el arduino del coche mediante
Bluetooth, una vez conectado, podemos pulsar el resto de botones:
La aplicación consta de 4 botones una para cada dirección, al presionar el botón para mover adelante, la aplicación envía por Bluetooth el carácter ‘a’ y lo sigue enviando constantemente mientras se tenga presionado. De igual manera para los otros botones, la aplicación envía ‘r’ para retroceso, ‘i’ para izquierda y ‘d’ para mover a la derecha.Nuestro Arduino debe de leer estos 4 caracteres y realizar el movimiento, además al no tener un botón stop, nuestro Arduino deberá detener de forma automática los movimientos cuando no se tenga presionado ningún botón.
Antes de cargar el programa a nuestro Arduino debemos de desconectar los cables de nuestro Bluetooth y después de terminado la carga podemos volverlo a conectarlo.El código que debemos de cargar a nuestro Arduino es el siguiente:
//Pines de conexión del driver int Pin_Motor_Der_A = 8; int Pin_Motor_Der_B = 9; int Pin_Motor_Izq_A = 10; int Pin_Motor_Izq_B = 11; int tiempo=0; void setup() { // inicializar la comunicación serial a 9600 bits por segundo: Serial.begin(9600); // configuramos los pines como salida pinMode(Pin_Motor_Der_A, OUTPUT); pinMode(Pin_Motor_Der_B, OUTPUT); pinMode(Pin_Motor_Izq_A, OUTPUT); pinMode(Pin_Motor_Izq_B, OUTPUT); } void loop() { if (Serial.available()) { char dato= Serial.read(); if(dato=='a') { Mover_Adelante(); tiempo=0; } else if(dato=='r') { Mover_Retroceso(); tiempo=0; } else if(dato=='d') { Mover_Derecha(); tiempo=0; } else if(dato=='i') { Mover_Izquierda(); tiempo=0; } } if(tiempo<200) // 100 cilcos de 1ms { tiempo=tiempo+1; } else //ya transcurrió 100ms (100ciclos) { Mover_Stop(); } delay(1); //pasusa de 1ms por ciclo } void Mover_Adelante() { digitalWrite (Pin_Motor_Der_A, HIGH); digitalWrite (Pin_Motor_Der_B, LOW); digitalWrite (Pin_Motor_Izq_A, HIGH); digitalWrite (Pin_Motor_Izq_B, LOW); } void Mover_Retroceso() { digitalWrite (Pin_Motor_Der_A,LOW ); digitalWrite (Pin_Motor_Der_B,HIGH ); digitalWrite (Pin_Motor_Izq_A,LOW ); digitalWrite (Pin_Motor_Izq_B,HIGH ); } void Mover_Derecha() { digitalWrite (Pin_Motor_Der_A,LOW ); digitalWrite (Pin_Motor_Der_B,HIGH ); digitalWrite (Pin_Motor_Izq_A,HIGH); digitalWrite (Pin_Motor_Izq_B,LOW); } void Mover_Izquierda() { digitalWrite (Pin_Motor_Der_A,HIGH); digitalWrite (Pin_Motor_Der_B,LOW); digitalWrite (Pin_Motor_Izq_A,LOW ); digitalWrite (Pin_Motor_Izq_B,HIGH ); } void Mover_Stop() { digitalWrite (Pin_Motor_Der_A, LOW); digitalWrite (Pin_Motor_Der_B, LOW); digitalWrite (Pin_Motor_Izq_A, LOW); digitalWrite (Pin_Motor_Izq_B, LOW); }
No hay comentarios:
Publicar un comentario