[ Foro de Python ]

contador de pulsos por minuto en python

08-Mar-2016 04:04
Invitado (angy)
1 Respuestas

hola, sucede que necesito un contador de pulsos por minuto en mi raspberry, actualmente logre el contador y el tiempo pero el programa que muestro me cuenta los pulsos hasta que presiono enter y me dice el tiempo en el que transcurrieron estos pulsos, es decir si tengo 1500 pulsos por minuto y presiono enter a los 3000 pulsos me marcara en tiempo 2 minutos, pero yo necesito que cada minuto me cuente cuantos pulsos se han recibido por ejemplo:
min 1 = 1500 pulsos
min 2 = 1500 pulsos

y así continuamente ya que estará conectada a un sensor y un cambio en la frecuencia de pulsos me indicara que hay algún evento  dejo el código y lo que me imprime saludos.


#!/usr/bin/env python2.7

import RPi.GPIO as GPIO
import sys
import time
start = time.time()
GPIO.setmode(GPIO.BCM)

GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

contador = 0

def my_callback(channel):
    global contador
    contador = contador +1
    import time
    import sys
    sys.stdout.write('%d' % contador)
    sys.stdout.flush()
    i=1
    while i<=len(str(contador)):
        sys.stdout.write('\b')
        i = i+1;

GPIO.add_event_detect(23, GPIO.RISING, callback=my_callback)

raw_input("Press Enter Para salir del programa \n")
GPIO.cleanup()

end = time.time()

time_elapsed = end - start
time_in_miliseconds = time_elapsed * 1000
time_in_min =  time_elapsed / 60

print '                 tiempo transcurrido:\t{} s'.format(time_elapsed)
#print '                time elapsed:\t{} ms'.format(time_in_miliseconds)
print '                 tiempo transcurrido:\t{} min'.format(time_in_min)





///////lo que se imprime
Press Enter Para salir del programa
1509                      
                       tiempo transcurrido:    60.5103771687 s
                tiempo transcurrido:   1.00850628614 min





13-Mar-2016 01:08
Nacho Cabanes (+84)

Es que entonces no deberías hacer el "raw_input" y terminar el programa, sino quedarte dentro del cuerpo del programa, por ejemplo repitiendo con una orden "while".

Para que no se coma toda la capacidad de proceso del sistema, puedes usar "sleep" para hacer una pausa de 60 segundos entre una escritura y otra, algo como


import time 
(...)
while True:
    print ("este minuto...")
    time.sleep(60)  # Pausa de segundo segundos


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)