Hola a todos, necesito un poco de ayuda.
El programa consiste en que tenemos tres pulsadores y un led. El led se enciende si y solo si hay dos pulsadores pulsados. Es decir, si hay uno o tres, el led permanece apagado.
Os dejo el programa que tengo. De esta forma me "medio funciona". Cuando pulso un pulsador se medio enciende el led, cuando pulso dos se enciende y cuando pulso tres se apaga.
Gracias de antemano.
/*
Suponer que tenemos una lámpara que queremos encender o apagar desde tres puntos.
Realizar un programa que la encienda si y solo si hay dos interruptores activados.
Tenemos 3 interruptores en RB0, RB1 y RB2.
La lámpara se encuentra en RB3.
*/
// configuro los números de los pines. Como son valores que no van a cambiar utilizo el const int
const int pulsador1 = 2; //introduzco una variable para identificar cada uno de los pulsadores
const int pulsador2 = 3;
const int pulsador3 = 4;
const int led = 12; // esta variable almacena el pin
// variables que sí van a cambiar.
int contador = 0; // variable for reading the pushbutton status
void setup() {
Serial.begin(9600);
// Declaro el led como salida
pinMode(led, OUTPUT);
// Declaro los pulsadores como entradas
pinMode(pulsador1, INPUT);
pinMode(pulsador2, INPUT);
pinMode(pulsador3, INPUT);
}
void loop() {
//con cada ciclo de reloj reseteamos el valor del contador.
contador = 1;
// comprobamos si los pulsadores están activados
// si es así, se incrementa en uno la variable contador.
if (digitalRead(pulsador1) == HIGH) {
// turn LED on:
contador ++;
}
if (digitalRead(pulsador2) == HIGH) {
// turn LED on:
contador ++;
}
if (digitalRead(pulsador3) == HIGH) {
// turn LED on:
contador ++;
}
//ahora, si la variable contador nos da 2, deduciremos que se han activado los dos interruptores
//condición indispensable para el funcionamiento del micro.
if (contador == 2){
digitalWrite(led, HIGH);
}
else {
// turn LED off:
digitalWrite(led, LOW);
}
Serial.print(contador);
}