#!/usr/bin/python
import RPi.GPIO as GPIO
def getPinFunctionName(pin):
functions = {GPIO.IN:‹ Input ›,
. GPIO.OUT:‹ Output ›,
. GPIO.I2C:‹ I2C ›,
. GPIO.SPI:‹ SPI ›,
. GPIO.HARD_PWM:‹ HARD_PWM ›,
. GPIO.SERIAL:‹ Serial ›,
. GPIO.UNKNOWN:‹ Unknown ›}
return functions[GPIO.gpio_function(pin)]
gpio = (3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,29,31,32,33,35,36,37,38,40)
GPIO.setmode(GPIO.BOARD)
for pin in gpio:
. try:
… if getPinFunctionName(pin) == ‹ Input ›:
… print(« GPIO %s is an %s etat %s » % (pin,getPinFunctionName(pin),GPIO.input(pin)))
… else:
… print(« GPIO %s is an %s » % (pin,getPinFunctionName(pin)))
. except ValueError:
… pass
et a l’exécution il me dit :
RuntimeError: You must setup() the GPIO channel first
et si je ne fais pas le GPIO.input() il me donne bien le status (input ou output ou unknown)
existe t il une autre fonction qui me permettrais d’avoir l’état du pin ( 0, 1) sans redéfinir le status à la valeur que récupère GPIO.gpio_function() à part passer par un GPIO read ? ( le help(GPIO) n’est pas très bavard ! )