# # hello.VEML6040.py # # VEML6040 color sensor hello-world # hello.VEML6040.py serial_port # # Neil Gershenfeld 11/22/20 # # This work may be reproduced, modified, distributed, # performed, and displayed for any purpose, but must # acknowledge this project. Copyright is retained and # must be preserved. The work is provided as is; no # warranty is provided, and users accept all liability. # from tkinter import * import serial WINDOW = 600 # window size def idle(parent,canvas): Temp = green = blue = white = 0 # # read # ser.flush() while (1): reading = ser.readline() if (reading[0:6] == b'Temp: '): break Temp = float(reading[6:-1]) print(Temp) while (1): reading = ser.readline() if (reading[0:6] == b' Fan: '): break green = float(reading[6:-1]) if green == 1: status = "ON" elif green ==0: status ="OFF" print("status",status) canvas.itemconfigure("green",text="Fan: %s"%status) # # plot # sum = Temp+green+blue canvas.itemconfigure("Temp",text="Temp: %f"%Temp) x = float(.3*WINDOW + (.9-.3)*WINDOW*(Temp/sum)) canvas.coords('Temp1',.3*WINDOW,.05*WINDOW,x,.2*WINDOW) canvas.coords('Temp2',x,.05*WINDOW,.9*WINDOW,.2*WINDOW) # # update # canvas.update() parent.after_idle(idle,parent,canvas) # # check command line arguments # port = "COM5" # # open serial port # ser = serial.Serial(port,4800) ser.setDTR() # # set up GUI # root = Tk() root.title('hello.VEML6040.py (q to exit)') root.bind('q','exit') canvas = Canvas(root, width=WINDOW, height=.85*WINDOW, background='white') # canvas.create_text(.025*WINDOW,.15*WINDOW,text="1",font=("Helvetica", 22),tags="Temp",fill="#000000",anchor=SW) canvas.create_rectangle(.3*WINDOW,.05*WINDOW,.4*WINDOW,.2*WINDOW, tags='Temp1', fill='#b00000') canvas.create_rectangle(.4*WINDOW,.05*WINDOW,.9*WINDOW,.2*WINDOW, tags='Temp2', fill='#000000') canvas.create_text(.025*WINDOW,.35*WINDOW,text="1",font=("Helvetica", 22),tags="green",fill="#000000",anchor=SW) # canvas.pack() # # start idle loop # root.after(100,idle,root,canvas) root.mainloop()