Page 1 of 1

Ayuda en código de PYTHON para raspberry pi

Posted: Sat Jun 13, 2020 11:15 pm
by Roberto_Vilchez
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?

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)