una constante de 1 s basado en que será tan bueno como la señal que el chip Propeller obtiene de su
cristal oscilador externo.
Consejo:
En TimeKeepingGood.spin, dos líneas:
T += dT
waitcnt(T)
Pueden reemplazarse con esta línea:
waitcnt(T += dT)
Pruebe ambos objetos. Sin un osciloscopio no deberá observar una diferencia notable.
Agregue un retraso de .7 s al final de cada objeto (dentro de caca ciclo repeat). El objeto en la
izquierda ahora repetirá cada 1.7 s; el de la derecha deberá repetir aun cada 1 s.
En vez de un retraso imagine cuantas otras tareas puede realizar el chip Propeller en cada Segundo y
aun mantener una base de tiempo precisa!
Varios múltiplos de un tiempo dado pueden tener diferentes usos en diferentes aplicaciones. Por
ejemplo estos objetos tienen segundos como tiempo base, pero quizá estamos interesados en minutos
y horas. Hay 60 segundos en un minuto, 3,600 segundos en una hora y 86,400 segundos en un día.
Vamos a decir que la aplicación corre al conteo de
transcurrido un segundo es dividir
Modulus "
" regresa un recordatorio de problemas de división. Conforme pasa el segundo, el
//
resultado de
seconds // 60
tiempo Modulus regresa el sobrante. Por ejemplo, cuando
es 1. Cuando
60
seconds
Siendo este el caso tenemos una expresión que incrementa la variable
segundos transcurren:
if seconds // 60 == 0
minutes ++
Otro ejemplo con
hours
if seconds // 3600 == 0
hours ++
Por cada hora que pasa
anidado que expande el cálculo previo de
if seconds // 60 == 0
minutes ++
if minutes == 60
minutes := 0
El objeto TimeCounter mostrado abajo usa tiempo sincronizado y corre segundos totales con el
operador Modulus para rastreo de segundos, minutos, horas y días basado en el contador
valor de
se despliega en binario con los 6 circuitos LED. Estudie este programa
seconds
cuidadosamente porque contiene las claves para esta práctica que incrementa un tiempo basado en
presionar un botón por diferente duración. También tiene la clave para otro proyecto en el cual los
LEDs parpadean a diferente ritmo usando Cogs múltiples. (Cuando use Cogs múltiples en otras
prácticas será mucho más fácil!)
.
por 60 para ver si hay algún recordatorio. El operador
seconds
es 0 cuando
seconds
es 125 el resultado de
seconds // 60
:
se deberá poner en cero cada que llegue a 60. Un ejemplo de un
minutes
minutes
Kit Educativo de Practicas Propeller: Fundamentos · Página 65
4: Práctica básica de E/S y tiempo
. Una forma de determinar si ha
seconds
es 0, 60, 120, 180, y así sucesivamente. El resto del
es 121 el resultado de
seconds
es 5 y así sucesivamente.
:
seconds //
cada que otros 60
minutes
seconds
if
. El