繁体   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