« GPIO-PI » : différence entre les versions
Aller à la navigation
Aller à la recherche
Page créée avec « = Utilisation des GPIO avec Python et libgpiod 2.x = Cette page décrit l'utilisation des GPIO d'un Raspberry Pi sous Debian 13 / Raspberry Pi OS avec la bibliothèque '''libgpiod 2.x'''. == Prérequis == Vérifier la version installée : <syntaxhighlight lang="bash"> python3 -c "import gpiod; print(gpiod.__version__)" </syntaxhighlight> Exemple : <syntaxhighlight lang="text"> 2.2.0 </syntaxhighlight> Les exemples de cette page sont compatibles avec libgpi... » |
m relais |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 18 : | Ligne 18 : | ||
Les exemples de cette page sont compatibles avec libgpiod 2.x. | Les exemples de cette page sont compatibles avec libgpiod 2.x. | ||
== Déclaration des GPIO == | == Déclaration des GPIO == | ||
| Ligne 41 : | Ligne 28 : | ||
consumer="relays", | consumer="relays", | ||
config={ | config={ | ||
16: gpiod.LineSettings( | |||
direction=gpiod.line.Direction.INPUT | |||
), | |||
20: gpiod.LineSettings( | 20: gpiod.LineSettings( | ||
direction=gpiod.line.Direction.OUTPUT | direction=gpiod.line.Direction.OUTPUT | ||
| Ligne 49 : | Ligne 39 : | ||
} | } | ||
) | ) | ||
</syntaxhighlight> | </syntaxhighlight>la ligne 16 en entrée et les lignes 20 et 21 en sortie. | ||
== | == Utilisation de relais == | ||
Une des utilisation est le pilotage de relais. Qui, eux même commanderont, ce que l'on voudra. | |||
[[Fichier:20260722 223533.jpg|vignette|248x248px|Exemple de carte avec deux relais]] | |||
=== Activation d'un relais === | |||
Activation du relais connecté au GPIO20 : | Activation du relais connecté au GPIO20 : | ||
| Ligne 65 : | Ligne 58 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Désactivation d'un relais == | === Désactivation d'un relais === | ||
Désactivation du relais connecté au GPIO20 : | Désactivation du relais connecté au GPIO20 : | ||
| Ligne 79 : | Ligne 71 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Programme complet == | === Programme complet === | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||
| Ligne 111 : | Ligne 102 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Fonction utilitaire == | === Fonction utilitaire pour les relais. === | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def relay(req, gpio, state): | def relay(req, gpio, state): | ||
| Ligne 131 : | Ligne 121 : | ||
relay(req, 21, True) # ON | relay(req, 21, True) # ON | ||
relay(req, 21, False) # OFF | relay(req, 21, False) # OFF | ||
</syntaxhighlight | </syntaxhighlight> | ||
Dernière version du 22 juillet 2026 à 20:43
Utilisation des GPIO avec Python et libgpiod 2.x
Cette page décrit l'utilisation des GPIO d'un Raspberry Pi sous Debian 13 / Raspberry Pi OS avec la bibliothèque libgpiod 2.x.
Prérequis
Vérifier la version installée :
python3 -c "import gpiod; print(gpiod.__version__)"
Exemple :
2.2.0
Les exemples de cette page sont compatibles avec libgpiod 2.x.
Déclaration des GPIO
import gpiod
req = gpiod.request_lines(
"/dev/gpiochip0",
consumer="relays",
config={
16: gpiod.LineSettings(
direction=gpiod.line.Direction.INPUT
),
20: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
21: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
}
)
la ligne 16 en entrée et les lignes 20 et 21 en sortie.
Utilisation de relais
Une des utilisation est le pilotage de relais. Qui, eux même commanderont, ce que l'on voudra.

Activation d'un relais
Activation du relais connecté au GPIO20 :
req.set_value(20, gpiod.line.Value.ACTIVE)
Activation du relais connecté au GPIO21 :
req.set_value(21, gpiod.line.Value.ACTIVE)
Désactivation d'un relais
Désactivation du relais connecté au GPIO20 :
req.set_value(20, gpiod.line.Value.INACTIVE)
Désactivation du relais connecté au GPIO21 :
req.set_value(21, gpiod.line.Value.INACTIVE)
Programme complet
#!/usr/bin/env python3
import gpiod
import time
with gpiod.request_lines(
"/dev/gpiochip0",
consumer="relays",
config={
20: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
21: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
}
) as req:
# activation des deux relais
req.set_value(20, gpiod.line.Value.ACTIVE)
req.set_value(21, gpiod.line.Value.ACTIVE)
time.sleep(5)
# arrêt des deux relais
req.set_value(20, gpiod.line.Value.INACTIVE)
req.set_value(21, gpiod.line.Value.INACTIVE)
Fonction utilitaire pour les relais.
def relay(req, gpio, state):
req.set_value(
gpio,
gpiod.line.Value.ACTIVE
if state
else gpiod.line.Value.INACTIVE
)
Utilisation :
relay(req, 20, True) # ON
relay(req, 20, False) # OFF
relay(req, 21, True) # ON
relay(req, 21, False) # OFF