[ SOLUCIONADO ] Purta lógica con dos botones

Hola!

Me acabo de estancar en un proyecto porque no sé cómo hacer una puerta lógica AND con la señal de dos botones.

¿Me podría ayudar alguien? Gracias! :D

P.D.:Quien resuelva el problema le daré crédito en mi proyecto!

Saludos.

Con esta puedes usar cuantas entradas quieras y te permita tu arduino.

int ledpin= 13; // salida del comparador
int numero_entradas = 3 ; //Cantidad de pines a usar
int entrada[] = {9,10,11}; //Pines digitales para las entradas
boolean salida= false;


void setup(){
  pinMode(ledpin, OUTPUT);
  for (int i = 0; i < numero_entradas; i++){ //Se configuran los pines como entradas
    pinMode(entrada[i], INPUT);
    digitalWrite(entrada[i],HIGH);
  }
}

void loop(){
  salida= true;
  for (int i = 0; i < numero_entradas; i++){ //Se configuran los pines como entradas
    salida= salida && digitalRead(entrada[i]);
   digitalWrite(entrada[i],HIGH);
  }
  digitalWrite(ledpin,salida);
}

La respuesta de MAX_SAETA es correcta, aunque quizá demasiado sofisticada para un principiante. Si no te aclaras te mando un ejemplo más simple.

vffgaston: La respuesta de MAX_SAETA es correcta, aunque quizá demasiado sofisticada para un principiante. Si no te aclaras te mando un ejemplo más simple.

La verdad es que me gustaria un código un poco más sencillo

max_saeta:
Saludos.

Con esta puedes usar cuantas entradas quieras y te permita tu arduino.

int ledpin= 13; // salida del comparador

int numero_entradas = 3 ; //Cantidad de pines a usar
int entrada = {9,10,11}; //Pines digitales para las entradas
boolean salida= false;

void setup(){
  pinMode(ledpin, OUTPUT);
  for (int i = 0; i < numero_entradas; i++){ //Se configuran los pines como entradas
    pinMode(entrada[i], INPUT);
    digitalWrite(entrada[i],HIGH);
  }
}

void loop(){
  salida= true;
  for (int i = 0; i < numero_entradas; i++){ //Se configuran los pines como entradas
    salida= salida && digitalRead(entrada[i]);
   digitalWrite(entrada[i],HIGH);
  }
  digitalWrite(ledpin,salida);
}

Gracias por tu ayuda, pero… ¿tanto código es necesario?

Hola tecnocroco si solo queres encender un led si las dos entradas se encuentran altas con este codigo basta, es una compuerta AND que funciona con comparacion (&&)

int ledpin= 13; 
int boton1= 10;
int boton2= 9;



void setup(){
pinMode(ledpin, OUTPUT);
pinMode (boton1, INPUT);
pinMode (boton2, INPUT);
digitalWrite(ledpin,LOW);

  }


void loop(){

if (digitalRead(boton1) == HIGH  && digitalRead(boton2) == HIGH) { 
  digitalWrite(ledpin,HIGH);

} 
else
{
digitalWrite(ledpin,LOW);
}
}

PD: Sino entendes como funciona la linea de comparacion es asi

Si (lee la entrada del boton1 ES alta) Y (lee la entrada del boton2 ES alta)

Enciende el led

SINO

Lo mantiene apagado.

// Esa comparacion solo hace que se va a encender el led si las dos entradas son altas, si una es alta y la otra baja o las dos bajas no lo va a encender

Otra aclaracion… Cuando armes el circuito debes pones lo pulsadores con una R de 10k a gnd para que cuando se pulse el valor sea 0, sino pones esa resistencia, el minimo voltaje parasito el arduino lo reconocera como si se hubiese pulsado el boton… Aca una imagen http://www.arduteka.com/wp-content/uploads/2011/11/PULLUPPULLDOWN.jpg

Debes configurar el circuito como PULL DOWN

Este es un ejemplo con un led, pero en reemplazo se puede poner otra entrada del arduino por ejemplo…

Espero que te sirva… Cualquier duda consulta…

Un abrazo!

Hola tecnocroco si solo queres encender un led si las dos entradas se encuentran altas con este codigo basta, es una compuerta AND que funciona con comparacion (&&)

Algo así decía yo: ¡Bien!

Gracias por el aporte! Me funcionó!

Hola que tal este soy nueo en esto y tengo que realizar un proyecto en el cual me piden realizar un código para arduino que consista de abrir y cerrar la puerta de un autobús, la puerta del autobús tiene un sistema neumático que consiste en dos valvula 5/2 y dos cilindros de doble acción podría ser alguien tan amable de ayudarme de los agradecería mucho.