lunes, 21 de enero de 2013

Control de LED RGB

Como sabrán para el led conectado al pin 13 no es necesario el uso de la resistencia de 220 ohmios de protección, pero para la conexión del motor DC si se hace necesario utilizar un transistor 2n3904



int ledRojo=9; //Declara Pin LED Rojo
int ledVerde=10; //Declara Pin LED Verde
int ledAzul=11;  //Declara Pin LED Azul
int r=0; //Declara Pin LED Rojo
int g=0; //Declara Pin LED Verde
int b=0;  //Declara Pin LED Azul
String inString = "";    // string to hold input
int currentColor = 0;
int ok = 0;

void setup() // Se ejecuta cada vez queel Arduino se inicia
{
  Serial.begin(9600); //Open the serial port
  pinMode(ledRojo,OUTPUT);  //El LED Rojo como una salida
  pinMode(ledVerde,OUTPUT); //El LED Verde como una salida
  pinMode(ledAzul,OUTPUT);  //El LED Azul como una salida
}

void loop() {
  int inChar;
  if (Serial.available() > 0) {
    inChar = Serial.read();
  }

  if (isDigit(inChar)) {
    inString = inString+(char)inChar;
  }

  if (inChar == ',') {
    if (inString.toInt()==12345 && ok==0){
        inString = "";
        ok=1;
        currentColor=0;
    }
    if (ok==1){
   
      switch (currentColor) {
      case 1:    // 0 = red
        r = inString.toInt();
        inString = "";
        break;
      case 2:    // 1 = green:
        g = inString.toInt();
        inString = "";
        break;
      case 3:    // 2 = blue:
        b = inString.toInt();
        inString = "";
        break;    
      }
   
      currentColor++;
      if(currentColor==4)
        currentColor=0;
        inString = "";
        ok==0;
      }
  }
   color(r,g,b);
}
//------------------------------------
//Funcion color
//------------------------------------

void color(int rojo, int verde, int azul){

    //Escritura de PWM del color Rojo
    analogWrite(ledRojo, rojo);
    //Escritura de PWM del color Verde
    analogWrite(ledVerde, verde);
    //Escritura de PWM del color Azul
    analogWrite(ledAzul, azul);
}


1 comentario: