¡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); } }
saludos. no me funciona, lo copie tal cual y lo que hace es que al momento de energizarlo el led se enciende, la aplicación se conecta correctamente pero no cumple la función de variar la intensidad, no se si puedas ayudarme. soy aficionado
disculpa tampoco me funciona,el bluetooth me conecta pero al momento de regular el brillo del led no hace nada, y descargue el codigo igual
Tambien me pasa lo mismo, la app no funciona, el slider no regula la intensidad de la led
int valor = Serial.read() – 48;
¿Porque – 48?
Es la transformación matemática más sencilla para convertir el valor ASCII de un dígito a su valor en entero. El carácter 0 se representa en ASCII como 48. El carácter 1 como 49. ¿Ves el patrón?
Esto solo es válido para hacerlo dígito a dígito.
intento aplicarlo en un modulo wi fii esp8266, podrias ayudarme?
Hola buenas tardes, disculpa es posible colocar mas deslizadores (como para controlar varios leds) sin que genere algún conflicto al variarlos todos a la vez?
Hola, disculpa, necesito ayuda, cuando subo el codigo de arduino me marca error, que podria estar mal? ya lo copie tal cual el tuyo y no me funciona
De antemano gracias. Saludos
¿Qué error esta dando?
Pues al parecer es solo de la placa pero cambie los valores qur te mencione y pude subir el codigo al arduino, no sé si pueda poner otro codigo pero que me funcione la app, es mi proyecto final y es la primera vez que uso arduino no conozco del todo los codigos
El código con el que funciona la App es el que hay en el árticulo y el serial.read es necesario ya que es el método que se usa para acceder a los datos que ha enviado la aplicación por bluetooth.
Asegurate que tienes el código tal cual aparece más arriba y que no hayas comtido ningún problema al copiarlo. El código debe compilar para todas las placas Arduino.
Es arduino uno y ya lo copie escribiendolo yo misma y copiando directo de la pagina y nada, volvere a intentar
Gracias
creo que ya se donde probablemente esta el error mi bluetooth es HC05, ¿lleva otro código?
En pricipio no. La única diferencia, si recuerdo bien es que en el HC05 es necesario llevar a 3.3 v el pin de Key (durante el encendido) para entrar en modo programación mediante AT.
Prueba a desconectar los pines de GND y de alimentación del bluetooth
no me funciona
¿Qué parte no te funciona? ¿Puedes instalar la App? Un truco para comprobar si Arduino está funcioinando correctamente es cambiar int valor = Serial.read() – 48; por int valor = 8; y verificar si el LED se enciende.