¡Cuidado!
Este artículo no está actualizado y parce que está generando algunos problemas al intentar implementarlo. Ten lo en cuenta.
En un artículo anterior vimos como podíamos controlar un relé con AppInventor y bluetooth. Pero en esta ocasión damos un salto y vamos a controlar la intensidad de un LED con AppInventor usando un slider en nuestra App y una comunicación bluetooth. Es decir, que antes solo controlábamos si estaba encendido o apagado y ahora podemos controlar el nivel de brillo del LED.
¿Cómo controlar el brillo de un LED?
Para controlar el brillo de un LED normalmente usamos una señal PWM, que no deja de ser una señal digital con frecuencia constante en la modificamos el ciclo de trabajo de la señal.
A nivel de programación, digamos que si queremos apagar por completo el LED, mandamos un 0 al PWM. Si queremos encenderlo a su máximo brillo mandamos un 255 y todos los valores comprendidos entre los dos anteriores corresponderán a un brillo intermedio. Si quieres aprender qué es y como funciona el PWM puedes ver el tutorial al respecto.
Para mandar el valor de PWM al LED usaremos analogWrite(LED,valor) donde LED es el pin en el que hemos conectado nuestro LED y valor es el número comprendido entre 0 y 254 que representará el brillo. Cuanto mayor sea el brillo que queramos conseguir, mayor deberá ser el valor de PWM, pero sin pasarse.
En realidad, será la aplicación del smartphone la que nos proporcione el valor de brillo que ha elegido el usuario. Arduino solo deberá recibir el valor por medio de bluetooth, convertirlo y enviarlo a la salida digital PWM.
Ojo
No te olvides de usar una resistencia entre el LED y la salida digital de Arduino para limitar la corriente que pasa por el LED.
Controlando la intensidad de LED con AppInventor
En relación a la aplicación para Android puedes ver como se crea en el vídeo que encontrarás un poco más abajo o puedes descargarte el apk en el siguiente enlace.
Instalando la APK
Recuerda activar orígenes desconocidos en tu Smartphone para poder instalar la aplicación.
El módulo bluetooth para Arduino
La comunicación entre el smartphone Android y Arduino se realizará mediante un modulo bluetooth conectado a la electrónica y usando el puerto serie. Los módulos bluetooth suelen tener una UART para comunicarse con el sistema que lo esté usando. Por tanto tendremos cuatro cables a conectar.
- Alimentación, normalmente será de 3.3 voltios.
- GND es la masa del circuito.
- Tx en el módulo que lo deberemos conectar con el pin Rx de Arduino.
- Rx del módulo bluetooth que lo deberemos conectar con el pin Tx de Arduino.
Código para Arduino
El código de Arduino es bastante sencillo. Como ya hemos visto antes, solo recibe valores desde el módulo bluetooth, los convierte y los envía al pin de salida digital PWM.
Debido a que la aplicación nos envía valores comprendidos entre 0 y 9, deberemos convertirlos y escalarlos a valores de 0 a 255. Para esto usaremos la función map();
int LED = 5; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); } void loop() { while(Serial.available() >= 0){ int valor = Serial.read() - 48; valor = map(valor, 0, 9, 0, 255); analogWrite(LED, valor); delay(200); Serial.end(); Serial.begin(9600); } }