MASTERMIND

Buenos días, Tengo un pequeño problema ... He modificado un poco el programa y no sé porque no se enciende el led de verificación. Es por el programa y no se que es... el led funciona bien pero no me va. Lo otro de momento correcto:

//Definim els pins dels colors RGB
int ledVermell=3;  
int ledBlau=5;  
int ledVerd=6;  
boolean LedVerifica=8;
// Guarda els valors a assignar a cada color(0-254) 
int ValorVermell=254;  
int ValorBlau=254;  
int ValorVerd=254; 

//Botons d'incrementar  
int BotoIncrementa=7;

//variable
int numcolor=0; 

void setup()   
 {   
    pinMode(BotoIncrementa, INPUT);      
    pinMode(LedVerifica, OUTPUT);
   
   vermell();
    
 }  

void loop() 
 {
   //*********************        L        E        D        1          **********************************

   if (digitalRead(BotoIncrementa) == HIGH)
   {
      analogWrite(ledVermell, 0);  
      analogWrite(ledVerd, 0);  
      analogWrite(ledBlau, 0);
      delay(1000);
    //rutina per canviar el color
    switch (numcolor)
      {
        case 0:taronja(); numcolor++; break;
        case 1:verd(); numcolor++; break; 
        case 2:groc(); numcolor++; break;
        case 3:blau(); numcolor++; break;
        case 4:lila(); numcolor++; break; 
        case 5:gris(); numcolor++; break;        
        default:vermell(); numcolor=0; 
      }
    // aquí compararem el color per veure si s'encen el led de verificació.
    if ((ledVermell==0) && (ledVerd==128) && (ledBlau==0)) 
        {
        digitalWrite(LedVerifica, HIGH);
        delay(1000);  
        digitalWrite(LedVerifica, LOW);
        }  
   }
}                


void taronja()
{
   analogWrite(ledVermell, 254);  
   analogWrite(ledVerd, 69);  
   analogWrite(ledBlau, 3);
   
}
void vermell()
{
   analogWrite(ledVermell, 254);  
   analogWrite(ledVerd, 0);  
   analogWrite(ledBlau, 0);
   
}
void verd()
{
   analogWrite(ledVermell, 0);  
   analogWrite(ledVerd, 128);  
   analogWrite(ledBlau, 0);
   
}  
void groc()
{
   analogWrite(ledVermell, 128);  
   analogWrite(ledVerd, 128);  
   analogWrite(ledBlau, 0);
   
}  
void blau()
{
   analogWrite(ledVermell, 0);  
   analogWrite(ledVerd, 0);  
   analogWrite(ledBlau, 254);
   
}   
void lila()
{
   analogWrite(ledVermell, 128);  
   analogWrite(ledVerd, 0);  
   analogWrite(ledBlau, 128);
   
}  
void gris()
{
   analogWrite(ledVermell, 128);  
   analogWrite(ledVerd, 64);  
   analogWrite(ledBlau, 128);
   
}

quiero k se encienda el led cuando en el rgb salga verde

SALUDOS!!

Hay un par de fallos de los que me he percatado:

Has definido 'LedVerifica' como booleano Comparas el valor que debería ser el verde, con el valor de los pines a los que está asignado el led RGB (ledVermell, ledBlau, ledVerd) y no con ValorVermell y demás que nunca usas, por lo que al cambiar de color deberás meter en dichas variables el valor de cada color que has asignado para luego poder compararlo con el verde.

Creo que con esto ya está todo y por cierto, no hace falta que crees múltiples posts para el mismo problema ya que se pierde el hilo del tema

Un saludo

Gracias y perdón.

No sale xD. Será que no te he entendido bien, saludos. 3 días no me dan para llegar más lejos :D. Ayudadme que odio encallarme... Salud!

//Definim els pins dels colors RGB
int ledVermell=3;  
int ledBlau=5;  
int ledVerd=6;  
int ledVerifica=8;
// Guarda els valors a assignar a cada color(0-254) 
int valorVermell=254;  
int valorBlau=254;  
int valorVerd=254; 

//Botons d'incrementar  
int botoIncrementa=7;

//variable
int numcolor=0; 

void setup()   
 {   
    pinMode(botoIncrementa, INPUT);      
    pinMode(ledVerifica, OUTPUT);
   
   vermell();
    
 }  

void loop() 
 {
   //*********************        L        E        D        1          **********************************

   if (digitalRead(botoIncrementa) == HIGH)
   {
      analogWrite(ledVermell, 0);  
      analogWrite(ledVerd, 0);  
      analogWrite(ledBlau, 0);
      delay(1000);
    // aquí compararem el color per veure si s'encen el led de verificació.
    if ((valorVermell==0) && (valorVerd==128) && (valorBlau==0)) 
      {
        digitalWrite(ledVerifica, HIGH);
        delay(1000);  
        digitalWrite(ledVerifica, LOW);
      }
    
    //rutina per canviar el color
    switch (numcolor)
      {

        case 0:taronja(); numcolor++; break;
        case 1:verd(); numcolor++; break; 
        case 2:groc(); numcolor++; break;
        case 3:blau(); numcolor++; break;
        case 4:lila(); numcolor++; break; 
        case 5:gris(); numcolor++; break;        
        default:vermell(); numcolor=0; 

       } 
    }
}                


void taronja()
{
   analogWrite(ledVermell, 254);  
   analogWrite(ledVerd, 69);  
   analogWrite(ledBlau, 3);
   
}
void vermell()
{
   analogWrite(ledVermell, 254);  
   analogWrite(ledVerd, 0);  
   analogWrite(ledBlau, 0);
   
}
void verd()
{
   analogWrite(ledVermell, 0);  
   analogWrite(ledVerd, 128);  
   analogWrite(ledBlau, 0);
   
}  
void groc()
{
   analogWrite(ledVermell, 128);  
   analogWrite(ledVerd, 128);  
   analogWrite(ledBlau, 0);
   
}  
void blau()
{
   analogWrite(ledVermell, 0);  
   analogWrite(ledVerd, 0);  
   analogWrite(ledBlau, 254);
   
}   
void lila()
{
   analogWrite(ledVermell, 128);  
   analogWrite(ledVerd, 0);  
   analogWrite(ledBlau, 128);
   
}  
void gris()
{
   analogWrite(ledVermell, 128);  
   analogWrite(ledVerd, 64);  
   analogWrite(ledBlau, 128);
   
}

Ahora haces bien la comparación, pero los valorVermell y compañía no los cambias nunca, por lo que siempre estarán a 254 que es el valor que les has puesto por defecto al principio del programa, por lo que tienes que cambiar:

void taronja()
{
   analogWrite(ledVermell, 254);
   analogWrite(ledVerd, 69);
   analogWrite(ledBlau, 3);
}

por

void taronja()
{
   analogWrite(ledVermell, 254);
   analogWrite(ledVerd, 69);
   analogWrite(ledBlau, 3);
   valorVermell = 254;
   valorVerd = 69;
   valorBlau = 3;
}

Y así cada vez que cambies de color, es decir, que hagas un analogWrite

Un saludo

Ok. Gracias por tu paciencia chiva.

De nada, para eso estamos