我试图同时移动两个舵机。但是我无法移动它。因为第2电机在完成第一次电机运动后移动,我命令tkinter秤。
我从多进程导入过程并尝试过。
当我将缩放命令从command=self.update
更改为command=Process(target=update, args()).start
时,它会给我NameError: name 'update' is not defined
。
我不知道应该怎么做,所以任何帮助都会受到赞赏。
我的工作(非同步)代码如下。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from Tkinter import *
import pigpio
import time
servos = 4-5 #GPIO number
pi = pigpio.pi()
horz = int(500)
vert = int(650)
pi.set_servo_pulsewidth(5, 500)
pi.set_servo_pulsewidth(4, 650)
try:
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
scale = Scale(frame, from_=2500, to=500,
orient=HORIZONTAL, command=self.update)
scale.grid(row=0)
scale = Scale(frame, from_=650, to=2000,
orient=VERTICAL, command=self.update2)
scale.grid(row=10)
def update(self, angle_yat):
global horz
a = int(angle_yat)
if horz <= a:
for i in range(horz, a, 20):
pi.set_servo_pulsewidth(5, i)
print "yatay ai: ", i
time.sleep(0.001)
horz = a
else:
for i in range(horz, a, -20):
pi.set_servo_pulsewidth(5, i)
print "yatay ai: ", i
time.sleep(0.001)
horz = a
def update2(self, angle):
global vert
b = int(angle)
if vert <= b:
for i in range(vert, b, 20):
pi.set_servo_pulsewidth(4, i)
print "yatay ai: ", i
time.sleep(0.001)
vert = b
else:
for i in range(vert, b, -20):
pi.set_servo_pulsewidth(4, i)
print "dikey ai: ", i
time.sleep(0.001)
vert = b
root = Tk()
root.wm_title('Servo Control')
app = App(root)
root.geometry("200x150+0+0")
root.mainloop()
except KeyboardInterrupt:
pi.set_servo_pulsewidth(servos, 0)
finally:
pi.stop()