![](/img/trans.png)
[英]IndexError on Raspberry pi 3b+ but not in pc Python
[英]Problem to stop a STEPPER MOTOR (same button start and stop) while running by using PYTHON GUI IN RASPBERRY PI 3B+
我創建了一個程序,通過在gui
中使用相同的按鈕來啟動和停止步進電機 Python 3. 電機已啟動但無法停止。 我正在使用 Raspberry Pi 3 B+ 和 TB6600 驅動器來控制這個電機。 我設置的范圍(800)表示 360 度旋轉 800 步。 幫我隨時停電機,旋轉800步之間
這是我的代碼
import tkinter as tk
from time import sleep
import RPi.GPIO as GPIO
from threading import Thread
DIR =16
STEP =20
CW =1
CCW =0
GPIO.setmode(GPIO.BCM)
GPIO.setup(DIR, GPIO.OUT)
GPIO.setup(STEP, GPIO.OUT)
GPIO.output(DIR,CW)
win=tk.Tk()
win.title("HELLO")
win.geometry("300x400")
def start1():
global running1
stop1()
btn1.config(text="Stop upward", command=stop1)
running1 = True
info_label["text"] = "Starting..."
thread1 = Thread(target=run1, daemon=True)
thread1.start()
def run1():
DIR =16
STEP =20
CW =1
CCW =0
GPIO.setmode(GPIO.BCM)
GPIO.setup(DIR, GPIO.OUT)
GPIO.setup(STEP, GPIO.OUT)
sleep(1)
GPIO.output(DIR,CW)
for x in range(int(800)):
GPIO.output(STEP,GPIO.HIGH)
sleep(.0050)
GPIO.output(STEP,GPIO.LOW)
sleep(.0050)
print('hi')
def stop1():
global running1
running1 = False
info_label["text"] = "Stopped"
btn1.config(text="Start upward", command=start1)
running1=False
info_label = tk.Label(win,text="stepper1 ",bg= "yellow")
btn1 = tk.Button(win, text="Start upward",height="5",width="10",bg="slateblue1", command=start1)
btn1.grid(row=0,column=0)
win.mainloop()
您可以在 Python 中將事件用於線程中的信號。
要以事件作為參數啟動您的線程:
stop_event = threading.Event()
threading.Thread(target=run1, args=[stop_event]).start()
run1 需要事件作為參數:
def run1(event):
要停止線程,請檢查您的 for 循環:
for x in range(int(800)):
if event.is_set():
break
GPIO.output(STEP,GPIO.HIGH)
…
發送您剛剛調用的事件
stop_event.set()
有關更多信息,請參見此處: https://docs.python.org/3/library/threading.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.