3.7. Sortie GPIO¶
machine.LED masque le câblage des indicateurs intégrés de la caméra. Le pilotage de tout matériel externe commence par machine.Pin en mode sortie – le périphérique brut sous-jacent à toute autre interaction GPIO.
3.7.1. Piloter une broche¶
Construisez une broche avec Pin.OUT pour en faire une sortie, puis définissez sa valeur :
from machine import Pin
led = Pin("P0", Pin.OUT)
led.on() # drive high (about 3.3 V)
led.off() # drive low (about 0 V)
Trois façons équivalentes de définir l’état, toutes sur machine.Pin :
pin.value(1)/pin.value(0)– la forme explicite.
Appeler value() sans argument relit l’état actuel de la broche – ce qui fonctionne aussi bien pour les entrées que pour les sorties.
3.7.2. Piloter une LED externe¶
Une LED rouge à 10 mA depuis 3,3 V nécessite environ 130 Ω en série (la page d’électronique détaille le calcul). Câblez la broche P0 à travers cette résistance jusqu’à l’anode de la LED, et la cathode de la LED à la masse. Un clignotant :
import time
from machine import Pin
led = Pin("P0", Pin.OUT)
while True:
led.on()
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
La LED s’allume et s’éteint une fois par seconde. Le courant à travers la LED (et donc sa luminosité) est fixé par la résistance ; le rapport cyclique marche / arrêt ne contrôle que la fréquence à laquelle elle s’allume, pas la luminosité qu’elle présente lorsqu’elle est allumée.
Astuce
Le constructeur accepte une valeur initiale comme argument nommé : Pin("P0", Pin.OUT, value=0) configure la broche comme une sortie qui démarre à l’état bas. Sans cela, la broche prend brièvement l’état par défaut qui était le sien avant le premier appel à value().
3.7.3. Mode drain ouvert¶
Le mode par défaut Pin.OUT est push-pull : la broche pilote activement à la fois l’état haut (vers l’alimentation) et l’état bas (vers la masse). Parfois, ce n’est pas approprié. Optez pour Pin.OPEN_DRAIN lorsque la broche doit soit tirer la ligne vers le bas, soit la relâcher (la laisser flotter) :
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
L’usage principal est le partage d’un fil. Plusieurs sorties à drain ouvert peuvent partager une seule ligne, car aucune d’elles ne la pilote activement à l’état haut. N’importe laquelle peut tirer la ligne vers le bas ; si toutes la relâchent, une résistance de rappel externe ramène la ligne à l’état haut. C’est la convention de câblage qui sous-tend les bus de communication partagés.
Avertissement
Le drain ouvert n’est pas une solution générale pour piloter un périphérique à tension plus élevée. Connecter une broche à drain ouvert à une résistance de rappel à 5 V est sans danger sur une broche tolérante au 5 V, mais endommage une broche non tolérante par l’intermédiaire de ses diodes de protection intégrées dès que la broche se relâche et que la ligne remonte à 5 V. La signalisation entre tensions différentes nécessite un véritable adaptateur de niveau ; voir Adaptation de niveau pour le circuit.