Leggere chiusura contatto 15 volte ogni due secondi

Allora, facendo delle prove è venuto fuori che: il contatto si chiude due volte in più al numero selezionato.. quindi, se faccio l'uno il contatto si chiude tre volte, se faccio il due si chiude cinque volte e così via... ho provato questo codice

// Contatore

int pulsante =2;
int pulsante2 =4;
int val = 0; 
int val0 =0;
int contatore = 0;
int old_contatore = 0;

void setup() { 
    pinMode(pulsante, INPUT);
    pinMode(pulsante2, INPUT);
    Serial.begin(9600);
}

void loop(){
    if(digitalRead(pulsante)){
        contatore +=1;
    }

    if(digitalRead(pulsante2)){
        contatore -=1;
    }

    if ( contatore == 0 ) {
        Serial.println("pippo");
    }

    if(contatore > old_contatore){
        if ( contatore == 1) {
            Serial.println("2");
        } 
        if ( contatore == 2) {
            Serial.println ("3");
        }
        if ( contatore == 3) {
            Serial.println ("4");
        }
        if ( contatore == 4) {
            Serial.println ("5");
        }
        if ( contatore >=5) {
            val0= contatore + 1;
            Serial.println(val0);
        }
    }

    if(contatore < old_contatore) {
        val = abs(contatore);
        Serial.println(val);
    }

    old_contatore = contatore;    // <<==== !

    delay (200);    // debounce
}

Anche se credo che abbia qualcosa che a me non serve... preso da qui... Aprendo il monitor e facendo girare la rotella non conta... Solo se rallento la rotella col dito riesce a contare... Quindi credo che non riesca a contare per problemi di velocità... Cosa consigliate?!