/* TITULO: Composición de colores RGB con potenciómetros a través de Bluetooth - Arduino_Maestro -
AUTOR:
MARIANO DEL CAMPO GARCÍA (@2017) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
- FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
- TWITTER: https://twitter.com/MarianoCampoGa
DESCRIPCIÓN DEL PROGRAMA
Con este programa controlamos el color de un LED RGB, a través de Bluetooth, a medida que movamos
el mando de los tres potenciómetros (uno para cada color). Este es el programa del Arduino Maestro,
donde se incluye la adquisición de los valores analógicos de los potenciómetros, su adecuada
transformación y por último el envío de estos valores transformados al Arduino Esclavo a través de
Bluetooth.
ESQUEMA DE CONEXION
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ][ ] |
| MOSI2/SCK2 [ ][ ] A5/SCL[ ] |
| 5V/MISO2 [ ][ ] A4/SDA[ ] |
| AREF[ ] |
| GND[ ] |
| [ ]N/C SCK/13[ ] |
| [ ]IOREF MISO/12[ ] |
| [ ]RST MOSI/11[ ]~|
| [ ]3V3 +---+ 10[ ]~|
| [ ]5v -| A |- 9[ ]~|
| [ ]GND -| R |- 8[ ] |
| [ ]GND -| D |- |
| [ ]Vin -| U |- 7[ ] | Pin RX del módulo Bluetooth HC-05
| -| I |- 6[ ]~| Pin TX del módulo Bluetooth HC-05
P2_Pot[0] | [ ]A0 -| N |- 5[ ]~|
P2_Pot[1] | [ ]A1 -| O |- 4[ ] |
P2_Pot[2] | [ ]A2 +---+ INT1/3[ ]~|
| [ ]A3 INT0/2[ ] |
| [ ]A4/SDA RST SCK MISO TX>1[ ] |
| [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
| [ ] [ ] [ ] |
| UNO_R3 GND MOSI 5V ____________/
\_______________________/
NOTAS:
- Utilizamos un potenciómetro lineal de 10K ohms.
- Denomínamos a los terminales del potenciómetro como P1, P2 y P3 (donde P2 es el terminal central).
- P1_Pot[0], P1_Pot[1] y P1_Pot[2] conectados a VCC.
- P3_Pot[0], P3_Pot[1] y P3_Pot[2] conectados a GND.
- Alimentación del módulo Bluetooth HC-05:
- Pin +5V del módulo Bluetooth HC-05 --> +5V de Arduino.
- Pin GND del módulo Bluetooth HC-05 --> GND de Arduino.
*/
#include <SoftwareSerial.h>
// Definimos el objeto para la comunicación serie (Bluetooth)
SoftwareSerial BT(6,7); // 6 RX, 7 TX.
const int Pot[3] = {0, 1, 2}; // Pines analógicos para los 3 potenciómetros (colores R,G y B respectivamente)
unsigned int RGB[3]; // Matriz para almacenar el valor del color del LED RGB (De 0 a 255)
int i=0; // Variable para recorrer las posiciones de las matrices RGB[3] y Pot[3]
unsigned int final = 200; // Variable final
void setup()
{
Serial.begin(9600);
// Comienzo de la comunicación con el módulo Bluetooth HC-05 (configurable mediante comandos AT)
BT.begin(38400); // Velocidad de comunicación por defecto del módulo Bluetooth HC-05
}
void loop()
{
// Si el índice i es menor de 3
if(i<3)
{
// Leemos el valor analógico de los 3 potenciómetros y lo dividimos entre 8 (valores entre 0 - 127)
RGB[i] = analogRead(Pot[i])/8;
// Enviamos a través de Bluetooth el valor del color RGB correspondiente
// Para su correcta recepción nunca debemos de enviar valores superiores a 255.
BT.write(RGB[i]);
delay(50); // Retardo para mejorar la comunicación Bluetooth
// Presentamos el valor RGB del LED a través del monitor serie
switch (i)
{
case 0:
Serial.print("R: ");
break;
case 1:
Serial.print("G: ");
break;
case 2:
Serial.print("B: ");
break;
}
Serial.println(RGB[i]*2); // Presentamos valores reales (entre 0 y 255)
// Aumentamos una posición en las matrices
i++;
}
// Si el índice i no es menor de 3
else
{
BT.write(final); // Enviamos a través de Bluetooth la variable que finaliza la secuencia
delay(50); // Retardo para mejorar la comunicación Bluetooth
i=0;
Serial.println("---------------------------");
}
}