En este tutorial vamos a repasar los condicionales y los bucles en MicroPython, como estructuras de control nos permiten tomar decisiones y repetir acciones.
Ambos, condicionales y bucles, son las herramientas principales para controlar el flujo de ejecución, y constituyen la mayor parte de la lógica que vamos a poner en nuestro programa.
En MicroPython if
, else
, for
y while
basicamente funcionan de forma idéntica a sus equivalentes en Python (y, por cierto, bastante similares al resto de lenguajes).
Pero, dado que son una de las partes más importantes de tu programa, vamos a repasarlos brevemente.
Si quieres aprender más consulta,
Condicionales
Las estructuras condicionales if
y else
nos permiten ejecutar un bloque de código solo si se cumple una condición específica.
En MicroPython, las condicionales se implementan utilizando las palabras clave if
, elif
(opcional) y else
.
Sintaxis básica de if
La estructura básica de un condicional if
es la siguiente:
if condición:
# Bloque de código a ejecutar si la condición es verdadera
- Condición: Es una expresión booleana que se evalúa como
True
oFalse
. - Bloque de código: Es el conjunto de instrucciones que se ejecutan si la condición es verdadera.
Por ejemplo,
temperatura = 25
if temperatura > 30:
print("Hace calor")
En este ejemplo, el mensaje “Hace calor” solo se imprimirá si la temperatura es mayor que 30.
Uso de else
La palabra clave else
se utiliza para ejecutar un bloque de código cuando la condición del if
no se cumple.
if condición:
# Bloque de código si la condición es verdadera
else:
# Bloque de código si la condición es falsa
Vamos a verlo con un ejemplo,
temperatura = 25
if temperatura > 30:
print("Hace calor")
else:
print("La temperatura es agradable")
En este caso, si la temperatura no es mayor que 30, se imprimirá “La temperatura es agradable”.
Uso de elif
La palabra clave elif
(abreviatura de “else if”) se utiliza para evaluar múltiples condiciones en secuencia.
if condición1:
# Bloque de código si condición1 es verdadera
elif condición2:
# Bloque de código si condición2 es verdadera
else:
# Bloque de código si ninguna condición es verdadera
Veámoslo también con un ejemplo sencillo,
temperatura = 25
if temperatura > 30:
print("Hace calor")
elif temperatura > 20:
print("La temperatura es agradable")
else:
print("Hace frío")
Aquí,
- El programa evalúa múltiples condiciones
- Ejecuta el bloque de código correspondiente a la primera condición que sea verdadera.
Bucles
Los bucles for
y while
nos permiten repetir un fragmento de código varias veces. En MicroPython, los bucles más comunes son for
y while
.
Bucle for
El bucle for
se utiliza para iterar sobre una secuencia de elementos, como una lista o un rango de números.
for variable in secuencia:
# Bloque de código a ejecutar en cada iteración
- Variable: Es una variable que toma el valor de cada elemento de la secuencia en cada iteración.
- Secuencia: Es una colección de elementos sobre la cual se itera.
Veamos con un ejemplo,
for i in range(5):
print("Iteración:", i)
El bucle for
itera sobre los números del 0 al 4, y en cada iteración, la variable i
toma el valor correspondiente.
Es decir, que este código imprimirá:
Iteración: 0
Iteración: 1
Iteración: 2
Iteración: 3
Iteración: 4
Bucle while
El bucle while
se utiliza para repetir un bloque de código mientras una condición sea verdadera.
while condición:
# Bloque de código a ejecutar mientras la condición sea verdadera
- Condición: Es una expresión booleana que se evalúa antes de cada iteración.
contador = 0
while contador < 5:
print("Contador:", contador)
contador += 1
Este código imprimirá:
Contador: 0
Contador: 1
Contador: 2
Contador: 3
Contador: 4
El bucle while
se ejecuta mientras el valor de contador
sea menor que 5. En cada iteración, el contador se incrementa en 1.
Control de bucles: break
y continue
En ocasiones, es necesario controlar el flujo de un bucle. Para ello, MicroPython proporciona las palabras clave break
y continue
.
- break: Termina el bucle inmediatamente.
- continue: Salta a la siguiente iteración del bucle.
for i in range(10):
if i == 5:
break
print("Iteración:", i)
Este código imprimirá:
Iteración: 0
Iteración: 1
Iteración: 2
Iteración: 3
Iteración: 4
El bucle se detiene cuando i
es igual a 5.
Ejemplo con continue
for i in range(5):
if i == 2:
continue
print("Iteración:", i)
Este código imprimirá:
Iteración: 0
Iteración: 1
Iteración: 3
Iteración: 4
El bucle salta la iteración cuando i
es igual a 2.
Ejemplos prácticos
Control de un LED con if y while
Supongamos que tenemos un LED conectado a un pin GPIO de nuestra placa. Podemos usar un bucle while
para encender y apagar el LED en un intervalo de tiempo.
from machine import Pin
import time
led = Pin(2, Pin.OUT) # Configura el pin 2 como salida
while True:
led.value(1) # Enciende el LED
time.sleep(1) # Espera 1 segundo
led.value(0) # Apaga el LED
time.sleep(1) # Espera 1 segundo
Este código crea un bucle infinito que enciende y apaga el LED cada segundo.
Lectura de un pulsador con if
Si tenemos un pulsador conectado a un pin GPIO, podemos usar un condicional if
para detectar cuándo se ha presionado.
from machine import Pin
pulsador = Pin(4, Pin.IN, Pin.PULL_UP) # Configura el pin 4 como entrada con resistencia pull-up
while True:
if pulsador.value() == 0: # Si el pulsador está presionado
print("Pulsador presionado")
Este código detecta cuándo el pulsador está presionado (valor 0) y muestra un mensaje en la consola.
Uso de for para controlar múltiples LEDs
Si tenemos varios LEDs conectados a diferentes pines GPIO, podemos usar un bucle for
para controlarlos secuencialmente.
from machine import Pin
import time
leds = [Pin(2, Pin.OUT), Pin(3, Pin.OUT), Pin(4, Pin.OUT)] # Lista de pines de LEDs
for led in leds:
led.value(1) # Enciende el LED
time.sleep(1) # Espera 1 segundo
led.value(0) # Apaga el LED
Este código enciende y apaga cada LED en secuencia, con un intervalo de 1 segundo entre cada uno.