Autor Tema: Eliminar rebote de pulsador  (Leído 2763 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado osmangutierrez

  • PIC10
  • *
  • Mensajes: 15
Eliminar rebote de pulsador
« en: 01 de Febrero de 2022, 07:56:23 »
Buen día a todos.
Con su ayuda tengo el siguiente código:

Código: [Seleccionar]
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...
« Última modificación: 02 de Febrero de 2022, 05:28:20 por osmangutierrez »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Eliminar rebote de pulsador
« Respuesta #1 en: 01 de Febrero de 2022, 10:12:45 »
Buen día a todos.
Con su ayuda tengo el siguiente código:

Código: [Seleccionar]
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?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado osmangutierrez

  • PIC10
  • *
  • Mensajes: 15
Re:Eliminar rebote de pulsador
« Respuesta #2 en: 01 de Febrero de 2022, 13:43:18 »

¿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.
« Última modificación: 02 de Febrero de 2022, 06:08:40 por osmangutierrez »

Desconectado osmangutierrez

  • PIC10
  • *
  • Mensajes: 15
Re:Eliminar rebote de pulsador
« Respuesta #3 en: 02 de Febrero de 2022, 05:10:46 »
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
« Última modificación: 02 de Febrero de 2022, 06:07:53 por osmangutierrez »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Eliminar rebote de pulsador
« Respuesta #4 en: 02 de Febrero de 2022, 11:53:54 »
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.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32


 

anything