Ayuda en código de PYTHON para raspberry pi
Posted: Sat Jun 13, 2020 11:15 pm
Les pido ayuda en este código que uso para mostrar en un LCD valores generados aleatoriamente llamados BPM, TEMP y OXI.
Resulta que al estar dentro de la muestra de datos(las lineas donde se llaman a las funciona bpm(), temp(), oxig()) y presionar el GPIO 26 para regresar a la linea 88 de selección (o menú), este solo hace caso a veces, y tengo que presionar múltiples veces para que obedezca. Creo que es por el time.sleep(0.5), pero lo necesito porque quiero mostrar valores cada 0.5 segundos. ¿Como puedo corregir esto o mejorar mi código?
Resulta que al estar dentro de la muestra de datos(las lineas donde se llaman a las funciona bpm(), temp(), oxig()) y presionar el GPIO 26 para regresar a la linea 88 de selección (o menú), este solo hace caso a veces, y tengo que presionar múltiples veces para que obedezca. Creo que es por el time.sleep(0.5), pero lo necesito porque quiero mostrar valores cada 0.5 segundos. ¿Como puedo corregir esto o mejorar mi código?
Code: Select all
#Funciones
def bpm(): #Esta funcion se usa para la medicion del BPM.
randbpm=random.randint(60,90)
lcd.message(' Pulsos por minuto' +
'\n\n ' + str(randbpm))
def temp(): #Esta funcion define la temperatura del cuerpo.
randtemp=random.randint(30,38)
lcd.message('Temperatura corporal' +
'\n\n ' + str(randtemp))
def oxig(): #Esta funcion define el oxigeno en la sangre.
randoxi=random.randint(20,80)
lcd.message('Oxigeno en la sangre' +
'\n\n ' + str(randoxi))
def seleccion(a):
if a < 0:
a=2
lcd.clear()
lcd.message("Seleccione:\n\n <O2>")
selec=2
elif a == 0:
lcd.clear()
lcd.message("Seleccione:\n\n <BPM>")
selec=0
elif a == 1:
lcd.clear()
lcd.message("Seleccione:\n\n <TEMP>")
selec=1
elif a == 2:
lcd.clear()
lcd.message("Seleccione:\n\n <O2>")
selec=2
elif a > 2:
a=0
lcd.clear()
lcd.message("Seleccione:\n\n <BPM>")
selec=0
return [selec, a]
#Inicio del programa
lcd.clear()
lcd.message('\n Sistema\n Encendido')
time.sleep(2.5)
seleccion(a)
while True:
while apagar==0:
while True: #Seleccion de opciones.
if GPIO.input(19) == GPIO.HIGH:
a-=1
time.sleep(0.2)
seleccion(a)
[selec, a]=seleccion(a)
if GPIO.input(13) == GPIO.HIGH:
a+=1
time.sleep(0.2)
seleccion(a)
[selec, a]=seleccion(a)
if GPIO.input(26) == GPIO.HIGH:
menu=0
break
while menu==0: #Luego de seleccionar, mostrar valores.
if selec == 0: #Mostrar valores de BPM
lcd.clear()
lcd.message('\n Medicion de \n BPM...')
time.sleep(1.0)
while True:
if GPIO.input(26) == GPIO.HIGH: #Si GPIO26 presionado, volver a seleccion.
menu+=1
time.sleep(0.2)
seleccion(a)
time.sleep(0.2)
break
lcd.clear()
bpm()
time.sleep(0.5)
if selec == 1: #Mostrar valores de TEMPERATURA.
lcd.clear()
lcd.message('\n Medicion de \n Temperatura...')
time.sleep(1.0)
while True:
if GPIO.input(26) == GPIO.HIGH: #Si GPIO26 presionado, volver a seleccion.
menu+=1
time.sleep(0.2)
seleccion(a)
time.sleep(0.2)
break
lcd.clear()
temp()
time.sleep(0.5)
if selec == 2: ##Mostrar valores de OxIGENO.
lcd.clear()
lcd.message('\n Medicion de \n Oxigeno...')
time.sleep(1.0)
while True:
if GPIO.input(26) == GPIO.HIGH: #Si GPIO26 presionado, volver a seleccion.
menu+=1
time.sleep(0.2)
seleccion(a)
time.sleep(0.2)
break
lcd.clear()
oxig()
time.sleep(0.5)
if GPIO.input(6) == GPIO.HIGH: #Si GPIO 6 presionado, apagar sistema.
apagar+=1
lcd.message('\n Sistema\n Apagado')
time.sleep(1.5)
lcd.clear()
break
if GPIO.input(6)== GPIO.HIGH: #Si GPIO 6 presionado, encender sistema.
lcd.message('\n Sistema\n Encendido')
apagar-=1
time.sleep(2.5)