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