2017-05-09 238 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.