Nociones de programación en Arduino para novatos

Cómo programar en Arduino¡Hola bebe! Llevo unas semanas recibiendo correos de personas que no tienen problemas con la electrónica, sino que tienen problemas con la programación en sí. Con qué poner en cada ocasión y cómo ponerlo.

Así que he pensado que podría escribirte unas nociones básicas para programar en Arduino. Nada serio, solamente algunos recordatorios que marquen las bases de todo.

¿Interesado? Pues lo primero que debes hacer es abrir (o descargar) el IDE de Arduino. Y si no lo tienes, para programar un bloc de notas te servirá, pero claro, no aspires a enviar el programa a Arduino desde el bloc de notas porque creo que no va a funcionar….

Programando el setup

Lo primero que ves en un programa son las palabras setup y loop. El primero es un bloque que contendrá las cosas que solamente se harán una vez, el segundo las que se harán por siempre.

¿Qué cosas puede contener el setup? El setup contiene aquellas cosas evidentes en el sistema, las que suponemos en el sistema ya de por sí. Y me explico… por ejemplo, si estás trabajando con un led en el pin 13, es evidente que necesitarás decirle a Arduino que en este programa el led 13 es una salida.

Es una salida porque va a entregar corriente al led. Si se tratase de un sensor de temperatura, el sensor enviaría una corriente a Arduino para decirle cuál es la temperatura. Y esto sería una entrada.

Otra cosa evidente del sistema serían las configuraciones: Del serial, de los motores,… Como ya sabes (y sino, te lo cuento yo ahora) en Arduino existen muchas librerías. Una librería es un programa que contiene una serie de funciones ya programadas. Así, para llamar a la función serial basta con llamar a la librería serial y decirle, quiero que utilices la función de inicio de la comunicación Serial.

Esto quedaría algo así:

  Serial.begin(9600);

Justo el caso de la comunicación serial es muy particular ya que solamente hay UNA comunicación. No hay varias. Imagina el caso de un motor paso a paso. Tu puedes tener varios… así que no tiene sentido llamar al motor con el nombre de la librería, que es lo que sucede aquí… lo que se hace es esto:

void setup() {

Stepper stepper(steps, 8,9,10,11);

}

void loop() {

stepper.step(200);

}

Como ves, lo que hago es crear una variable que es del tipo motor y luego a esa variable le aplico las funciones de la librería. Así puedo tener 100 motores sin problemas… aunque pensar 100 nombres distintos da una pereza… ufff

Otra cosa que puedes añadir en el setup es la definición de variables. ¿Qué sentido tiene crear una variable infinitas veces en un bucle? Las pones en el setup tal que así:

int variable = 0;

Como ves, yo le he dado un valor inicial a la variable, pero podría habérselo dado después, en el bucle. Así lo que sé es que al inicio tendrá ese valor si o sí… luego puede cambiar y si quiero fijar algo cada vez que el programa se repita ya lo haré en el famoso loop.

Opt In Image

Dándole vueltas al loop

El loop es el bucle principal. Aquello que se repetirá constantemente.  Aquí es donde encenderás tus motores y tus leds. Tanto constantemente como con condicionales if. Un error que veo a veces es encender leds uno a uno, o mover pasos exactos de un motor paso a paso.

Señores, hagamos uso de los bucles que para eso los tenemos. El bucle for es el que debes utilizar si quieres repetir algo de un número fijo de veces. Por ejemplo, para encender 20 leds lo que haré será:

void setup() {
for(int i=0; i>=20; i++){
  pinMode(i, OUTPUT);
 }

}

void loop() {

 for(int i=0; i>=20; i++){
  digitalWrite(i, HIGH);
 }

}

Con la variable i voy encendiendo cada uno de los leds en tan solo unas líneas y no en 20 líneas idénticas. Puede que lo que quieras es que se repita algo pero no sabes bien cuando tiene que parar. Tal vez mientras la temperatura sea superior a un valor haya que encender el motor de un ventilador pero luego no. Podría ser algo así:

void loop() {

 while(temperatura>30){
stepper.step(1);
}

}

El bucle while lo que hace es repetirse siempre que se cumpla una condición. Por eso, si la temperatura es superior a un valor, el bucle se sigue haciendo y el motor se sigue moviendo.

Pero no solo de bucles vive el programador. El loop es el lugar dónde escribir todas las acciones que debe de hacer Arduino, aquello para lo que se pensó. Con esto quiero decir que si estás intentando hacer un controlador de riego, en este bucle tendrás que meter las órdenes que hacen que el goteo se encienda cuando la humedad baje de un porcentaje. Pero también tendrás que programar cuándo hay que parar el goteo.

Al final es tan sencillo como hacerse un esquema: quiero que haga estas cosas y las distribuyo en bloques dentro del loop. No intentes hacer una cosa mientras haces otra porque entonces tú te lías, luego lees el código y no lo entiendes y te lías aún más. Y acabas sin programar nada. Sé metódico porque al final esto se trata más de qué quiero hacer y luego pensar cómo hacer cada una de las cosas que se necesitan.

Lo siento gurús, este no era el post que esperabais…

Y nada, supongo que si eres un gurú de la programación esto te parecerá poca cosa. Pero creo que yo hubiese agradecido estos consejos cuando empecé con microcontroladores. No por nada, sino porque a veces programamos ‘on the go‘ y no nos damos cuenta que sin una estructura estamos jod***s.

Nos vemos pronto pero mientras tanto… comparte este post a todos tus amigos novatos en esto de la programación en Arduino 😉

[Total:7    Promedio:4/5]

Déjame un comentario que en el fondo soy buen chaval

  1. Proteus

    Responder

  2. Proteus

    Responder

  3. Responder

    • Responder

  4. Dalkon

    Responder

  5. ArduMike

    Responder

    • Responder

Deja un comentario