Si se cumple la condición, se ejecuta la declaración; de lo contrario, la sentencia se omite. Es la estructura condicional más básica en C y Arduino.
if (n >= 3)
{
expr++;
n = expr;
}
Similar a la instrucción IF, pero con una sentencia else incondicional adicional. Si la condición es verdadera se ejecuta sentencia1; si es falsa, se ejecuta sentencia2.
if (n == 5)
{
expr++;
}
else
{
n = expr;
}
Mezcla anidada de IF y ELSE IF. Permite evaluar múltiples condiciones en cadena. Si ninguna condición se cumple, se ejecuta el bloque else final.
if (n < 3)
expr++;
else if (n == 5)
n = expr;
else
n++;
La sentencia while se utiliza comúnmente para crear bucles repetitivos. La condición se evalúa al inicio del bucle. Es habitual emplearla para crear bucles infinitos en Arduino.
while (n < 10) {
sum += n;
n++;
}

Variante del while donde la condición se evalúa al final del bucle, garantizando al menos una ejecución.
do {
sum += n;
n--;
} while (n > 0);
Al igual que while, ejecuta código de forma iterativa. Combina inicio, condición e incremento en una sola línea.
for (n = 0; n < 10; n++)
sum += n;
La sentencia switch es una condicional multivía, resultado de generalizar la instrucción IF-ELSE. Evalúa una variable y ejecuta el bloque correspondiente al caso coincidente.
switch (val) {
case 1:
a_cnt++;
break;
case 2:
case 3:
b_cnt++;
break;
default:
c_cnt++;
}
Objetivo: Mover 10 datos de memoria flash y enviarlos a memoria SRAM (dirección 0x0100), usando subrutinas (rcall), punteros y lazos.
Uso de rcall para llamar a la rutina copiar
Puntero X apunta a SRAM 0x0100; puntero Z a la tabla en flash
Bucle con dec y brne para iterar 10 veces
.include "m328pdef.inc"
.def Aux=R16
.def Dato=R17
.def temp=r18
.org 0x00
rjmp inicio
inicio:
ldi Aux,10
ldi temp,0
ldi R26,0x00
ldi R27,0x01
salto:
rcall copiar
dec Aux
brne salto
lazo: rjmp lazocopiar:
ldi ZH,high(tabla<<1)
ldi ZL,low(tabla<<1)
add ZL,temp
lpm Dato,Z
inc temp
st X+,Dato
ret
; tabla de datos
tabla:
.db 255,10,4,127,63,31,15,7,3,1Arduino IDE (Integrated Development Environment) es un entorno de desarrollo integrado de código abierto diseñado para programar placas electrónicas basadas en microcontroladores, como las de la familia Arduino. Proporciona una interfaz sencilla que permite escribir, editar, compilar y cargar programas (llamados sketches) en la memoria del microcontrolador mediante una conexión USB. Está basado en los lenguajes C y C++, pero incorpora bibliotecas y funciones simplificadas que facilitan el aprendizaje y el desarrollo de proyectos electrónicos.
El Arduino IDE incluye herramientas para la gestión de bibliotecas, selección de placas y puertos de comunicación, así como un monitor serie que permite visualizar e intercambiar datos entre la computadora y el microcontrolador en tiempo real. Gracias a su facilidad de uso, compatibilidad con múltiples sistemas operativos y amplia comunidad de usuarios, se ha convertido en una de las plataformas más utilizadas en educación, prototipado electrónico, automatización, robótica e Internet de las Cosas (IoT).
La última versión de Arduino IDE se puede descargar en :

Ejercicio: Mover 10 datos de la memoria de programa (Flash) a la memoria RAM de un Arduino Nano.
//Inicio
const byte tabla[10] PROGMEM = {
255, 10, 4, 127, 63, 31, 15, 7, 3, 1
}; // Creación de tabla en FLASH
byte datosRAM[10]; // Cración de tabla en RA;M
//////////////////////////////////////////////////////////////////
void setup() {
// Copiar 10 datos desde Flash hacia RAM
for (byte i = 0; i < 10; i++) {
datosRAM[i] = pgm_read_byte(&tabla[i]);
}
}
//////////////////////////////////////////////
void loop() {
// No se repite nada
}
Condicionales simples y anidadas para tomar decisiones según el valor de una expresión.
Bucles con condición al inicio o al final. El DO garantiza al menos una ejecución.
Bucle iterativo con inicio, condición e incremento integrados en una sola expresión.
Condicional multivía que generaliza el IF-ELSE para múltiples casos posibles.
Análisis de las principales estructuras de control de flujo en lenguaje C y su implementación en Arduino: condicionales, bucles y sentencias de selección múltiple.