/****** Proyecto *****//
//Lab 9: Controlar desde una interfaz en Processing,
//el patrón de movimiento y colores en un módulo de 8 LEDs RGB
//controlado con un Arduino.
//* Autor: Stephanny Alexandra González
/********** Variables **********/
// se nombran las variables y sus respectivos pines
#define TOTAL 8
#define MAX 8
//Declaracion de pines y de arreglos
// Conectamos el LED a los pines,9,10,11 que es PWM
// salida pwm azul_color
int pin_r = 9;
// salida pwm verde-color
int pin_g = 10;
// salida pwm rojo- color
int pin_b = 11;
// conexion de pines digitales al modulo
int led[TOTAL] = {2, 3, 4, 5, 6, 7, 8, 12};
// Inicialización
int R[TOTAL]={0,0,0,0,0,0,0,0};
int G[TOTAL]={0,0,0,0,0,0,0,0};
int B[TOTAL]={0,0,0,0,0,0,0,0};
//Variables inicializadas
int pos = 0;
int tonalidadColor= 0;
int etapa = 0;
String str = "";
/********** Configuracion **********/
void setup() {
//comunicacion serial a 9600 baudios
Serial.begin(9600);
for (int i = 0; i < TOTAL; i++) {
pinMode(led[i], OUTPUT);
digitalWrite(led[i], HIGH);
}
// pin de salida, rojo-color
pinMode(pin.r, OUTPUT);
digitalWrite(pin.r, HIGH);
// pin de salida, verde-color
pinMode(ping, OUTPUT);
digitalWrite(ping, HIGH);
// pin de salida,azul-color
pinMode(pin-b, OUTPUT);
digitalWrite(pin-b, HIGH);
}
/********** Ciclo Principal **********/
// Solo se ejecuta una vez, al iniciar o resetear el Arduino
// Ciclo infinito de ejecucion
void loop() {
leerSerial();
for (int i=0; i<TOTAL; i++) {
encender(led[i], R[i], G[i], B[i]);
}
}
// aqui se condiciona si el valor enviado para
// la intensidad del pin R, G o B del modulo
//metodo necesario para leer la informacion serial
void leerSerial() {
if (Serial.available() > 0) {
str = Serial.readString();
pos = int(str[1] - '0');
etapa = int(str[2] - '0');
switch (str[0]) {
case 'r': R[pos] = etapa; break;;
case 'g': G[pos] = etapa; break;;
case 'b': B[pos] = etapa; break;; }}}
//metodo para encender los LEDs
void encender (int pin_led, int r, int g, int b)
{
digitalWrite(pin_led, LOW);
digitalWrite(pin_led, HIGH);
digitalWrite(pin.r, r == 0 ? HIGH : LOW);
digitalWrite(pin.r, HIGH);
digitalWrite(ping, g == 0 ? HIGH : LOW);
digitalWrite(ping, HIGH);
digitalWrite(pin-b, b == 0 ? HIGH : LOW);
digitalWrite(pin-b, HIGH);
delay(2);
}
/*********** Fin**************/