control de RPM con teclado matricial

Con el teclado ingresas tu setpoint o sea a que RPM quieres que el control del motor mantenga.
Debes leer las RPM con algún método.
Alternativas hay muchas, te sugiero dos:

  1. Rueda dentada y usas un sensor de efecto hall para contar dientes y obtienes RPM.
  2. Encoder. Rueda con ranuras y optoacoplador. Hay muchas variantes de esta opción

Esto indica que estas usando un MEGA como mínimo y en su INT2 tienes un sensor de RPM.

void rpm_fun() {
   detachInterrupt(2); 
   rpmcount++; //update rpmcount
   attachInterrupt(2, rpm_fun, FALLING);
 }

Es asi?