ENTRADES DIGITALS
![Boto1.png](https://static.wixstatic.com/media/82ee8a_c973583478ed44daa2d3c66754ba9ad8~mv2.png/v1/fill/w_200,h_162,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/Boto1.png)
Els sensors digitals proporcionen informació al microcontrolador en forma de senyals digitals d'entrada (0, False quan estan en repós, i 1, True quan estan activats), que en el cas de l'ESP32 corresponen a dos valors de tensió: 0 i 3.3V.
Tots els GPIO de l'ESP32 es poden utilitzar com a entrades digitals, excepte els 6, 7, 8, 9, 10 i 11 (connectats a la memòria flash). Veure Pinout
EL POLSADOR
El sensor digital més senzill és el polsador. Aquest és un dispositiu mecànic amb un sistema de retorn automàtic.
Quan s'exerceix pressió sobre ell, canvia d'estat. Si deixem d'exercir aquesta pressió, el polsador tornarà a l'estat de repós de manera automàtica.
Nosaltres utilitzarem un mòdul polsador KY-004. Feu atenció a la serigrafia dels pins, perquè indica com s'ha de connectar a l'ESP32.
L'exemple utilitza un botó connectat al pin 15 (i un LED connectat al pin 13)
![Push-Button-Diagram-Pressed-vs-Not-Pressed.png](https://static.wixstatic.com/media/82ee8a_e74191a0f0544f61b8d3c3a11543b961~mv2.png/v1/crop/x_0,y_0,w_2448,h_972/fill/w_300,h_119,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/Push-Button-Diagram-Pressed-vs-Not-Pressed.png)
3.3V
GPIO
GND
![Boto2.png](https://static.wixstatic.com/media/82ee8a_a5055a033fa0447cb8fe9473a85a8fcc~mv2.png/v1/crop/x_4,y_0,w_811,h_470/fill/w_202,h_117,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/Boto2.png)
PAUTES DE PROGRAMACIÓ
Per llegir una entrada digital cal:
-
Importar la classe Pin de la llibreria (mòdul) machine de MicroPython, que permet interactuar amb els pins
-
Crear un objecte Pin, definint el GPIO i configurant-lo com a entrada amb el mètode Pin.IN
-
Desar la lectura del pin en una variable i definir les accions en funció del valor d'aquesta variable
Som-hi, llegim l'estat d'un polsador connectat a un pin digital (pin 13):
Cal tenir en compte que la majoria de polsadors reboten: quan els premem i els deixem anar, les parts mecàniques oscil·len i produeixen diverses puntes de pujada i baixada. Per tant, hauriem de separar les lectures com a mínim 200 ms.
![debounce-transition.png](https://static.wixstatic.com/media/82ee8a_312096e92e0247918c5f9d644895b9bc~mv2.png/v1/fill/w_245,h_148,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/debounce-transition.png)
![ThonnyFons.png](https://static.wixstatic.com/media/82ee8a_539d127ffa284512a8c2937647aa7975~mv2.png/v1/fill/w_961,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
from time import sleep # importa la classe sleep de la llibreria time
boto = Pin (13, Pin.IN) # crea l'objecte Pin que he anomenat boto al pin 13 configurat com a entrada
while True:
lectura = boto.value () # desa el valor de l'entrada digital en la variable lectura
print (lectura) # mostra a la consola el valor de la variable
sleep (0.2) # pausa mínima per evitar els rebots