Добрый вечер!
Собственно по замыканию геркона мы считаем сколько прошло с предыдущего замыкания и делим длину окружности колеса на эту величину. Осталось описать условия прерывания.
Ниже предлагаю решение:
sensorState = digitalRead(gerkon);
if (sensorState == HIGH) {
if (lastState != HIGH) {
lastTime = thisTime;
thisTime = millis();
spinTime = thisTime - lastTime;
mySpeed = (wci / spinTime)*3.6 ; // wci — диаметр колеса, как правильно напомнили в комментариях, умноженный на пи.
if (mySpeed < 200) {Serial.print(mySpeed);Serial.print(" km/h");} // Периодически пролетают значения за 2000 км/ч, для этого ограничим максимальную скорость. (В данном примере шоссейный велосипед на станке развивает скорость до 100км/ч).
lastState = HIGH;
}
} else {
lastState = LOW;
}