Acabamos de ver que las 11 GPIOS pueden actuar como entradas o como salidas de nuestro microcontrolador. Cuando encendemos el ESP8266, todas las patillas se configuran como entradas. Si necesitamos usar alguna como salida, debemos indicárselo así mediante una instrucción de Annex. Y para mayor claridad en nuestro programa, es costumbre hacer lo mismo cuando la vayamos a usar como entrada.
PIN.MODE 2, OUTPUT ' La GPIO número 2 será una salida
PIN.MODE 5, INPUT ' La GPIO número 5 actuará como entrada
PIN.MODE 4, INPUT, PULLUP ' La GPIO número 4 funcionará como entrada pullup
Estas ya son instrucciones de propias de Annex, que podrían formar parte de un programa.
Fíjese en que las he escrito en mayúsculas. Podría haberlo hecho en minúsculas o en una mezcla de ambas. Annex no distingue. En realidad, depende del gusto de cada uno y de lo que nos parezca más legible al listar nuestro programa. Se suele usar la mezcla con nombres largos de variables. Ejemplo, diaSemana = 7, nombreMes$ = "Enero", es más claro que si estuviese todo en mayúsculas o minúsculas.
Note también que he usado una comilla simple o apóstrofo y luego un texto. Cuando encuentra una comilla simple, Annex sabe que ha llegado al final de la línea de instrucciones y que lo que sigue son comentarios. Extremadamente útil para que otras personas puedan interpretar nuestro código y para que nosotros mismos nos acordemos, al cabo de cierto tiempo, de lo que queríamos decir.
Y observe la tercera línea. En la página anterior vimos que internamente la GPIO, cuando actúa como entrada, tiene un conmutador que conecta o desconecta una resistencia al positivo de la alimentación según le digamos. Si la desconectamos, la patilla queda al aire, a expensas de interferencias eléctricas. Así pues, cuando use una GPIO como entrada, acostúmbrese a unirla bien sea a positivo o a masa, siempre a través de una resistencia, que puede ser la interna o una externa colocada por usted. Si es la interna, acuérdese de que irá siempre al positivo de 3,3 voltios. Ejemplos para comprobar si se pulsa un botón:
Antes de dejar esta página, probaremos el inevitable programa Blink.
No tenemos aún soldadas las tiras de pines que nos darán acceso completo a todas sus patillas, bien sea conectandoles cables Dupont o insertandola en nuestra placa Protoboard. Pero podemos aprovechar que la placa Wemos D1 mini tiene un pequeño led azul conectado a la GPIO2.
La configuramos como OUTPUT usando pin.mode, y mediante un bucle WHILE ... WEND que se ejecutará siempre, de forma indefinida, ya que 1 siempre será igual a 1 😜, encenderemos y apagaremos el led con la instrucción de Annex adecuada, pin(x) = 1 y pin(x) = 0.
pin.mode 2, output ' La GPIO2 será una salida
while 1
pin(2) = 1 ' Hacemos que en la GPIO2 aparezca un 1 (3,3 voltios)
pause(1000) ' Pausa de 1000 milisegundos, es decir 1 segundo
pin(2) = 0 ' Conectamos a masa la GPIO2
pause(1000) ' Otra pausa de 1 segundo
wend ' Vuelta a empezar'
Encienda su módulo ESP8266, conéctese a él por wifi, y copie y pegue en su editor este programa, grábelo con Save y ejecútelo con Run.
Verá que el led está 1 segundo apagado y un segundo encendido. Juegue a cambiar los valores de pause, por ejemplo, a pause(2000) en la línea 5 y pause(200) en la línea 7 para obtener dos segundos de apagado y un pequeño destello de 200 milisegundos encendido.
Si ejecuta ahora el programa, verá que el resultado es al contrario de lo que queríamos: dos segundos encendido y un corto apagado de 200 milisegundos. ¿Por qué? Porque el diodo led interno del D1 mini tiene conectado su ánodo, a través de una resistencia limitadora de corriente, al positivo de la alimentación y su cátodo al GPIO2.
Luego para encenderlo debemos poner la GPIO a cero y para apagarlo a uno.
Compruébelo con este programa:
pin.mode 2, output
while 1
pin(2) = 0
wlog "pin(2) = 0 => pin(2) = GND => Led encendido"
pause(2000)
pin(2) = 1
wlog "pin(2) = 1 => pin(2) = 3,3v => Led apagado"
pause(2000)
wlog
wend
Recuerde: podemos conectar nuestros dispositivos externos (led, relé, motor, etc.), bien sea entre positivo de la alimentación y la GPIO o entre la GPIO y masa (GND).
Quizás con estas imágenes le sea más sencillo entender el funcionamiento: