Go Down

Topic: ayuda con pines porfavor (Read 759 times) previous topic - next topic

srvc18rm

Estoy haciendo un proyecto, que es un identificador de colores, el problema es que tengo el código:

int valor=0;
int verde=9;
int rojo=10;
int amarillo=8;
int azul=11;
int blanco=12;

void setup()
{
    pinMode(rojo,OUTPUT);
  pinMode(verde,OUTPUT);
  pinMode(amarillo,OUTPUT);
  pinMode(azul,OUTPUT);
  pinMode(blanco,OUTPUT);
 

  Serial.begin(9600);
 
}

void loop()
{
 

 
  valor = analogRead(A4);
  Serial.println(valor);
  delay(5000);
 
if (valor == 0)
{
  digitalWrite(verde,HIGH);
  delay(5000);
  Serial.println("verde");
}
  else
  {
    if (valor == 2 || valor == 3)
    {
      digitalWrite(rojo,HIGH);
      delay(5000);
      Serial.println("rojo");
    }
 
    else
    {
      if (valor == 4 || valor == 5)
      {
        digitalWrite(amarillo,HIGH);
      delay(5000);
      Serial.println("amarillo");
   
      }
    else
    {
      if (valor == 22 || valor == 23)
      {
        digitalWrite(azul,HIGH);
        delay(5000);
        Serial.println("azul");
      }
     
      else
      {
        if (valor == 86 || valor == 87)
        {
          digitalWrite(blanco,HIGH);
          delay(5000);
          Serial.println("blanco");
        }
        else
        {
          digitalWrite(verde,LOW);
          digitalWrite(rojo,LOW);
          digitalWrite(amarillo,LOW);
          digitalWrite(azul,LOW);
          digitalWrite(blanco,LOW);
         
        }
      }
    }
    }

 
   
}
 
}


El problema es que lo mando a un APR9600 para que me de una respuesta de audio y me activa todas las salidas digitales por lo tanto se activa siempre el primer mensaje y si le doy LOW a los pines igualmente me lo hace, ¿QUE PUEDO HACER?

OoTzToO

¿Y qué te saca por serial?  :smiley-roll:

srvc18rm

en el serial me imprime la medida que me da una fotoresistencia para cada color de led diferente, se supone que cuando me de un valor de los que estan ahi debe de activar un solo pin pero me activa todos.

fermg

el problema que tienes es que en el codigo lo que pones es un if y los demas un else y no es asi asi si no
else if, me explico me invento el codigo pero es asi.

valor = analogRead(ldr);

if(valor == =)
{
digitalWrite(13,HIGH);
delay
}
else if(valor >150 && valor <300)
{
digitalWrite................
}
asi todos los que quieras
y al final
else
{
dnfkjdfkbkd
}

espero haberte ayudado.

Hinjeniero

Reprogramalo utilizando un "swich" (que sería la forma correcta en este caso).
no pain, no gain!!

Go Up