SORTIDES DIGITALS
Configurar un Pin com a sortida ens permet definir el funcionament d'un actuador.
Per exemple, encendre o apagar un LED, posar en marxa o aturar un motor, activar/desactivar un so, ...
Recordeu que els senyals digitals només poden tenir 2 valors en un moment donat: 1 (True) o 0 (False).
Corresponen a dos nivells de tensió elèctrica, que en el cas de l'ESP32 són 0 i 3.3 V.
Tingueu en compte que els microcontroladors estan pensats per controlar, no per alimentar actuadors. L'ESP32 pot subministrar com a màxim 3.3V, si necessitem més potència, p.ex. per treballar amb motors, haurem d'utilitzar fonts externes d'alimentació.
PAUTES DE PROGRAMACIÓ
Per controlar una sortida digital cal:
-
Importar la classe Pin de la llibreria machine de MicroPython, que permet interactuar amb els pins
-
Crear un objecte Pin, definint el GPIO i configurant-lo com a sortida amb el mètode Pin.OUT
-
Definir el valor del senyal en aquest pin (1 o 0, True o False)
Som-hi, encenguem el LED integrat a la nostra placa:
En la nostra placa el LED integrat està connectat internament al pin 1. La lògica del seu funcionament és inversa: s'encén amb senyal 0 i s'apaga amb senyal 1.
![ThonnyFons.png](https://static.wixstatic.com/media/82ee8a_539d127ffa284512a8c2937647aa7975~mv2.png/v1/fill/w_980,h_25,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/ThonnyFons.png)
from machine import Pin # importa la classe Pin de la llibreria machine
led = Pin (1, Pin.OUT) # crea l'objecte Pin que he anomenat led al pin 1 configurat com a sortida
led.value (0) # defineix el valor del senyal (0 o 1)
Per fer l'encesa intermitent cal:
-
Importar la classe sleep de la llibreria time i establir pauses en l'execució del programa (en segons) per definir la freqüència de l'intermitència, amb el mètode sleep()
-
Definir un bucle que executi contínuament les instruccions que conté (encén, apaga)
![Blink](https://static.wixstatic.com/media/82ee8a_3e829d973fc54b7d84688aa8e15a76ea~mv2.gif)
-
També podem definir l'estat del LED amb led.on() i led.off()
-
Podem definir la pausa com una variable: pausa (segons) i fer sleep (pausa)
-
Podem definir el valor de l'estat del LED com una variable booleana: estat_led, assignar-li un valor inicial (1 o 0) i anar invertint periòdicament el seu valor (estat_led = not estat_led)
![tips.jpg](https://static.wixstatic.com/media/82ee8a_55df440413fb48c295bed31acb239a20~mv2.jpg/v1/crop/x_78,y_0,w_372,h_324/fill/w_124,h_108,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/tips.jpg)
![led-lamp-red-on-off.png](https://static.wixstatic.com/media/82ee8a_415961b195bd4737bc876eb89716bea1~mv2.png/v1/crop/x_0,y_53,w_259,h_212/fill/w_150,h_123,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/led-lamp-red-on-off.png)
CONNECTEM LEDS EXTERNS
Connectem un LED a una sortida digital de l'ESP32 (jo ho he fet al pin 13). Tingueu present:
-
No tots els GPIO de l'ESP32 poden actuar com a sortides:
Els GPIO 6, 7, 8, 9, 10 i 11 estan connectats a la memòria Flash
Els GPIO 34, 35, 36 i 39 només es poden utilitzar com a entrada.
-
Els LEDs tenen polaritat, ho hem de tenir en compte en fer les connexions per tal que el LED funcioni.
-
Per assegurar que el corrent que travessa el LED permeti obtenir una bona intensitat lluminosa, necessitarem reduir el corrent que ens proporciona l'ESP32 (3.3 V) connectant-hi en sèrie amb una resistència 👀 👉