Programa De lecturas Analogicas

Hola Tengo un problema con mi codigo para una aplicacion que estoy creando nose que error sea ya que al momento de compilar no me muestra ningun error…

el programa trabaja asi:

tengo una entrada analogica que es A0
dos entradas digitales en el pin 4 y 5

lo que quiero es que cuando:

el pin 4 sea = 0 (low) y pin 5 sea = 0 (low), lo que este en A0= a Zona1
el pin 4 sea = 0 (low) y pin 5 sea = 1 (High), lo que este en A0= a Zona2
el pin 4 sea = 1 (High) y pin 5 sea = 0 (low), lo que este en A0= a Zona3
el pin 4 sea = 1 (High) y pin 5 sea = 1 (High), lo que este en A0= a Zona4

despues a lo ultimo mando los valores de mis variables al serial para verlos…

basicamente es lo que quiero pero lo corro y nose que es lo que me falte no me funciona, espero y puedan ayudarme gracias… dejo el codigo

int Zona1;
int Zona2;
int Zona3;
int Zona4;



void setup() {
 
  Serial.begin(9600);
  
 pinMode(4, INPUT);
 pinMode(5, INPUT);
  

}

void loop() {

if(4 == LOW && 5 == LOW)
{ 
  Zona1 = analogRead(A0);  
}

if(4 == LOW && 5 == HIGH)
  {
  Zona2 = analogRead(A0);
  }

  if(4 == HIGH && 5 == LOW)
  {
  Zona3 = analogRead(A0);
  }

  if(4 == HIGH && 5 == HIGH)
  {
  Zona4 = analogRead(A0);
  }

  Serial.print("Zona1  :");Serial.println(Zona1);
  Serial.print("Zona2  :");Serial.println(Zona2); 
  Serial.print("Zona3  :");Serial.println(Zona3);
  Serial.print("Zona4  :");Serial.println(Zona4);  
  Serial.println("");
  Serial.println("");
  Serial.println("");
  
  delay(2000);
  
}

sketch_jan17a.ino (688 Bytes)

Acá te hago unas modificaciones.
El error mas importante es que
4 o 5 nunca devuelven un valor mas que su propio valor numérico.
Debes usar digitalRead(pin);

const byte pinA = 4;
const byte pinB = 5;

unsigned int Zona1;
unsigned int Zona2;
unsigned int Zona3;
unsigned int Zona4;

bool estadoA;
bool estadoB;

void setup() {
  Serial.begin(9600);
  
  pinMode(pinA, INPUT);
  pinMode(pinB, INPUT);
}

void loop() {

  estadoA = digitalRead(pinA);
  estadoB = digitalRead(pinB);

  valor = estadoA + estadoB << 1; 
  // esadoB << 1 mueve a la izq 1 posición binaria

  switch (valor) {
    case 0: Zona1 = analogRead(A0);
            break;
    case 1: Zona2 = analogRead(A0);
            break;
    case 2: Zona3 = analogRead(A0);
            break;
    case 3: Zona4 = analogRead(A0);
            break;
  }

  Serial.print("Zona1  :"); Serial.println(Zona1);
  Serial.print("Zona2  :"); Serial.println(Zona2); 
  Serial.print("Zona3  :"); Serial.println(Zona3);
  Serial.print("Zona4  :"); Serial.println(Zona4);  
  Serial.println("");
  Serial.println("");
  Serial.println("");

  delay(2000);
  
}

Para no distorsionar el planteamiento inicial del problema, habría que modificar estas dos lineas del código a fin de que la relacion pin4-pin5 con Zona1 a Zona4 se mantenga.

 switch (valor)
{
    case 0: Zona1 = analogRead(A0);
            break;
    case 1: Zona3 = analogRead(A0);  // <<== Cambiada
            break;
    case 2: Zona2 = analogRead(A0);  // <<== Cambiada
            break;
    case 3: Zona4 = analogRead(A0);
            break;
}

Otra posible solucion:

  valor = estadoA<<1 + estadoB;   // <<== Cambiada
  // estadoA << 1 mueve a la izq 1 posición binaria

Saludos

Muchisimas Gracias !! solo que al compilar el codigo me dice que no declaro la variable “Valor”, la tengo que declarar al iniciar el programa ? que tipo de variable es int o bool ?, gracias y disculpen las molestias!

A la variable “Valor” la puse de tipo entero y despues la imprimi en la pantalla serial para monitoriarla y solo me da estos valores: 0, 2 y 4 …

no sera en la forma en que estamos sumando las dos valiables EstadoA y estado B?

valor = estadoA + estadoB << 1;
// esadoB << 1 mueve a la izq 1 posición binaria

Que linea has usado?

 valor = estadoA + estadoB << 1;

o esta

  valor = estadoA<<1 + estadoB;

Hola amigos disculpen la demora, no tenia tiempo de entrar a foro, si intente con los dos y modificando los case.. pero enconte una solucion y me funciono muy bien en base al primer codigo de la publicacion se los dejo ..

const byte pinA = 4;
const byte pinB = 5;

unsigned int Zona1;
unsigned int Zona2;
unsigned int Zona3;
unsigned int Zona4;

bool estadoA;
bool estadoB;
int selector;


void setup() {
  Serial.begin(9600);
  
  pinMode(pinA, INPUT);
  pinMode(pinB, INPUT);
}

void loop() {

  estadoA = digitalRead(pinA);
  estadoB = digitalRead(pinB);
  
  if(estadoA==0 && estadoB==0)
  {
    selector=0;
    Zona1 = analogRead(A0);
    
  }
  
   if(estadoA==1 && estadoB==0)
  {
    selector=1;
    Zona2 = analogRead(A0);
    
  }
  
   if(estadoA==0 && estadoB==1)
  {
    selector=2;
    Zona3 = analogRead(A0);
    
  }
  
   if(estadoA==1 && estadoB==1)
  {
    selector=3;
    Zona4 = analogRead(A0);
    
  }

  


  Serial.print("Zona1  :"); Serial.println(Zona1);
  Serial.print("Zona2  :"); Serial.println(Zona2); 
  Serial.print("Zona3  :"); Serial.println(Zona3);
  Serial.print("Zona4  :"); Serial.println(Zona4);  
   Serial.print("Selector binario  :"); Serial.println(selector); 
  Serial.println("");
  Serial.println("");
  Serial.println("");

  delay(2000);
  
}

Agrega [Solucionado] al título entonces