簡體   English   中英

運行 python 腳本后將 rpi-gpio 引腳設置為高電平

[英]setting rpi-gpio pin on high after running a python script

我正在使用樹莓派和步進電機構建攝影測量設置。 python腳本運行良好,但在腳本運行后我將引腳設置為高電平時遇到問題。

步進驅動器有一個使能輸入,它用高輸入禁用電機,所以我用 pigpio 啟動時將引腳(gpio26)設置為高,這工作正常。 在運行 python 腳本時,引腳設置為低電平,因此步進器可以繼續,繼續后我想再次將引腳設置為高電平。

我嘗試了以下命令:

os.system('pigs w 26 1')和 subprocess.call( subprocess.call("pigs w 26 1", shell=True)

他們工作了一會兒,但退出腳本后,引腳再次設置為低電平。 就像腳本停止后命令被重置一樣。

我的錯在哪里?

謝謝

編輯:這是gpio相關代碼:

import os, sys
import subprocess
from time import sleep
from gpiozero import DigitalOutputDevice as stepper

def InitGPIO():
    try:
        global step_pul                     #pulse
        global step_en                      #enable
        step_pul=stepper(21)
        step_en=stepper(26)
        print ("GPIO initialisiert.")
    except:
        print ("Fehler bei der GPIO-Initialisierung.")
        
def motor_step():
    SPR=40000           #steps per rotation
    step_count = SPR
    delay = .000025
    for x in range(step_count):
        step_pul.on()
        sleep(delay)
        step_pul.off()
        sleep(delay)
        
InitGPIO()
step_en.off()

for i in range(1):
    #camTrigger(1)
    motor_step()   

#os.system('sudo -u root -S pigs w 26 1')
subprocess.call("pigs w 26 1", shell=True)

當我在 shell 中輸入pigs w 26 1時,它可以工作......

為了讓我的評論成為答案:

Gpiozero 僅重置它接觸的引腳,因此如果您不使用 gpiozero 初始化或接觸引腳 26(即用pigs w 26 0替換step_en.off()並且甚至不初始化 step_en),它也不應該重置別針:

import os
import time

import gpiozero

step_pul = gpiozero.DigitalOutputDevice(21)


def motor_step():
    SPR = 40000  # steps per rotation
    step_count = SPR
    delay = .000025
    for x in range(step_count):
        step_pul.on()
        time.sleep(delay)
        step_pul.off()
        time.sleep(delay)


# Enable motor
os.system("pigs w 26 0")

for i in range(1):
    # camTrigger(1)
    motor_step()

# Disable motor
os.system("pigs w 26 1")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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