Odstranění zákmitů tlačitek

zatím tam mám vytvořeno toto, ale stále mi to nepracuje úplně podle představ:

val = digitalRead(buttonPin3); delay(5); bounceCheck = digitalRead(buttonPin3); if(val == bounceCheck){ delay(5); bounceCheck2 = digitalRead(buttonPin3); if(bounceCheck == bounceCheck2){ if (val == HIGH) { buttonState3 = HIGH; } else { buttonState3 = LOW; } } }

tím tlačítkem si vlastně nastavuju hodnotu proměné pro switch, a stane se že přejedu přes nějakou hodnotu…