【问题标题】:Error while connecting Raspberry Pi to GPIO7 pin将 Raspberry Pi 连接到 GPIO7 引脚时出错
【发布时间】:2017-05-09 08:59:40
【问题描述】:

我的 Raspberry Pi 有问题,它连接在 GPIO7 引脚的继电器盒中。我已经用Gpio.boardgpio.bcm 进行了测试,但没有成功:

#This program connects with gpio7
#setup pins
#GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
#GPIO.setup(7, GPIO.OUT)#mode Board
while True:
    GPIO.output(4, GPIO.HIGH)
    #GPIO.output(7, GPIO.HIGH)#mode Board
    time.sleep(5)
    GPIO.output(4, GPIO.LOW)
    #GPIO.output(7, GPIO.LOW) #mode Board
    GPIO.cleanup()  #devuelve los pines a su estado inicial

exit() 

这是一方面和另一方面的错误:

Traceback(最近的调用 最后):文件“/home/pi/Desktop/RelayPrograms/5_7OnSleepOff.py”,第 13 行, 在 GPIO.output(4, GPIO.HIGH)RuntimeError: Please set pin 使用 GPIO.setmode(GPIO.BOARD) 或 GPIO.setmode(GPIO.BCM)

我错过了什么吗?

【问题讨论】:

标签: python raspberry-pi3 relay


【解决方案1】:

您在循环之前使用GPIO.setmode(GPIO.BCM) 设置引脚编号模式。第一个循环将按预期工作,但GPIO.cleanup() 将撤消您的setmode,您将在第二个循环中收到错误。

所以,把清理放在最后。

GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
#GPIO.setup(7, GPIO.OUT)#mode Board
while True:
    GPIO.output(4, GPIO.HIGH)
    #GPIO.output(7, GPIO.HIGH)#mode Board
    time.sleep(5)
    GPIO.output(4, GPIO.LOW)
    time.sleep(5) 
    #GPIO.output(7, GPIO.LOW) #mode Board

GPIO.cleanup()  #devuelve los pines a su estado inicial
exit() 

【讨论】:

  • 这个可以看得很清楚,如果在循环内部使用了print语句,就会成功运行一次
  • 感谢您的贡献,但它不起作用,它不会跳过任何错误,但它不会按照我的意愿每 5 分钟熄灭一次,也不会清除。
  • @Meirin.f 您还需要在GPIO.output(4, GPIO.LOW) 之后添加sleep,否则它会在下一个循环中立即再次变为高电平,而您将永远看不到它...我刚刚添加了它在我的回答中。
【解决方案2】:

这是我的问题的解决方案:

import os
import subprocess
import sys
import warnings
import time
from threading import Timer
import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False) ##Impido warning en ejecución

def blink4():#pin 7
        print ("Ejecucion iniciada...")
        time.sleep(5) ## Esperamos 1 segundo
        iteracion = 0
        while iteracion < 2: ## Segundos que durara la funcion
                GPIO.setup(4, GPIO.OUT) ## Enciendo
                print ("Encendido")
                time.sleep(5) ## Esperamos 1 segundo
                GPIO.cleanup(4) ## Apago 
                print ("Apagado")
                time.sleep(5) ## Esperamos 1 segundo
                iteracion = iteracion + 2 ## Sumo 2 porque he hecho dos parpade$
        print ("Ejecucion finalizada")

def blink23(): #pin 16
        print ("Ejecucion iniciada...")
        time.sleep(5) ## Esperamos 1 segundo
        iteracion = 0
        while iteracion < 2: ## Segundos que durara la funcion
                GPIO.setup(23, GPIO.OUT) ## Enciendo 
                print ("Encendido")
                time.sleep(5) ## Esperamos 1 segundo
                GPIO.cleanup(23) ## Apago 
                print ("Apagado")
                time.sleep(5) ## Esperamos 1 segundo
                iteracion = iteracion + 2 ## Sumo 2 porque he hecho dos parpade$
        print ("Ejecucion finalizada")

blink4()
blink23()
GPIO.cleanup() ## Hago una limpieza de los GPIO

现在可以了,谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多