我试图用pySerial控制一个步进电机,它连接到一个Arduino和CNC防护罩上。在
我通过向串行接口发送字符成功地运行了电机。现在我想选择旋转的次数,但是我不能。在
我用Tkinter作为我的图形用户界面。在
下面是我的Python代码:
import serial # Import Serial Library
from Tkinter import *
import time
usbport = 'COM3'
serial_begin_is = 9600
arduinoSerialData = serial.Serial(usbport, serial_begin_is) # Create Serial port object called arduinoSerialData
class GUI():
def __init__(self, root):
# type: (object) -> object
self.root = root
self.root.geometry("750x600")
self.root.title("motor")
self.CreateWidgets()
self.spin = 0
self.num = 1
def CreateWidgets(self):
self.number_of_spins = 1.0
self.spin_num = 0.0
self.speed_val = StringVar()
self.spin_num_entry = Entry(self.root, textvariable=self.spin_num)
self.spin_num_entry.place(x=200, y=20)
self.speed_num_chose = Label(self.root, text="enter spin numbers:")
self.speed_num_chose.place(x=50, y=20)
self.enter_spin_num = Button(self.root, text="enter", command=lambda: self.set())
self.enter_spin_num.place(x=200, y=45)
# self.speed_num_label = Label(self.root, text="spin num will be" +str(self.number_of_spins))
# self.speed_num_label.place(x=255, y=45)
self.speed_num_entry = Entry(self.root, textvariable=self.speed_val)
self.speed_num_label = Label(self.root, text="spin num will be: " + str(self.number_of_spins))
self.speed_num_label.place(x=255, y=45)
self.run_b = Button(self.root, text="run", command=lambda: self.run(self.number_of_spins))
self.run_b.place(x=255, y=85)
# self.run_b.config(state=DISABLED)
self.spin_num_B = Button(self.root, text="stop", command=lambda: self.send_stop())
self.spin_num_B.place(x=255, y=150)
self.quit_b = Button(self.root, text="quit", command=lambda: root.destroy())
self.quit_b.place(x=50, y=500)
def set(self):
self.number_of_spins = int(self.spin_num_entry.get())
self.speed_num_label.config(text="spin num will be: " + str(self.number_of_spins))
self.run_b.config(state=NORMAL)
def run(self, x):
x = int(x)
print x
# for i in xrange(x):
arduinoSerialData.write(x)
arduinoSerialData.write(b'r')
print "run"
def send_stop(self):
arduinoSerialData.write(b's')
print "stop"
root = Tk()
GUI(root)
root.mainloop()
这是我的Arduino代码:
^{pr2}$
好吧,我已经成功地开发了马达,还增加了一些其他功能,比如改变方向和控制速度。 我所面临的一个问题是,当用户改变速度时,电机会停止并应用速度,如果速度很高,会导致电机故障(速度是步进电机步数之间的延迟时间)。 这是密码,如果有人有索洛蒂安的速度控制,我会很高兴听到和学习:)
python代码:
Arduino代码:
^{pr2}$相关问题 更多 >
编程相关推荐