# # hello.servo.RP2350.serial.tk.py # RP2350 servo serial hello-world GUI # # Neil Gershenfeld 8/9/26 # # 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. # import tkinter as tk import serial,sys,time # # get and open port # if len(sys.argv) != 2: print("command: ") sys.exit(1) port_name = sys.argv[1] ser = serial.Serial(port_name, 115200, write_timeout=0) # # global variables # last_send = 0 pending = None # # send change, with rate check to not overflow # def on_change(val): global last_send,pending msg = f"{slider1.get()} {slider2.get()}\n" if pending: root.after_cancel(pending) if time.time()-last_send > 0.05: ser.write(msg.encode()) last_send = time.time() else: pending = root.after(50,lambda:ser.write(msg.encode())) # # set up GUI # root = tk.Tk() root.title("'q' to quit") root.geometry("500x200") root.bind('',lambda event:root.destroy()) # slider1 = tk.Scale(root,label='servo 1',to=180,orient="horizontal",length=400,command=on_change) slider1.pack() # slider2 = tk.Scale(root,label='servo 2',to=180,orient="horizontal",length=400,command=on_change) slider2.pack() # root.mainloop()