Código Ahora explicaremos el código utilizado en el proyecto y cómo influye este en el circuito
Primero elegimos los pines que vamos a utilizar del arduino y lo guardamos dentro de una variable tipo int para poder darle nombres los pines y diferenciarlos mejor: int motorder1=13; int motorder2=12; int motorizq1=11; int motorizq2=10; int led1=9; int led2=8;
Luego iniciamos el void setup que es lo que se repite una sola vez y aseguramos que los pines que vamos a utilizar van a hacer pines de salida: void setup() { pinMode(motorder1,OUTPUT); pinMode(motorder2,OUTPUT); pinMode(motorizq1,OUTPUT); pinMode(motorizq2,OUTPUT); pinMode(led1,OUTPUT); pinMode(led2,OUTPUT);
Dentro del void setup abrimos la comunicación serial a 9600 bits por segundo y terminamos el void setup Serial1.begin(9600); } Iniciamos el void loop que es la parte que repite infinitamente y Guardamos dentro de una variable tipo char que le llamaremos ‘dato’, lo que se envía desde envía desde el celular y
void loop(){ char dato= Serial1.read();
También iniciamos el switch lo que nos permitirá comprobar lo enviado por el c elular switch(dato) //Comprobamos el dato { Analizamos lo enviado por el celular, si se envió la letra ‘i ‘i’, se pondrán los pines motorder1 y led1 en estado alto y los demás en bajo, lo que hará que el motor derecho gire hacia adelante Y el carro valla hacia la izquierda, además que el LED izquierdo alumbre indicando la dirección de l carro. Luego el arduino arduino enviara por el puerto serie la palabra ‘izquierda’ lo que nos indicara que el arduino recibió exitosamente la orden enviada por el celular. case 'i': { digitalWrite(motorder1,HIGH); digitalWrite(motorder2,LOW); digitalWrite(motorizq1,LOW); digitalWrite(motorizq2,LOW); digitalWrite(led1,HIGH); digitalWrite(led2,LOW); Serial1.println("izquierda"); Serial1.println("izquierda"); // el e l arduino envía la palabra ‘izquierda ‘izquierda’’ break;// se hace una espera para recibir la siguiente orden }
Si lo enviado por el celular es la letra ‘d’, se pondrán en alto los pines motorizq1 y led2, y los demás en bajo, lo que hará el e l motor izquierdo gire hacia adelante y por c onsecuente el carro valla hacia la derecha, se activara el e l LED derecho indicando la dirección del carro y el arduino escribirá por el puerto serie la palabra ’derecha’. case 'd': { digitalWrite(motorder1,LOW); digitalWrite(motorder2,LOW); digitalWrite(motorizq1,HIGH); digitalWrite(motorizq2,LOW); digitalWrite(led1,LOW); digitalWrite(led2,HIGH); Serial1.println("Derecha"); //el arduino envía la palabra ‘Derecha’ break; ;// se hace una espera esper a para recibir la siguiente orden }
Si lo enviado por el celular es la letra ‘a’, se pondrán en alto los pines motorder1 y motorizq1 y los demás en bajo, lo que hará que el motor derecho e izquierdo giren hacia adelante e igualmente el carro ira hacia adelante, y el arduino escribirá por el puerto serie la palabra ’Adelante’. case 'a': { digitalWrite(motorder1,HIGH); digitalWrite(motorder2,LOW); digitalWrite(motorizq1,HIGH); digitalWrite(motorizq2,LOW); digitalWrite(led1,LOW); digitalWrite(led2,LOW); Serial1.println("Adelante"); //el arduino envía la palabra ‘Derecha’ break; ;// se hace una espera esper a para recibir la siguiente orden }
Si lo enviado por el celular es la letra ‘s’, se activaran los pines motorder2, motorizq2, led1 y led2, lo que hara que el motor derecho e izquierdo giren hacia atrás y por consecuente el carro ira hacia atrás, además se encenderán los dos LEDS para indicar que el carro ira en reversa. Luego el arduino escribirá por el puerto serie la palabra ’Adelante’. case 's': { digitalWrite(motorder1,LOW); digitalWrite(motorder2,HIGH); digitalWrite(motorizq1,LOW); digitalWrite(motorizq2,HIGH); digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); Serial1.println("Atrás");//el arduino envía la palabra ‘Atrás’ break; // se hace una espera para recibir la siguiente orden }
Por ultimo si lo enviado por el celular es la letra ‘p’, pondrá en alto los pines led1 y led2 y en bajo el resto, y luego de un delay( espera durante un segundo), pondrá en bajo los pines led1 y led2. Todo esto hará que el carro se detenga, además que los LEDS alumbren durante un segundo y luego se apaguen, El arduino escribirá por el puerto serie la palabra ’Adelante’. Terminamos con el switch y con void loop y finalizamos el código.
case 'p': { digitalWrite(motorder1,LOW); digitalWrite(motorder2,LOW); digitalWrite(motorizq1,LOW); digitalWrite(motorizq2,LOW); digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); Serial1.println("Parar"); delay(1000); digitalWrite(led1,LOW); digitalWrite(led2,LOW); break;
} } }
Aplicación para controlar el carro
A continuación mostraremos los pasos que utilizamos para realizar la aplicación que va a controlar el carro: La creación de la aplicación se divide en dos partes, la primera es la part e gráfica, que tiene que ver con cómo queremos que se vea la aplicación. Y la segunda parte es la programación de la aplicación para que haga lo que queremos. Parte Grafica: Primero entramos a la aplicación de app inventor 2, luego de entrar nos encontraremos con lo siguiente
La parte de la izquierda es donde vamos a elegir que queremos agregarle a la aplicación, la parte del medio va mostrando como va quedando la aplicación, y la parte de la derecha nos permite modificar lo que vamos agregando. Como necesitamos cinco botones (Arriba, izquierda, derecha, abajo, parar) Agregamos cinco Button. También agregamos tres label, en uno escribiremos ‘No conectado’, lo que nos indicara que la aplicación no está conectada al módulo bluetooth del carro, en el otro escribiremos ‘Proyecto integrador’ y en el último escribiremos ‘proyecto integrador. Para poder utilizar el bluetooth agregamos 2 objetos. el primero es un ListPicker y le cambiamos el nombre a ‘Conectarse al carro’, carro’, esto es una especie de botón, lo que hará esto es que cuando se oprima este se abrirá una lista con los m ódulos bluetooth disponibles, y el segundo nos vamos a Connectivity que se encuentra en la parte inferior inferior izquierda
Y seleccionamos BluetoothClient, sin este el ListPicker no servirá de nada. Después de acomodar los objetos nos queda la aplicación de la siguiente manera:
Parte programable: Después de haber hecho la parte grafica de la aplicación nos vamos a la parte de la programación para ello oprimimos el botón Blocks que se encuentra en la parte superior derecha. Y se
nos abrirá la siguiente ventana
La programación es en forma de bloques, se arrastra los bloques necesarios que se encuentran en la parte derecha y se dejan en la parte izquierda. Lo Primero que hacemos es programar progr amar parte del bluetooth para poder conectarnos sin problemas al carro. Antes que se oprima el ListPicker1 si el bluetooth del celular esta e ncendido recoge los dispositivos emparejados con anterioridad. Y cuando se oprima ListPicker1 abrirá una ventana con los dispositivos bluetooth recogidos anteriormente y llamara al bluetooth seleccionado. Si hay una conexión exitosa con el módulo, label1 (No Conectado) cambiara a Conectado y su color de letra será verde para confirmar que hay una conexión con el bluetooth:
Luego sigue la parte de los botones, lo que hicimos fue que cuando se oprimiera un botón e nviara por el bluetooth una letra. Cuando se oprima el botón Izquierda, se envía por el bluetooth la letra ‘i’
Cuando se oprima el botón Derecha, se envía por el bluetooth la letra ‘d’
Cuando se oprima el botón Adelante, se envía por el bluetooth la letra ‘a’
Cuando se oprima el botón Atrás, se envía por el bluetooth la letra ‘s’
Cuando se oprima el botón Parar, se e nvía por el bluetooth la letra ‘p’
Como se pudo observar las letras que se envían cuando se oprimen los botones son las mismas que utilizamos en el código. Lo que nos permite controlar el carro con esta sencilla y práctica aplicación.