2017-05-09 241 views
0

我的Raspbeery Pi有问题,它连接在GPIO7引脚的继电器盒中。我曾与Gpio.boardgpio.bcm测试不使用此代码的成功:将Raspberry Pi连接到GPIO7引脚时出错

#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 (most recent call last):File"/home/pi/Desktop/RelayPrograms/5_7OnSleepOff.py", line 13, in GPIO.output(4, GPIO.HIGH)RuntimeError: Please set pin numbering mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

我缺少的东西?

+0

您也可以尝试在[为Raspberri丕专用堆栈交易所网站(https://raspberrypi.stackexchange.com ) – imTachu

+0

感谢您的贡献Lorena也将在此社区中沟通我的问题 –

回答

2

您可以在循环前用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() 
+0

这可以清楚地看到,如果在循环内部使用打印语句,它将成功运行一次 –

+0

感谢您的贡献但它不起作用,它不会跳过任何错误,但它不会随着时间的推移而停止,并且每隔5分钟就会按我的意愿进行操作,并且不会清除。 –

+0

@ Meirin.f您还需要在'GPIO.output(4,GPIO.LOW)'之后使用'sleep',否则它会在下一个循环中立即再次变为高电平,您将永远无法看到它......我只是添加它在我的答案。 –

0

这是解决我的问题:

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 

It works right now, thank you all.