3.7. Ieșire GPIO

machine.LED abstractizează cablarea indicatoarelor încorporate ale camerei. Comanda oricărei piese de hardware externe începe cu machine.Pin în mod ieșire – periphericul brut aflat la baza oricărei alte interacțiuni GPIO.

3.7.1. Comanda unui pin

Construiți un pin cu Pin.OUT pentru a-l face ieșire, apoi setați-i valoarea:

from machine import Pin

led = Pin("P0", Pin.OUT)
led.on()           # drive high (about 3.3 V)
led.off()          # drive low (about 0 V)

Trei moduri echivalente de a seta starea, toate pe machine.Pin:

Apelarea value() fără argumente citește starea curentă a pinului – ceea ce funcționează atât pentru intrări, cât și pentru ieșiri.

3.7.2. Comanda unui LED extern

Un LED roșu la 10 mA de la 3,3 V are nevoie de aproximativ 130 Ω în serie (pagina de electronică detaliază calculele). Conectați pinul P0 prin acel rezistor la anodul LED-ului, iar catodul LED-ului la masă. Un circuit intermitent:

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)

LED-ul se aprinde și se stinge o dată pe secundă. Curentul prin LED (și deci luminozitatea sa) este stabilit de rezistor; raportul on / off controlează doar cât de des se aprinde, nu cât de luminos apare cât timp este aprins.

Sfat

Constructorul acceptă o valoare inițială sub forma unui argument cu cuvânt-cheie: Pin("P0", Pin.OUT, value=0) configurează pinul ca ieșire care pornește în starea joasă. Fără aceasta, pinul preia pentru scurt timp orice stare implicită avea înainte de primul apel value().

3.7.3. Modul open-drain

Modul implicit Pin.OUT este push-pull: pinul comandă activ atât starea înaltă (spre alimentare), cât și cea joasă (spre masă). Uneori, acest lucru nu este potrivit. Folosiți Pin.OPEN_DRAIN atunci când pinul ar trebui fie să tragă linia în starea joasă, fie să o elibereze (lăsând-o flotantă):

pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off()       # actively drive low
pin.on()        # release; an external pull-up brings the line high

Principala utilizare este partajarea unui conductor. Mai multe ieșiri open-drain pot partaja o singură linie, deoarece niciuna dintre ele nu o comandă activ în starea înaltă. Oricare dintre ele poate trage linia în starea joasă; dacă toate o eliberează, un rezistor de pull-up extern aduce linia în starea înaltă. Aceasta este convenția de cablare din spatele magistralelor de comunicație partajate.

Atenționare

Open-drain nu este o soluție generală pentru comanda unui dispozitiv cu tensiune mai mare. Conectarea unui pin open-drain la un pull-up la 5 V este sigură pe un pin tolerant la 5 V, dar deteriorează unul netolerant prin diodele sale de protecție de pe cip de îndată ce pinul eliberează linia și aceasta urcă, flotant, la 5 V. Semnalizarea între tensiuni diferite necesită un convertor de nivel adecvat; consultați Conversia nivelurilor de tensiune pentru circuit.