Arduino & ESP32
2. ESP32
2.3. Funciones básicas
En ESP32 con MicroPython no se usan funciones como pinMode(), digitalRead() o digitalWrite() directamente. En su lugar, se trabaja con clases y métodos del módulo machine.
Función Pin(pin, mode)
Se utiliza para configurar un pin GPIO como entrada o salida. Para usarla, primero se importa la clase Pin:
from machine import Pin
Ejemplos:
led = Pin(2, Pin.OUT)
Configura el GPIO 2 como salida.
También se pueden configurar las resistencias de Pull up internas:
boton = Pin(4, Pin.IN, Pin.PULL_UP)
Configura el GPIO 4 como entrada con resistencia pull-up intern.
Método value() para lectura digital
Lee el valor lógico de un pin digital.
Devuelve:
-
1si el pin está en nivel alto.0si el pin está en nivel bajo.
Ejemplo:
estado = boton.value()
Método value(valor) para escritura digital
Escribe un valor lógico en un pin configurado como salida.
Ejemplo:
led.value(1)
Coloca el pin en nivel alto.
led.value(0)
Coloca el pin en nivel bajo.
Métodoson()yoff()
Permiten encender o apagar un pin de salida de forma más legible.
Ejemplo:
led.on()
Coloca el pin en nivel alto.
led.off()
Coloca el pin en nivel bajo.
Función sleep_ms(ms)
Realiza una pausa en el programa durante la cantidad indicada de milisegundos.
Para usarla:
from time import sleep_ms
Ejemplo:
sleep_ms(1000)
Función ticks_ms()
Devuelve la cantidad de milisegundos transcurridos desde que se inició el contador interno del sistema.
Para usarla:
from time import ticks_ms
Ejemplo:
tiempo = ticks_ms()
Para calcular diferencias de tiempo, se recomienda usar también ticks_diff():
from time import ticks_ms, ticks_diff
inicio = ticks_ms()
# ...
transcurrido = ticks_diff(ticks_ms(), inicio)
Ejemplo: parpadeo de un LED
from machine import Pin
from time import sleep_ms
led = Pin(2, Pin.OUT)
while True:
led.on()
sleep_ms(500)
led.off()
sleep_ms(500)
Ejemplo: lectura de un botón
from machine import Pin
from time import sleep_ms
boton = Pin(4, Pin.IN, Pin.PULL_UP)
led = Pin(2, Pin.OUT)
while True:
if boton.value() == 0:
led.on()
else:
led.off()
sleep_ms(50)