jueves, 3 de mayo de 2012

RGB Diodoaren koloreak


Aplikazio honen helburua, RGB diodo baten erabilpena ikustea da. Arduino plakako PWM pultsuak erabiliz, tentsio balore medio desberdinak lortu ditzazkegu, eta horrela led-ak kolore desberdinak argiztatzen ditu. 4. pin-etik, pultsadorearen sarrera izango dugu, eta 5. pinetik zunbadorea kontrolatuko dugu. RGB led-arentzat 6, 9 eta 10 pin-ak  irteerak izango ditu, PWM pultsuak bidali ditzazkeenak eta era horretan koloreak kontrolatu.




Zirkuitua:


RGB-ari buruzko informazioa:



RGB diodoa, berez hiru diodo desberdinez osatuta dago, eta elikatzen dezun tentsioaren arabera kolore desberdin bat argiztatzen du. Hiru diodoak ez dituzte kolore rango guztiak asetzen beraz, beraien arteko konbinaketak egiten dira, kolore sekundarioak lortzeko. Gorria eta urdina, morea lortzeko adibidez. Lau anka dauzka. Luzeena anodo komuna da eta beste hirurak diodo bakoitzeko katodoak dira.


PWM pultsuak:


PWM pultsuak, 0 eta 5V-ko (gure kasuan) seinaleak dira. Seinalearen amplitudearen arabera, edo hobeto esanda 5V-ak zenbat irauten duen arabera, irteerako tentsio media, igo edo jeitsi egingo da.

Aplikazioaren sketch-a:

int x=0;
void setup() { 
   
  pinMode(4, INPUT); 
  pinMode(5, OUTPUT); 
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);  
  analogWrite(6,255);
  analogWrite(9,255);
  analogWrite(10,255);
}
     
void loop() 
{
  analogWrite(5,0);

    if (digitalRead(3) == LOW)
    {   
      delay (30);       
      analogWrite(5,20); 
      delay(100);
      analogWrite(5,0);
      delay(100);
      while(digitalRead(3)==LOW);
      {
        digitalRead(3);
    
      }
      x++;
      if (x==1)
      {
        analogWrite(6,255);
        analogWrite(9,255);
        analogWrite(10,255);
      }
      if (x==2)
      {
        analogWrite(6,0);
        analogWrite(9,255);
        analogWrite(10,0);
      }
      if (x==3)
      {
        analogWrite(6,0);
        analogWrite(9,255);
        analogWrite(10,255);
      }
      if (x==4)
      {
        analogWrite(6,255);
        analogWrite(9,255);
        analogWrite(10,0);
      } 
      if (x==5)
      {
        analogWrite(6,0);
        analogWrite(9,0);
        analogWrite(10,255);
      }  
      if (x==6)
      {
        analogWrite(6,255);
        analogWrite(9,0);
        analogWrite(10,0);
      }
      if (x==7)
      {
        analogWrite(6,255);
        analogWrite(9,0);
        analogWrite(10,255);
      }
      if (x==8)
      {
        analogWrite(6,0);
        analogWrite(9,0);
        analogWrite(10,0);
      }
    }  

    if (x==8) 
    {
      x=0;
    }
}


1 comentario: