Una de las principales aportaciones que nos da la integración de Arduino con Android es que podemos conseguir proyectos de domótica muy llamativos a la vez que son de muy bajo coste. Android consigue proporcionar una interfaz gráfica para todas las operaciones que puede realizar Arduino. Por ejemplo, en este tutorial vamos a configurar el color de un led RGB desde una aplicación. Toda la comunicación se hará a través de Bluetooth utilizando una librería llamada Amarino. Nos ponemos manos a la obra.
El módulo de Bluetooth JY-MCU tiene que estar conectado de esta forma:
El Led RGB de esta forma:
Primero tendremos que agregar este jar (AmarinoLibrary_v0_55.jar) a la carpeta “libs” de nuestro proyecto, puede ser que esta carpeta no esté por lo que tendremos que crearla.
El código de Android se basa en el proyecto que podemos encontrar en este enlace. Ese ejemplo tiene un pequeño bug que se soluciona sustituyendo esta línea de código de la clase MultiColorLamp:
colorIndicator.setBackgroundColor(Color.rgb(red, green, blue));
Por esta otra:
colorIndicator.setBackgroundColor(Color.rgb(255 - red, 255 - green, 255 - blue));
Además para hacer que funcione correctamente hay que setear el DEVICE_ADDRESS con el de nuestro módulo.
private static final String DEVICE_ADDRESS = "XX:XX:XX:XX:XX:XX";
Por último también tendremos que instalar estas dos aplicaciones:
Este tutorial se basa en el ejemplo que proporciona la librería de MeetAndroid, simplemente vamos a cambiar dos detalles para que funcione correctamente con nuestro módulo. El código es el siguiente:
#include
// Declaramos el objeto de MeetAndroid para establecer la comunicación
MeetAndroid meetAndroid;
// Necesitamos 3 pines PWM para controlar los pines del led RGB
int redLed = 11;
int greenLed = 10;
int blueLed = 9;
void setup()
{
// Para nuestro Bluetooth utilizaremos 9600 baudios
Serial.begin(9600);
// Registra las funciones de callback las cuales se llamarán cuando un evento asociado ocurra
meetAndroid.registerFunction(red, 'o');
meetAndroid.registerFunction(green, 'p');
meetAndroid.registerFunction(blue, 'q');
// Seteamos todos los pines como salidas
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
// Seteamos todos los pines en HIGH para ver si funcionan correctamente
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, HIGH);
digitalWrite(blueLed, HIGH);
}
void loop()
{
meetAndroid.receive(); // Necesitamos mantenerlo en loop para recibir eventos
}
/*
* Cuando se modifique el seekbar de color rojo cambiará el valor del pin rojo
*/void red(byte flag, byte numOfValues)
{
analogWrite(redLed, meetAndroid.getInt());
}
/*
* Cuando se modifique el seekbar de color verde cambiará el valor del pin verde
*/void green(byte flag, byte numOfValues)
{
analogWrite(greenLed, meetAndroid.getInt());
}
/*
* Cuando se modifique el seekbar de color azul cambiará el valor del pin azul
*/void blue(byte flag, byte numOfValues)
{
analogWrite(blueLed, meetAndroid.getInt());
}
En este primer vídeo del curso de Android desde 0 se explica cómo maquetar una…
Como siempre, si quieres ver directamente el vídeo donde se realiza toda la configuración pasos…
En esta ocasión hacemos una review del cargador inalámbrico Samsung Wireless Charger Duo Pad de…
Primero y antes de nada, si quieres ver un vídeo detallado de esta prueba, tienes…
El 23 de marzo se presentaron los nuevos dispositivos de OnePlus. Han sido una grata…
Primero y antes de nada, si quieres ver un vídeo detallado de los Samsung Galaxy…