簡體   English   中英

在 RASPBERRY PI 3B+ 中使用 PYTHON GUI 運行時停止步進電機(相同按鈕啟動和停止)的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM