Estamos en un proceso de migración de contenidos desde el sitio scratchbydsigno.com.ar hacia este nuevo blog.

La prioridad está centrada en los 3 Tutoriales que constituyen la base de dicho sitio, para luego seguir con el resto de los contenidos.

En caso de que encuentres algún error de visualización, o links rotos, puedes comunicármelo usando el formulario de contacto...

1er paso: diseñar el mecanismo (parte IV)

Es bueno confesarlo: durante buena parte de mi infancia fui víctima de una profunda fascinación por los relojes… tener la oportunidar de desarmarlos con (y casi siempre sin) la anuencia de mis padres, para poder así indagar dentro de las entrañas de tan fabulosas máquinas, era para mí una tentación irresistible.
También es bueno decirlo… corrían por entonces los tiempos en donde los relojes eran mecánicos y era posible concebir la posibilidad de palpar las razones de su funcionamiento, de llegar a conjeturar cómo esa suma de engranajes y piecitas de delicada manufactura podían ponerse de acuerdo para llegar a brindarnos nada más ni nada menos que "la hora".
Quizás en homenaje a ese mundo sin hermeticidad —hay que poner mucha fé para creer en la cuántica abstracción electrón-hueco de los semiconductores— es que ahora nuestro "diseño del mecanismo" se inspirará en aquellos sincrónicos dispositivos… me viene ahora también a la mente alguna lejana vista a "Tiempos Modernos" del inefable Chaplin… en fin.

Reloj mecánico | Base de Tiempo | Sincronismo

Por dónde empezar… ("Por el principio", diría alguno de esos graciosos que nunca faltan…).
El principio de funcionamiento de los relojes mecánicos —y aún es así en los modernos relojes electrónicos de cuarzo— necesita de la generación de una base de tiempo estable y precisa, de la cual se deriva un "tren de pulsos" responsable del movimiento de las agujas (o manecillas en la madre patria). Pero veamos que dice Wikipedia al respecto:
El antiguo reloj mecánico se basa en un pulsador que puede ser de 1 Hz o submúltiplo. Por lo general este pulsador era un mecanismo de escape mecánico en el cual la energía almacenada en un muelle era liberada de manera constante y lenta. El sonido de tic-tac del reloj corresponde a este sistema de escape que es el responsable de generar la base de tiempo del reloj y brinda movimiento al segundero; tanto el minutero como el horario son movidos mediante trenes de engranajes que transforman la relación del segundero en 1/60 para el minutero, y de éste en 1/60 para el horario. Fuente: Wikipedia.
¿Qué me interesa extraer de aquí?… la idea de que a partir de una misma base de tiempo se controla el movimiento de todo el sistema: una vez conseguido el pulso para el segundero el movimiento de las otras 2 agujas será dependiente del mismo. En los relojes mecánicos este sincronismo se consigue mediante el acoplamiento de engranajes de distinta cantidad de dientes, con lo que si el tren de pulsos tiene una frecuencia ligeramente distinta de 1 Hz —1 pulso por segundo— esto repercute en las tres agujas en igual proporción.
¿Cómo sería un reloj sin este tipo de sincronismo? En él podría darse el caso, por ejemplo, de que la aguja del segundero girase a menor velocidad de la esperable (1 giro por minuto) mientras que la del minutero lo hiciese a una velocidad mayor de 1 vuelta/hora: al cabo de un lapso de tiempo de 1 hora exacta hubiésemos contado una cantidad se segundos menor a los 3600 esperables, y una cantidad de minutos mayor a los 60 también esperables (también es cierto que nadie en su sano juicio se expondría a semejante experimento).

En nuestra simulación respetaremos esta idea del sincronismo, por lo que aunque nuestro reloj "atrase" en su funcionamiento —como es muy probable— igualmente van a sucederse 60 de nuestros segundos en 1 de nuestros minutos, y 60 de nuestros minutos en 1 de nuestras horas. Todo esto gracias a que vamos a usar misma base de tiempo, como ya verás…

No sé cuanto te quedó en claro de todo este palabrerío, pero la clave en lo que sigue es empezar a hacer girar al segundero.

La solución al segundo

Aunque te parezca increíble, en la solución que sigue vamos a hablar tanto de geometría como de pulsos o de base de tiempo.
Remitámonos a la meta nº 4 que dimos, la que debe ser cumplida por el segundero de nuestro reloj:
  • El movimiento de giro del segundero se efectuará mediante "saltos de posición" a razón de 1 vez por segundo.
Si queremos simular o virtualizar un reloj analógico mecánico deberemos lograr que se manifieste visualmente (al menos) el efecto del pulso —dejemos el tic-tac para aquellos programadores que remixen este proyecto—… ¿y a quién brinda primariamente movimiento este pulso? Al segundero (aplausos cerrados): el pulso se manifestará en cada salto angular que dé esta aguja.
La pregunta que aparece de inmediato es (tomar lápiz, papel y/o calculadora):
¿de cuántos grados debe ser este salto angular?

("… A ver: el segundero dá una vuelta completa en 60 segundos, quiere decir que dará 60 saltos angulares por vuelta [según la meta 4]… Bien, si una vuelta completa son 360º, entonces cada salto angular debe ser de 360º/60 = 6º… ¡soy un genio!").

Como ya estás viendo el script propuesto para el segundero, aprovecho y te voy contando que la base de tiempo se refleja en el bloque de espera de 1 segundo, y que la manera de crear un tren de pulsos es mediante el uso de un bucle por siempre.
Podés ir reabriendo el proyecto y agregando estos últimos cambios: creo que no debería sorprenderte lo bien que evolucionará nuestro segundero en su barrido  incesante del cuadrante. 

La tentación asincrónica

[Buen título para una novela estilo neo-gótica]. Ya sé que te estuve dando la lata con el tema del pulso, del sincronismo ("¡basta…!") , pero quizás llegó la ocasión de ver su importancia a la luz de lo siguiente…
Pero tal como ya decíamos: "la única verdad es la realidad" ("Aristóteles, Perón, un sólo corazón…" , grita la tribuna). Implementá temporariamente estos cambios en los scripts correspondientes: en ambos se sigue una línea de razonamiento similar a la que ya usamos para el segundero; ella se basa en hacer girar al respectivo objeto en el momento en que ¿idealmente? debería hacerlo (60 segundos = 1 minuto, 3600 segundos = 1 hora).
En "los papeles" esto parece tener bastante sentido, pero…

Una vez efectuados los cambios corré el programa, prestando especial atención a cual es la posición del segundero en los momentos en que el minutero indique que un nuevo minuto ha transcurrido (en el momento que gira 6º)… ¿El salto del minutero sucede siempre cuando ya han transcurrido exactamente los 60 segundos de nuestro reloj?
Dependiendo de la velocidad de tu computadora, de cuantos programas estén abiertos a la par de Scratch, etc., vas a ir notando que al pasar los minutos de funcionamiento es cada vez mayor el "adelanto" del minutero respecto del segundero —en realidad el minutero está bastante cerca de saltar a los 60 seg. reales, el que se "atrasa" es el segundero

Conclusión

Esta solución asincrónica puede que lleve a que el minutero muestre un valor más exacto del tiempo real transcurrido (y otro tanto vale para el análisis de la aguja horaria), pero se dejará de cumplir una de las metas básicas en el funcionamiento de cualquier reloj: presentar una relación exacta entre las 3 magnitudes temporales. ¡Y todo esto por no usar una misma base de tiempo!

Volver a las fuentes

Luego del rotundo fracaso del intento caratulado como "asincrónico" es más fácil revalorizar las primeras palabras presentadas al inicio de esta misma página: tener una fuente pulsante ÚNICA nos vá a permitir que las agujas trabajen en forma sincrónica.
Desde ya te lo anticipo: nuestro rejoj va a "atrasar" si toma como base de tiempo el movimiento del segundero, pero va a atrasar sincrónicamente, es decir, las 3 agujas van a ser afectadas pero sin perder su relación de movimiento.
Queda por delante analizar y generar una manera de simular el efecto físico que los engranajes proporcionan a un reloj mecánico… ¿cómo enganchar el giro de las manecillas del minuto y de la hora con la del segundero?. De esta cuestión tratará nuestra próxima página —la última de este 1er paso—. Te dejo como tarea que lo vayas pensando… no es tan difícil.
Última actualización: Marzo 2, 2014

No hay comentarios.:

Publicar un comentario

© Scratch CodeLab | D153ñ0 b454d0 3n l4 pl4n71ll4 SimpleRWD d3 Oloblogger