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:

    • 1 si el pin está en nivel alto.
    • 0 si 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étodos on() y off()

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)