TODOPIC
Otros Microcontroladores / Dispositivos programables => Arduino => Mensaje iniciado por: osmangutierrez en 01 de Febrero de 2022, 07:56:23
-
Buen día a todos.
Con su ayuda tengo el siguiente código:
void loop(){
int boton = digitalRead(sensor);
switch (estado) {
case 0x00: //espero al botón sea presionado
{
if (boton == 0) {
estado = 0x01;
}
break;
}
case 0x01: // activo el relay y espero x tiempo
{
digitalWrite(relay, HIGH); //enciende relay
digitalWrite(led, HIGH);
delay(70); //tiempo de encendido del relay
digitalWrite(relay, LOW); //apaga relay
digitalWrite(led, LOW);
estado = 0x02;
break;
}
default: // equivale a case 0x02
{
if (boton == 1) { //si el botón sigue presionado, espero hasta que lo suelte el usuario
estado = 0x00;
}
break;
}
}
}
Mi sensor en basicamente un pulador y quisiera que me ayuden con la eliminacion del efecto rebote de dicho pulsador, segun he visto es mejor usar millis, pero ya tengo un delay(70).
Les agradeceria bastante su ayuda.
Gracias...
-
Buen día a todos.
Con su ayuda tengo el siguiente código:
int sensor = 2;
int relay = 7;
int led = 9;
int estado = 0;
void setup(){
pinMode(sensor, INPUT_PULLUP); // entrada del sensor
pinMode(relay, OUTPUT); // salida de señal al relay
pinMode(led, OUTPUT); // salida de señal led indicador
}
void loop(){
int boton = digitalRead(sensor);
switch (estado) {
case 0x00: //espero al botón sea presionado
{
if (boton == 0) {
estado = 0x01;
}
break;
}
case 0x01: // activo el relay y espero x tiempo
{
digitalWrite(relay, HIGH); //enciende relay
digitalWrite(led, HIGH);
delay(70); //tiempo de encendido del relay
digitalWrite(relay, LOW); //apaga relay
digitalWrite(led, LOW);
estado = 0x02;
break;
}
default: // equivale a case 0x02
{
if (boton == 1) { //si el botón sigue presionado, espero hasta que lo suelte el usuario
estado = 0x00;
}
break;
}
}
}
Mi sensor en basicamente un pulador y quisiera que me ayuden con la eliminacion del efecto rebote de dicho pulsador, segun he visto es mejor usar millis, pero ya tengo un delay(70).
Les agradeceria bastante su ayuda.
Gracias...
¿Y pusiste los retardos que te recomendaron en el otro post que preguntaste o no funcionaron?
-
¿Y pusiste los retardos que te recomendaron en el otro post que preguntaste o no funcionaron?
Si puse un delay:
digitalWrite(relay, LOW); //apaga relay
digitalWrite(led, LOW);
delay(200); <---------------
estado = 0x02;
break;
Tambien coloque un capacitor de 0.1uF paralelo al pulsador, en el protoboard funciona bien 🙃, lo probaré en la práctica y les cuento.
-
Funciona bien con el delay, abrí el hilo para ver si se podia evitar los rebotes de otra manera, con millis, si se puede y es mejor, belleza
gracias a todos
-
Funciona bien con el delay, abrí el hilo para ver si se podia evitar los rebotes de otra manera, con millis, si se puede y es mejor, belleza
gracias a todos
Eso del delay era una sugerencia, como indiqué al inicio del otro hilo, no conozco Arduino, tu con mayor y mejor experiencia debes escoger la mejor manera de hacer un retardo.