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