[Python-es] Control de tiempo entre conmutaciones de 0 y 1
Ricardo Cárdenes
ricardo.cardenes en gmail.com
Jue Mar 23 19:07:09 EDT 2017
El programa duerme durante 0.01 segundo e imprime (en rápida sucesión) 0 1
0 1. Y repite esa secuencia durante 10 segundos. No parece ser lo que
Rolando quiere hacer.
Y da igual que estés leyendo el reloj hardware, -que depende de muchos
factores, como el sistema operativo, pero no tiene por qué,- el resto del
programa añade retrasos que posiblemente no sean deseables en una
aplicación como esta.
2017-03-22 21:39 GMT-10:00 Narcis Garcia <informatica en actiu.net>:
> No entiendo el porqué el primer código fuente propuesto no debe
> funcionar, ya que se supone que la lectura de tiempo es del reloj de
> hardware.
>
>
> El 23/03/17 a les 03:05, Ricardo Cárdenes ha escrit:
> > Hola Rolando,
> >
> > Creo que es lo mejor para lo que estás haciendo. Si lo quieres hacer
> > programable, busca algún microcontrolador. Un simple Arduino te basta
> > para una tarea como esta.
> >
> > 2017-03-22 5:42 GMT-10:00 Rolando Paz <flxpaz en gmail.com
> > <mailto:flxpaz en gmail.com>>:
> >
> > Hola a todos.
> >
> > En efecto Ricardo lo que necesito hacer es controlar los tiempos T0
> > y T1.
> >
> > La acción para pruebas fue imprimir los valores 0 y 1, sin embargo,
> > de acuerdo al hardware que estoy programando, estos valores 0 y 1
> > los debo ajustar dentro de un registro de software que habilita o
> > deshabilita la generación de una señal senoidal.
> >
> > Sin embargo, luego de buscar varias formas de hacerlo con software,
> > creo que lo más facil sera hacerlo con hardware. Con algun generador
> > de señales :)
> >
> >
> >
> >
> > El 21 de marzo de 2017, 22:30, Ricardo Cárdenes
> > <ricardo.cardenes en gmail.com <mailto:ricardo.cardenes en gmail.com>>
> > escribió:
> >
> > Según la presentación del problema, es un ciclo de: "imprimir
> > 0", "esperar T0 segundos", "imprimir 1", "esperar T1 segundos"
> >
> > 2017-03-21 10:07 GMT-10:00 Carlos Zuniga <carlos.zun en gmail.com
> > <mailto:carlos.zun en gmail.com>>:
> >
> > 2017-03-20 23:05 GMT-05:00 Rolando Paz <flxpaz en gmail.com
> > <mailto:flxpaz en gmail.com>>:
> > > Hola a todos de nuevo...
> > >
> > > Ahora regreso con un pequeño código:
> > >
> > > import time
> > >
> > > start_time = time.time()
> > > #tiempo total en segundos, como ejemplo 10.
> > > tiempo_total = 10
> > > #numero de conmutaciones generadas, como ejemplo 4.
> > > conmutaciones = 4
> > > for offset in range(tiempo_total):
> > > while (time.time() - start_time) < offset:
> > > time.sleep(0.01)
> > > #lo siguiente realiza una conmutacion entre 0 y 1.
> > > count = 0
> > > for i in range(conmutaciones):
> > > count = (count + 1) % 2
> > > print count
> > >
> > > Lo que hace este código es conmutar entre 0 y 1, tantas
> > veces como se defina
> > > en "conmutaciones", durante el tiempo establecido en
> > "tiempo_total".
> > >
> > > La salida es la siguiente.
> > >
> > > 0
> > > 1
> > > 0
> > > 1
> > >
> > > Estoy tratando de entender cómo usar este código para
> > controlar los tiempos
> > > que se definen en la imagen adjunta, es decir:
> > >
> > > T1 = tiempo durante el cual la conmutacion es 1
> > > T0 = tiempo durante el cual la conmutacion es 0
> > > Tiempo Total = tiempo total de las conmutaciones
> > >
> > > Agradecería cualquier comentario sobre como poder
> > controlar los tiempos
> > > anteriores.
> > >
> >
> > Tu intención es que espere un tiempo tras cada print de 0 o
> > 1? o que
> > imprima 0/1 4 veces y luego esperar?
> >
> > import time
> > from itertools import cycle
> > conmutador = cycle((0,1))
> >
> > tiempo_total = 10
> > conmutaciones = 4
> >
> > start = time.time()
> > end = start + tiempo_total
> > time_per_pulse = tiempo_total / conmutaciones
> > while end > time.time():
> > pulse_start = time.time()
> > print(next(conmutador))
> > pulse_end = time.time()
> > time.sleep(time_per_pulse - (pulse_end -
> pulse_start))
> >
> >
> > Ahora, time.sleep no es exacto, el tiempo va a ser
> > normalmente mayor
> > al que especificas, depende del sistema. También hay
> > threading.Event.wait que puede ser más exacto.
> >
> >
> > Saludos
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org <mailto:Python-es en python.org>
> > https://mail.python.org/mailman/listinfo/python-es
> > <https://mail.python.org/mailman/listinfo/python-es>
> >
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org <mailto:Python-es en python.org>
> > https://mail.python.org/mailman/listinfo/python-es
> > <https://mail.python.org/mailman/listinfo/python-es>
> >
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org <mailto:Python-es en python.org>
> > https://mail.python.org/mailman/listinfo/python-es
> > <https://mail.python.org/mailman/listinfo/python-es>
> >
> >
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > https://mail.python.org/mailman/listinfo/python-es
> >
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170323/7153e085/attachment.html>
Más información sobre la lista de distribución Python-es