//led RGB eje 6.3
int RED=4;
int GREEN=3;
int BLUE=2;
int pote_rojo=0;
int pote_verde=0;
int pote_azul=0;
int i_verde=0;
int i_azul=0;
int i_rojo=0;
int do_pwm (int analog_value,int salida); // Funcion PWM
void setup() {
pinMode(RED, OUTPUT);
pinMode(BLUE, OUTPUT);
//salidas estaran inicializadas con valor LOW
digitalWrite(RED, LOW);
digitalWrite(BLUE, LOW);
Serial.begin(9600);
}
void loop() {
pote_rojo=analogRead(A0);
pote_verde=analogRead(A1);
pote_azul=analogRead(A2);
analogWrite(GREEN,map(pote_verde,0,1023,0,255)); // Salida Analogica
i_rojo=do_pwm (pote_rojo,RED); // Funcion PWM
i_azul=do_pwm (pote_azul,BLUE); // Funcion PWM
i_verde=map(pote_verde,0,1023,0,100);
// Puerto Serie Valores
Serial.print("Rojo:");
Serial.print(i_rojo);
Serial.print(" Verde:");
Serial.print(i_verde);
Serial.print(" Azul:");
Serial.println(i_azul);
}
// Funcion PWM
// analog_value-> valor analogico lectura de entrada
// salida -> DO donde se simula PWM
int do_pwm (int analog_value,int salida)
{
int d1=map(analog_value,0,1023,0,10); // mapeo tiempo delay encedido segun entrada
int d2=map(analog_value,0,1023,10,0); // mapeo tiempo delay apagado segun entrada
int intensidad=map(analog_value,0,1023,0,100); // mapeo para devolver intensidad de pote
digitalWrite(salida,HIGH);
delay(d1);
digitalWrite(salida,LOW);
delay(d2);
return intensidad;
}