/** Estudiante: Edwin Lobo Hernandez
* Profesor: Diego Marin
* Laboratorio 9
* DescripciĆ³n del laboratorio: Crear una interfaz con proccessing que controle un modulo de 8 LED's RGB
*/
/********** 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 para el color rojo
int pin_r = 4;
// salida pwm para el color azul
int pin_b = 3;
// salida pwm para el color verde
int pin_g = 2;
// Indica los pines en el que debe estar conectado el modulo
int led[TOTAL] = { 5, 6, 7, 8, 9, 10, 11, 12};
// Se inicializan los datos de cada variable de color
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 de cada componenten Inicializadas
int pos = 0;
int color = 0;
int estado = 0;
String str = "";
/********** Configuracion **********/
void setup() {
//comunicacion serial sera a 9600 baudios y pines inicializados con sus estados
Serial.begin(9600);
for (int i = 0; i < TOTAL; i++) {
pinMode(led[i], OUTPUT);
digitalWrite(led[i], HIGH);
}
// se configuran las salidas PWM usadas
// pin de salida, color rojo
pinMode(pin_r, OUTPUT);
digitalWrite(pin_r, HIGH);
// pin de salida, color verde
pinMode(pin_g, OUTPUT);
digitalWrite(pin_g, HIGH);
// pin de salida, color azul
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');
estado = int(str[2] - '0');
switch (str[0]) {
case 'r': R[pos] = estado; break;;
case 'g': G[pos] = estado; break;;
case 'b': B[pos] = estado; break;; }}}
//metodo para encender cada led deacuardo al pin usado
void encender (int pin_led, int r, int g, int b)
{
digitalWrite(pin_led, LOW);
digitalWrite(pin_r, r == 0 ? HIGH : LOW);
digitalWrite(pin_g, g == 0 ? HIGH : LOW);
digitalWrite(pin_b, b == 0 ? HIGH : LOW);
delay(2);
digitalWrite(pin_led, HIGH);
digitalWrite(pin_r, HIGH);
digitalWrite(pin_g, HIGH);
digitalWrite(pin_b, HIGH);
}
/*********** Fin**************/