Formation PUB420 : Système domotique DIY, 2020 Scripts Python pour interagir avec le GPIO

10.5 Script pour réinitialiser toutes les broches programmables du GPIO


Si vous travaillez avec la bibliothèque RPi.GPIO, vous savez que la méthode GPIO.cleanup() réinitialise les ports que vous avez utilisés.

Il est donc bon de terminer vos scripts par un appel à cette méthode.

Mais si vous avez lancé un script qui allume une DEL sur une planche de maquettage et que ce script ne s'est pas terminé normalement, la DEL restera allumée.

Il vous faut une méthode pour réinitialiser les broches du GPIO.

Puisque GPIO.cleanup() ne travaille que sur les ports qui ont été utilisés dans le même script, je vous ai concocté un petit script qui utilise tous les ports afin de pouvoir bien les réinitialiser.

Python

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"""
Réinitialise toutes les broches programmables sur le Raspberry Pi
Paramètres : aucun
Montage : aucun
Auteur : Christiane Lagacé
Date : 16 septembre 2021
"""

import RPi.GPIO as GPIO

# Le but du script est justement de libérer les ports alors on ne veut pas voir le message :
# RuntimeWarning: This channel is already in use, continuing anywa
GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

print('Programme qui réinitialise toutes les broches programmables du Raspberry Pi')
broches = (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)

print('Sens actuel des broches (numérotation physique) :')

 

for i in broches:
    sens = GPIO.gpio_function(i)

    # On réassigne le même sens que la broche avait car le cleanup n'a d'effet que pour les broches affectées par le script
    if sens == 1:
        GPIO.setup(i, GPIO.IN)
    else:
        GPIO.setup(i, GPIO.OUT)

    print(str(i) + ': ' + ('IN' if sens else 'OUT'))

GPIO.cleanup()
print('Réinitialisation réalisée avec succès!')

 

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre