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:
pin.value(1)/pin.value(0)– forma explicită.
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.