[Python-es] Control de tiempo entre conmutaciones de 0 y 1

Rolando Paz flxpaz en gmail.com
Mie Mar 22 11:42:50 EDT 2017


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>
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>:
>
>> 2017-03-20 23:05 GMT-05:00 Rolando Paz <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
>> 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/20170322/cd244fd8/attachment.html>


Más información sobre la lista de distribución Python-es