Configurar un Pin com a sortida digital ens permet entregar un voltatge fix a una càrrega. Cal tenir en compte que els microcontroladors estan pensats per fer de "control" no per subministrar potència. Els microcontroladors amb què treballem aquest curs subministren 3.3V, si necessitem més voltatge o potència, p.ex. per treballar amb motors, haurem d'utilitzar fonts externes.
Les sortides digitals només poden tenir dos valors: 1 ó 0.
Per configurar els Pins com a sortida digital, hem d'importar la Classe Pin de la llibreria machine i posar el pin com a sortida (Pin.OUT) quan creem el nostre objecte (constructor). P.ex:
En general, els components sempre tenen, com a mínim, un cable per on els arriba el corrent i un cable per tancar el circuit (la connexió a terra, GND).
Un díode LED (Light-Emitting Diode) és un dispositiu de sortida que emet llum quan s'alimenta amb un corrent elèctric. Segur que tots en teniu a casa, els podeu trobar als electrodomèstics, com a la rentadora, en forma de pilot de senyalització i a les habitacions en forma de bombeta.
Els LED estan disponibles en una àmplia gamma de formes, colors i mides. Ha de triar-se bé el corrent que travessa el LED per a obtenir una bona intensitat lluminosa; el voltatge d'operació va des d'1,5 a 2,2 V aproximadament. Generalment, necessitarem reduir el corrent que ens proporciona el microcontrolador amb una resistència d'uns 470 Ohms.
Els LEDs tenen polaritat i l'hem de tenir en compte alhora de fer les connexions per tal que el LED funcioni.
A vegades ens pot ser molt útil poder canviar l'estat d'un pin (on-off / 1-0 / True-False) sense haver de programar totes les enceses i apagades, simplement canviant el seu estat.
Alguns microcontroladors tenen suport per al mètode .toggle() de la Classe Pin que permet canviar l'estat del pin sense conèixer quin és el seu estat actual, és a dir, si el valor del pin és 1 amb aquest mètode passarà a 0 i si és 0 passarà a 1.
Per als ESP32 i altres xips que no incorporen aquest mètode, podem realitzar els canvis d'estat a través de codi. Cal definir quin és l'estat inicial (valor booleà True o False), assignar-li el valor contrari (amb not) i passar-li aquest nou valor amb el mètode .value().
Ja n'anirem parlant al llarg del curs, però un dels principals problemes de treballar amb programes seqüencials amb esperes (sleep) és que es bloqueja l'execució del programa i, per tant, no podem executar dues tasques alhora.
Una de les possibles solucions és utilitzar un temporitzador que "dispari" un esdeveniment cada cert temps sense bloquejar l'execució de la resta de tasques. Això es fa amb la classe Timer (no confondre amb el mòdul time). Un cop creat l'objecte temporitzador el podrem inicialitzar .init() i dir-li cada quant temps (period) haurà de realitzar les tasques d'una determinada funció (callback).
Els brunzidors o buzzers, són un altre dispositiu de sortida. Mentre que un LED produeix llum, un brunzidor produeix un soroll: un brunzit. Dins de la carcassa de plàstic hi ha un parell de plaques metàl·liques; quan hi fem passar corrent aquestes plaques vibren les unes contra les altres i generen el so, brunzit.
A l’hora de fer les connexions cal tenir en compte la polaritat. El positiu sempre és el cable vermell o la pota llarga, depenent del model. No cal protegir-lo amb una resistència, la connexió pot ser directa.