mercredi 14 avril 2021

Count number of times a GPIO is high and configure labels

I am totally new to python and I want to create a simple interface in tkinter which will receive a total of 5 signals (through the same GPIO) indicating that the test to be performed was correct. At the moment I have managed to make a label change if the GPIO is HIGH or LOW, but I want each label to stay ON after receiving the corresponding signal and restarting at the end.

import tkinter as tk
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(16, GPIO.OUT)


class gpio(tk.Tk):
        def __init__(root, *args, **kwargs):
            tk.Tk.__init__(root, *args, **kwargs)
            root.title("Tester")
            root.geometry('600x600')
            
            
#TEST-1        
            root.labeltest1= tk.Label(root, text=("TEST #1"), bg="black", fg="white")
            root.labeltest1.grid(row = 4,column = 0)

            root.test1status = tk.Label(root, text = "")
            root.test1status.grid(row = 4,column = 2)

#TEST-2        
            root.labeltest2= tk.Label(root, text=("TEST #2"), bg="black", fg="white")
            root.labeltest2.grid(row = 5,column = 0)

            root.test2status = tk.Label(root, text = "")
            root.test2status.grid(row = 5,column = 2)

#TEST-3        
            root.labeltest3= tk.Label(root, text=("TEST #3"), bg="black", fg="white")
            root.labeltest3.grid(row = 6,column = 0)

            root.test3status = tk.Label(root, text = "")
            root.test3status.grid(row = 6,column = 2)
            
#TEST-4        
            root.labeltest4= tk.Label(root, text=("TEST #4"), bg="black", fg="white")
            root.labeltest4.grid(row = 7,column = 0)

            root.test4status = tk.Label(root, text = "")
            root.test4status.grid(row = 7,column = 2)
         
#TEST-5        
            root.labeltest5= tk.Label(root, text=("TEST #5"), bg="black", fg="white")
            root.labeltest5.grid(row = 8,column = 0)

            root.test5status = tk.Label(root, text = "")
            root.test5status.grid(row = 8,column = 2)
        
            
            root.update_gpio()
                    
        def update_gpio(root):
            rt1 = ('      TEST OK      ' if GPIO.input(2) else '      --     ')
            root.test1status.configure(text=rt1, bg ="yellow")
            root.after(200, root.update_gpio)
            
             
if __name__== "__main__":
    app = gpio()
    app.mainloop()


  

Aucun commentaire:

Enregistrer un commentaire