PROBLEMA: Leer una entrada digital

Hola, soy nuevo por aquí y querría pediros ayuda.
Tengo un anemómetro que quiero contar el numero de vueltas, cada vuelta es igual a un impulso. Tengo puesta una interrupción haciendo el funcionamiento bien, pero tengo el problema de que cuando completa una vuelta el anemómetro, en realidad no me cuenta una vuelta como debería, sino 3 o 4...según le de...
He comprobado con un osciloscopio si existía algún tipo de rebote... pero no es así y por eso os pido ayuda.

Imagen de como está hecha la conexión.

arduino-.png

Gracias.

Saludos

arduino-.png

Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Software por el momento.
Además cuando leas las normas del foro, al final encontrarás como se hace visible una imagen adjunta como en tu caso.Asi que edita tu post haciendo visible dicha imagen.

Buenas, puedes usar un sensor optico como

ESTE

yo lo uso para contar los movimientos de la bascula de un pluviometro y me ha resultado bien.

De todas maneras pense que tu imagen mostraba el dispositivo ademas deberías mostrar el programa y darnos informacion de cual es el tiempo mas pequeño entre mediciones, etc.

Saludos.

Hola si, te adjunto código y una imagen del anemómetro que internamente lleva un interruptor reed switch.

Gracias.

Saludos

int pin = 2;//PIN DONDE IRA LA INTERRUPCION
int a = 0; //contador de vueltas
unsigned long TiempoAhora = 0;
int periodo = 5000; //TIEMPO DE ESPERA

void setup() {
  Serial.begin(9600);


  
}

void loop() {

  //Serial.println("Interrupcion habilitada");

  attachInterrupt(digitalPinToInterrupt(pin), vueltas, RISING);///HABILITAMOS PIN DE INTERRUPCION
  
  TiempoAhora = millis();////INICIAMOS TEMPORIZADOR DURANTE UN SEGUNDO
  while (millis() < TiempoAhora + 1000) {

  }
  detachInterrupt(digitalPinToInterrupt(pin));///UNA VEZ PASADO UN SEGUNDO LA INTERRUPCION SE DESHABILITA

  Serial.println("Interrupcion deshabilitada");
  Serial.println("Numeo de impulsos: ");
  Serial.println(a);

  a = 0; //UNA VEZ MOSTRADOR EL NUMERO DE IMPULSOS, VOLVEMOS A PONER EL CONTADOR A 0.
  TiempoAhora = millis();

  while (millis() < TiempoAhora + periodo) {
    // espere [periodo] milisegundos

  }



}

void vueltas()
{

  a++; //INCREMENTAMOS VARIABLE  CADA VEZ QUE SE CIERRA EL INTERRUPTOR



}

Imagen del anemómetro: