# Bluetooth e Arduino: Acender un led RGB

## Descrición:

Imos conectar un led RGB á tarxeta Arduíno e variaremos as súas tres cores mediante Bluetooth co noso dispositivo Android.

Podes consultar previamente as seccións de Arduíno:

- LED RGB
- Comunicación por Bluetooth

### Listado de material:

- Arduino UNO
- Placa Protoboard
- Módulo Bluetooth HC05
- Led RGB
- 3 Resistencias de 560Ω, para a protección do led RGB
- 2 Resistencias: unha de 1kΩ e outra de 560Ω, para o divisor de tensión do BT.
- Pila 9V e conector ou alimentador (opcional)

## Montaxe:

Poderíamos conectar os pins RX e TX do bluetooth aos equivalentes de Arduíno nos pins 0 e 1 dixitais de forma cruzada (BT Tx a Arduino Rx e BT Rx a Arduino Tx), pero desta maneira perderiamos comunicación serie de Arduíno co PC a través do USB, xa que os pins 0 e 1 se utilizan nesta comunicación.

O que imos facer é habilitar os pins 10 e 11 de Arduíno para que funcionen como pins Rx e Tx respectivamente, e conectarémolos de forma cruzada cos pins Rx e Tx do módulo bluetooth. Deste xeito xa non sería necesario desconectar a alimentación do Bluetooth para cargar o programa no Arduíno e ademais teriamos baleiras as entradas 0 e 1 do Arduíno, para poder así realizar unha comunicación serial se o desexamos.

Para conectar o led RGB utilizamos os pins PWM 3, 5 e 6. Neste caso usamos un led RGB de cátodo común.

##

##

## Programas:

### Código Arduino:

Con esta conexión, na programación no IDE de Arduino temos que importar a librería SoftwareSerial, que se encarga de habilitar a comunicación serie con outros pins. Esta librería vén de serie no IDE, creamos un novo obxecto serie chamado BT conectado aos pins 10 e 11:

Arduino
#include <SoftwareSerial.h> // Librería que permite establecer comunicación serie noutros pins. SoftwareSerial BT (10,11); // Indicamos que o pin 10=RX e o 11=TX. int ledred = 3 ; // Pin LED Red int ledgreen = 5 ; // Pin LED Green int ledblue = 6 ; // Pin LED Blue void setup (){ BT.begin ( 9600 ); // Velocidade do porto do módulo Bluetooth pinMode ( ledred , OUTPUT ); pinMode ( ledgreen , OUTPUT ); pinMode ( ledblue , OUTPUT ); } void loop (){ while (BT.available()>0){ // Cando haxa datos dispoñibles int red = BT.parseInt (); // Lemos o primeiro valor enteiro (Red) e almacenámolo na variable int green = BT.parseInt (); // Lemos o segundo valor enteiro (Green) e almacenámolo na variable int blue = BT.parseInt (); // Lemos o último valor enteiro (Blue) e almacenámolo na variable if (BT.read()=='\n'){ // Cando lea o carácter fin de liña ('\n') quere dicir que finalizou o envío dos tres valores analogWrite(ledred, red); // Enviamos os valores dos tres cores ao LED RGB através de PWM analogWrite(ledgreen, green); analogWrite(ledblue, blue); } } }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <SoftwareSerial.h> // Librería que permite establecer comunicación serie noutros pins. SoftwareSerial BT (10,11); // Indicamos que o pin 10=RX e o 11=TX. int ledred = 3 ; // Pin LED Red int ledgreen = 5 ; // Pin LED Green int ledblue = 6 ; // Pin LED Blue void setup (){ BT.begin ( 9600 ); // Velocidade do porto do módulo Bluetooth pinMode ( ledred , OUTPUT ); pinMode ( ledgreen , OUTPUT ); pinMode ( ledblue , OUTPUT ); } void loop (){ while (BT.available()>0){ // Cando haxa datos dispoñibles int red = BT.parseInt (); // Lemos o primeiro valor enteiro (Red) e almacenámolo na variable int green = BT.parseInt (); // Lemos o segundo valor enteiro (Green) e almacenámolo na variable int blue = BT.parseInt (); // Lemos o último valor enteiro (Blue) e almacenámolo na variable if (BT.read()=='\n'){ // Cando lea o carácter fin de liña ('\n') quere dicir que finalizou o envío dos tres valores analogWrite(ledred, red); // Enviamos os valores dos tres cores ao LED RGB através de PWM analogWrite(ledgreen, green); analogWrite(ledblue, blue); } } }

## App Inventor:

### Deseño:

A aparencia da app será como mostra na seguinte figura:

As características son:

- Cor de fondo da pantalla: gris escuro
- Selector de lista que chamaremos CONECT (o podes atopar no bloque de Interfaz de usuario)
- Etiqueta co texto LED RGB
- Tres Contedores horizontais que teñen no seu interior unha Etiqueta co texto da cor e un Deslizador
- Un elemento ClienteBluetooth1 (o podes atopar no bloque de Conectividad)

### Programación de Bloques:

A conexión Bluetooth depende do Selector de Lista que chamamos CONECT.

Ao inicializar a pantalla a App tomará todas as conexións Bluetooth e as listará neste elemento.

Unha vez pulsamos o selector CONECT mostraranos o listado de conexións e establecerá conexión co módulo Bluetooth conectado ao Arduino.

Unha vez conectado cambiará a cor de texto a azul.

Cada un dos tres Deslizadores realizan a mesma función, un para cada cor. Cando hai un cambio de posición en calqueira dos Deslizador, comprobamos se temos conexión Bluetooth e enviamos os valores redondeados dos Deslizadores vermello, verde e azul, separados con comas e rematando cun retorno de carro, por exemplo: 145 , 34, 210 \n

### Reto 1:

Serás quen de engadir outro Deslizador para controlar con el os outros tres para que así estean sincronizados?

Unha Pista. En App Inventor:

Cuando [DeslizadorAgregado] Posición cambiada]ejecutar

- poner [REDDeslizador] [Posición DelPulgar] a [DeslizadorAgregado] [Posición DelPulgar]
- poner [GREENDeslizador] [Posición DelPulgar] a [DeslizadorAgregado] [Posición DelPulgar]
- poner [BLUEDeslizador] [Posición DelPulgar] a [DeslizadorAgregado] [Posición DelPulgar]

(Lembra que programando existen varias solucións)

## Reto 2:

Na anterior práctica conectábamos o Bluetooth nas entradas dixitais (0,1) RX e TX do Arduíno, pero nesta práctica cambiamos a conexión do Bluetooth utilizando Software Serial BT (10,11), é dicir, que o pin 10 do Arduino é o RX e o pin 11 é o TX, de tal xeito que nos quedan baleiras as entradas TX e RX do Arduíno.

Serás quen de cambiar as conexións do Bluetooth para conectalo as entradas TX e RX do Arduíno? Lembra que na programación no IDE tes que usar a función Serial para comunicarte.

### App Inventor

### Prácticas

### Apps para Arduíno

### Licenza