Controlar el tiempo de funcionamiento de un motor dc y calcular dichos tiempos

Hola. He estado trabajando en un proyecto de un ascensor y quiero que funcione como tal. Dicho ascensor posee 2 pisos (en total seria planta baja, primer piso y segundo piso). La idea mía es que con 3 pulsadores pueda elegir a que piso subirá o bajara la cabina. Por ejemplo: si pulso el primer botón entonces la cabina subirá (si se encuentra en planta baja) al primer piso o bajará (si se encuentra en el segundo piso) al mismo; si pulso el segundo botón la cabina subirá al segundo piso (ya sea que se encuentre en planta baja o primer piso); y si pulso el tercer botón la cabina bajara a la planta baja (ya sea que se encuentre en cualquiera de los dos pisos). Por ahora pienso hacerlo en protoboard con leds, cada led representara un piso y el tiempo en que la cabina tarda en subir o bajar (suponiendo que para subir/bajar a un piso se tarda 1 segundo). He visto en sitios que se puede utilizar un sensor de ultrasonido (creo yo) para medir la altura a la que se encuentra la cabina. Pero yo pensaba hacerlo con calculos, es decir calculando el tiempo en que la cabina sube a el piso indicado, y estableciendo condiciones(if). Por ejemplo: el boton 1 hara que la cabina suba al primer piso en 1 segundo si es que se encuentra en planta baja desde un principio (encendera el led por 1 segundo), el boton 2 hara que la cabina suba al segundo piso en 2 segundos cumpliendo la condicion anterior (si se encuentra en planta baja). Si la cabina no se encuentra en planta baja y se encuentra en el primer piso entonces subira al segundo en 1 segundo y asi con los demas botones. Pensaba ademas utilizar la instruccion millis para "medir" el tiempo que se demora la cabina en subir al piso indicado. Y una vez que ya tenga el tiempo "medido" entonces empezar a escribir las condiciones Ahora mismo soy nuevo en cuanto a realizar calculos en arduino pero creo que no es tan complicado realizar las acciones anteriormente mencionadas. Desde ya agradezco sus ayudas

Puedes hacer lo que dices, si claro, pero imagina un ascensor.. es un dispositivo electromecánico, y por ende tiene elementos que sufren desgaste. Ahora imagina que un dia te falla un switch y en lugar de parar en el piso que quieres lo hace en el siguiente donde si funciona, que pasará con tus tiempos? Todo sistema que involucra personas debe tener redundancias o sea sistemas dobles. Un ejemplo seria tu sensor ultrasonico. Ahora un sensor ultrasónico mide maximo 4.5 mts asi que tampoco te sirve. Podrias usar soble par de switches o un enconder que mida el desplazamiento del motor... tienes muchas opciones. Tambien pueden ser sensores hall en cada piso, u opticos.

Resumiendo controlar un ascensor por tiempo no me parece. Yo usaría switches que te den una aproximación al piso y de ahi bajo velocidad y lo acerco lentamente. Si tuvieras variador de velocidad eso es mas facil pero en general los motores de ascensor son de doble velocidad. una de translado y otra de aproximación.