2led un botón
necesito ayuda!! estado intentanto hacer un proyecto con arduino en el que dandole un boton se encienda primero un led(se apago solo) y al darle otra vez se encienda el 2º led(se apaga solo) y cuando el boton no este pulsado esten los dos apagados.
he conseguido el efecto de que se apague solo pero me falta que primero sea uno y luego otro ya que se encienden los dos la vez cuando le doy al botón en vez de primera vez que pulso uno y segunda vez otro.
alguien que me pueda ayudar?
este es el código:
const int pinled1 = 11; // declaración de variables
const int pinled2 = 5; // declaración de variables
const int pinbtn = 3; // declaración de variables
int pin;
int x = 0;
int encender = 0; // si esta encendido el led
int anterior = 0; //pulsación anterior
int estado = 0; //el estado actual del botón
void setup()
{
pinmode(pinled1, output);
pinmode(pinled2, output);
pinmode(pinbtn, input);
}
void loop()
{
{
estado = digitalread(pinbtn); //comprobamos el estado
if(estado == high)//comprobamos si el anterior estaba pulsado y el de ahora
{digitalwrite(pinled1, high);
}
else{
digitalwrite(pinled1, low);
}
{
estado = digitalread(pinbtn); //comprobamos el estado
if(estado == high)//comprobamos si el anterior estaba pulsado y el de ahora
{digitalwrite(pinled2, high);
}
else{
digitalwrite(pinled2, low);
}
}
}
}
he conseguido el efecto de que se apague solo pero me falta que primero sea uno y luego otro ya que se encienden los dos la vez cuando le doy al botón en vez de primera vez que pulso uno y segunda vez otro.
alguien que me pueda ayudar?
este es el código:
const int pinled1 = 11; // declaración de variables
const int pinled2 = 5; // declaración de variables
const int pinbtn = 3; // declaración de variables
int pin;
int x = 0;
int encender = 0; // si esta encendido el led
int anterior = 0; //pulsación anterior
int estado = 0; //el estado actual del botón
void setup()
{
pinmode(pinled1, output);
pinmode(pinled2, output);
pinmode(pinbtn, input);
}
void loop()
{
{
estado = digitalread(pinbtn); //comprobamos el estado
if(estado == high)//comprobamos si el anterior estaba pulsado y el de ahora
{digitalwrite(pinled1, high);
}
else{
digitalwrite(pinled1, low);
}
{
estado = digitalread(pinbtn); //comprobamos el estado
if(estado == high)//comprobamos si el anterior estaba pulsado y el de ahora
{digitalwrite(pinled2, high);
}
else{
digitalwrite(pinled2, low);
}
}
}
}
hola,
te recomiendas que leas algo acerca del "rebote" en un pulsador porque medida que vayas poniendo mas codigo iras viendo como su intervencion te produce cosas raras que no esperas.
basicamente se trata de que al pulsar, (o al dejar de pulsar), el cambio de low high y visceversa no es unico. en medio se producen unos cuantos low-hihg-low-high-low, etc., aunque tu no los aprecies, pero tu codigo si lo detectara.
una vez dicho esto para lo que tu quieres puedes agregar:
una variable por ejemplo del tipo byte, donde inicialmente valga "1". luego en el if que preguntas si btn es high tambien preguntate si la variable es "1" y en caso afirmativo enciende el led 1 y guarda "2" en la variable.
luego otro if donde te preguntes si btn es high y tambien si la variable es "2" y en caso afirmativo enciende el led 2 y guarda "1" en la variable de manera que este lista para el proximo ciclo.
cuando btn sea low apaga ambos.
en resumen la nueva variable guardar el numero del siguiente led encender, y se encendera ese y solo ese.
te recomiendas que leas algo acerca del "rebote" en un pulsador porque medida que vayas poniendo mas codigo iras viendo como su intervencion te produce cosas raras que no esperas.
basicamente se trata de que al pulsar, (o al dejar de pulsar), el cambio de low high y visceversa no es unico. en medio se producen unos cuantos low-hihg-low-high-low, etc., aunque tu no los aprecies, pero tu codigo si lo detectara.
una vez dicho esto para lo que tu quieres puedes agregar:
una variable por ejemplo del tipo byte, donde inicialmente valga "1". luego en el if que preguntas si btn es high tambien preguntate si la variable es "1" y en caso afirmativo enciende el led 1 y guarda "2" en la variable.
luego otro if donde te preguntes si btn es high y tambien si la variable es "2" y en caso afirmativo enciende el led 2 y guarda "1" en la variable de manera que este lista para el proximo ciclo.
cuando btn sea low apaga ambos.
en resumen la nueva variable guardar el numero del siguiente led encender, y se encendera ese y solo ese.
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > 2led un botón
arduino
Comments
Post a Comment