Guía Completa de Funciones en Arduino – Explicado Bien a lo Cordobés 🤠🔌

¡Bienvenidos, makers y fanáticos de la electrónica! Si estás arrancando con Arduino o querés repasar todas las funciones que se pueden usar, acá te dejo una guía bien completita y explicada a lo criollo. Desde lo más básico hasta funciones avanzadas para que programes sin miedo y hagas que tu proyecto funcione como Dios manda.


1. Lo Básico: setup() y loop()

Si Arduino fuera un bar, setup() sería el momento en que llegás, saludás a todo el mundo y pedís la primera cerveza. Solo pasa una vez. 

En cambio loop(), sería el típico personaje que cada 5 minutos dice "una más y nos vamos"… y sigue repitiendo lo mismo toda la noche.

void setup() {

        Serial.begin(9600); // Arranca la comunicación serie (como un WhatsApp con la compu)

  }


void loop() {

   Serial.println("Hola, loco!"); // Manda un mensaje a la PC

   delay(1000); // Espera 1 segundo antes de repetir

}




2. Controlando los Pines – Encendiendo Cosas

2.1 pinMode(pin, modo)

Definís si un pin va a ser entrada (INPUT), salida (OUTPUT), o entrada con pull-up (INPUT_PULLUP).


pinMode(13, OUTPUT);  // Configura el pin 13 como salida

pinMode(2, INPUT);    // Configura el pin 2 como entrada


2.2 digitalWrite(pin, estado)

Prendés (HIGH) o apagás (LOW) un pin.


digitalWrite(13, HIGH);  // Prende el LED del pin 13

delay(1000);   // Lo espera un segundo

digitalWrite(13, LOW);  // Lo apaga


2.3 digitalRead(pin)

Leés el estado de un pin (si está en HIGH o LOW). Ideal para botones y sensores.


if (digitalRead(2) == HIGH) {

  Serial.println("¡Botón apretado!");

}


2.4 analogWrite(pin, valor)

Genera una señal PWM entre 0 y 255. Básicamente, podés regular la potencia de un LED o motor (con una corriente limitada).


analogWrite(9, 128); // 50% de brillo en un LED conectado al pin 9


2.5 analogRead(pin)

Mide valores analógicos (0 a 1023). Úsalo con sensores de luz, temperatura, etc.


int valor = analogRead(A0);

Serial.println(valor);



3. Estructuras de Control – Poniendo Orden en el Código

3.1 if - else

Si pasa algo, hacé esto; si no pasa nada, hacé otra cosa.


if (analogRead(A0) > 500) {   //Si la lectura análoga en el pin A0 es mayor a 500

   digitalWrite(13, HIGH); // Va a escribir en el pin 13, un valor alto (1 - encendido)

} else { // Si la lectura análoga en el pin A0 NO ES mayor a 500

  digitalWrite(13, LOW); // Va a escribir en el pin 13, un valor bajo (0 - apagado)

}


3.2 for

Si querés hacer algo varias veces, usá for.


for (int i = 0; i < 10; i++) { // Mientras que el valor " i que vale 0" sea menor a 10, "le sumas 1", hasta llegar a 9

  Serial.println(i); // Imprimo en el puerto serie los números del 0 al 9

}


3.3 while

Mientras se cumpla una condición, el código sigue ejecutándose hasta salir de dicha condición, es un bucle.


while (digitalRead(2) == LOW) {

  Serial.println("Esperando...");

}


3.4 do-while

Parecido a while, pero el código se ejecuta al menos una vez.


do {

  Serial.println("Ejecutando...");

} while (digitalRead(2) == LOW);


3.5 switch-case

En vez de meter muchos if, usá switch-case para evaluar varias opciones.


int opcion = 2;

switch (opcion) {

   case 1:

    Serial.println("Elegiste la opción 1");

   break;

  case 2:

     Serial.println("Elegiste la opción 2");

   break;

  default:

    Serial.println("Opción no válida");

}



4. Tiempo – No todo en la vida es inmediato

4.1 delay(ms)

Hacés una pausa en el código.


delay(1000); // Espera 1 segundo


4.2 millis()

Cuenta el tiempo en milisegundos desde que Arduino arrancó.


unsigned long tiempo = millis();


4.3 micros()

Similar a millis(), pero mide en microsegundos.


unsigned long tiempo = micros();



5. Comunicación Serial – Hablando con la Computadora

5.1 Serial.begin(baudrate)

Configura la velocidad de comunicación (normalmente 9600).


Serial.begin(9600);


5.2 Serial.print() y Serial.println()

Manda texto o números a la PC.


Serial.print("Valor: ");

Serial.println(analogRead(A0));


5.3 Serial.read()

Recibe datos desde la PC.


if (Serial.available() > 0) {

   char dato = Serial.read();

   Serial.println(dato);

}



6. Matemáticas – Porque a veces hay que hacer cuentas

6.1 abs(x)

Devuelve el valor absoluto de x.


int valor = abs(-10); // Devuelve 10


6.2 constrain(x, min, max)

Asegura que x esté entre min y max.


int limitado = constrain(200, 0, 100); // Retorna 100


6.3 map(x, in_min, in_max, out_min, out_max)

Convierte x de un rango a otro.

int mapeado = map(512, 0, 1023, 0, 255);


6.4 random(min, max)

Genera un número aleatorio.

int aleatorio = random(1, 10);



7. Interrupciones – Cuando algo es urgente

7.1 attachInterrupt()

Hacés que Arduino responda rápido a un evento (como un botón apretado).


void miFuncion() {

  Serial.println("¡Interrupción detectada!");

}


void setup() {

  attachInterrupt(digitalPinToInterrupt(2), miFuncion, RISING);

}


7.2 detachInterrupt()

Desactiva una interrupción.


detachInterrupt(digitalPinToInterrupt(2));



Conclusión – Ahora sí, ¡a programar!

Con esto ya tenés una base firme para programar Arduino como un campeón. 🚀🔥 Desde manejar pines hasta interrupciones, esta guía te cubre lo necesario para que tu código funcione sin dramas, claro que vas a tener que aprender otras cosas, otras funciones, que las veras en otra sección de este blog.

Si te gustó, compartilo con otros makers. ¡Y cualquier duda, métele al comentario que lo charlamos! 😎