En la entrada anterior expliqué cómo conectar el Módulo Bluetooth HC-06 al arduino y enviar mensajes desde el celular a través de una app llamada Bluetooth SPP.

Hasta ahora lo utilizamos en modo “terminal”. Ya podemos pasar al modo “Control” de la aplicación (en el menú de hamburguesa – las tres rayitas)
Comenzamos investigando qué recibe el Arduino cuando tocamos cada tecla. Para ello, abrimos el monitor serie y pulsamos los botones. Recibe una A, una B, una C, una D y cuando soltamos, una Z.
Por lo tanto, modificamos el programa para que nos avise qué recibe cada vez que tocamos una flecha. Vamos a pedirle que cuando se oprime el botón hacia arriba nos devuelva “Arriba”, y eso mismo con todos los botones:
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available())
{
char dato=Serial.read();
Serial.print("Dato recibido: ");
Serial.println(dato);
if (dato=='B') {
Serial.println("Abajo");
}
if (dato=='A') {
Serial.println("Arriba");
}
if (dato=='C') {
Serial.println("Izquierda");
}
if (dato=='D') {
Serial.println("Derecha");
}
}
}
Y el resultado, al tocar las flechas:

Conectando el Servo Motor Tower Pro Micro Servo 9g
Si nunca utilizaste el servo motor, comenzá por aprender a utilizarlo, por ejemplo, con esta entrada: Servo motor 9g Tower Pro
Ahora vamos a hacer esas mismas conexiones, repasando:
- cable anaranjado: va a un pin de tipo PWD (los de la tilde de la eñe)
- cable color marrón: GND (tierra)
- cable color rojo: +5v
El problema es que tenemos el pin de +5v ocupado por el módulo HC-06, así que vamos a tener que conectar el módulo de Bluetooth y el Servo a una breadboard / placa de pruebas, y de allí sacar un cable para el pin de Arduino llamado +5v

Ahora le agregamos unas líneas a nuestro programa, para que se mueva el servo motor al presionar los botones:
#include <Servo.h>
Servo myservo;
void setup()
{
Serial.begin(9600);
myservo.attach(9);
}
void loop()
{
if (Serial.available())
{
char dato=Serial.read();
Serial.print("Dato recibido: ");
Serial.println(dato);
if (dato=='B') {
Serial.println("Abajo");
myservo.write(90);
delay(15);
}
if (dato=='A') {
Serial.println("Arriba");
myservo.write(0);
delay(15);
}
if (dato=='C') {
Serial.println("Izquierda");
myservo.write(180);
}
if (dato=='D') {
Serial.println("Derecha");
myservo.write(45);
}
}
}
Como el servo no gira 360 grados, los botones no lo mandan exactamente arriba, abajo, derecha, izquierda. Ya mejoraremos eso en otra entrada.
























