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:
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:
#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.