El Arduino es un sistema de desarrollo que combina un microprocesador programable y un Ambiente de programación (IDE).
Todos los microprocesadores necesitan un programa que les indica qué hacer.
Tomemos un ejemplo que viene con la instalación del IDE, que enciende un LED (diodo lumínico) cuando se oprime un botón.
//Ejemplo para mostrar como usar el Arduino
// Conectar un LED seguido de una resistencia
// de 330 Ohm entre pata 13 y GND
//Conectar botón entre 5v y pata 2, de esta una //resistencia a GND
// Se asigna un nombre al pin que se usa
int ledPin = 13; // Pin del LED es el 13
int buttonPin = 2; // Pin del botón es el 2
// Se da nombre y valor inicial a las variables :
int conDicion = 0; // variable para estado
void setup() {
// inicializa el pin del LED como salida (ouput):
pinMode(ledPin, OUTPUT);
// inicializa pin de boton como entrada (input):
pinMode(buttonPin, INPUT);
}
void loop() {
// Lee el estado del pin del botón:
condDicion = digitalRead(buttonPin);
// Comprobar si el boton está oprimido
//Si la condición se cumple poner voltaje en LED
if (condDicion == 1 ) {
digitalWrite(ledPin, 1); }
//Si no se cumple apaga el LED
else { digitalWrite(ledPin, 0); }
}
Cada programa describe el algoritmo (conjunto ordenado de pasos que hay que realizar para cumplir una tarea) que el microprocesador debe seguir. Cada vez que hacemos algo estamos cumpliendo un algoritmo que creamos mentalmente, así sea que estemos trabajando, cocinando, estudiando. Depende del programador crear el mejor programa que realice su algoritmo.
Los microprocesadores son dispositivos electrónicos digitales; su diferencia con los dispositivos analógicos es que en estos lo que se transmite va en forma de variaciones de voltaje. En la técnica digital todo se transmite en forma de números que se componen de dígitos que solo pueden valer 1 ó 0, son binarios. Los números que empleamos en la vida ordinaria usan dígitos que pueden tener 10 valores , desde 0 hasta 9. Cuando se da una información que contiene algún valor numérico en un programa, este tiene que ser traducido al sistema binario.
Igualmente, una orden escrita en lenguaje ordinario tiene que ser traducida a los códigos (conjuntos de unos y ceros que simbolizan acciones u objetos) que tienen significado para el microprocesador.
El programa de ejemplo que presentamos está escrito en un lenguaje llamado C. Aunque emplea palabras del inglés el programa en C tiene otras reglas y sintaxis diferentes, por ejemplo cada instrucción debe terminar en ; y lo que se escriba en la línea tras el símbolo // no forma parte del programa, son comentarios aclaratorios y se pueden escribir en cualquier idioma..
Hay un programa maestro encargado de traducir lo escrito en C al lenguaje de máquina, es el compilador. Cuando instalamos el IDE de Arduino con este viene un compilador que trabaja oculto cada vez que damos click en el símbolo de palomita o seleccionamos Verificar/Compilar en el menú de SKETCH. Cada vez que mandamos a verificar, el compilador avisa que terminó y crea una copia del programa en lenguaje binario, o nos da un mensaje resaltado en naranja si detecta un error en lo que hicimos.
Un programa requiere no solo cantidades numéricas, también necesita instrucciones para hacer algo con ellas y esto también se hace en con códigos binarios que representan operaciones y funciones.
Una operación puede ser asignar un valor a un sujeto. En este programa vemos como a un sujeto llamado ledPin se le asigna el valor 13 mediante el operador = que es similar al operador “igual” del álgebra ordinaria. A ese sujeto en programación se le llama variable, porque podemos cambiarle el valor.
Hay operadores para aritmética y también para operaciones lógicas. Lógica en filosofía es la teoría que describe las reglas del pensamiento. En computación sigue las reglas establecidas por Robert Boole, por eso se llama lógica booleana. Boole creó una forma de representar el pensamiento mediante operaciones que solo podían tener resultado positivo o negativo, verdadero o falso, 1 o 0. Esto es muy conveniente para trabajar con circuitos electrónicos digitales. Verdadero y falso se representa con voltaje y no voltaje respectivamente, en el caso de nuestro Arduino 1 es 5 voltios, 0 es 0 voltios.
En el programa C se puede usar 1 TRUE o HIGH para indicar que algo se cumple y 0 FALSE o LOW lo contrario, el compilador se encarga de esto. .
Una función es un componente del programa que hace operaciones mas complejas que los operadores. En el ejemplo la función pinMode(ledPin, OUTPUT) modifica el microprocesador mientras digitalRead(buttonPin) toma el voltaje del pin donde esta el botón y da 1 si hay voltaje o 0 en caso contrario.
If es una función que puede mandar a realizar otras funciones encerradas entre sus dos llaves {} si se cumple la condición que está entre paréntesis condDicion == 1; el doble signo es un operador que significa comparar dos sujetos, en este caso una variable con un valor, si ambos son iguales la comparación es verdadera, o sea 1 y se realiza lo que esté entre las llaves; en caso contrario se hace lo que está entre llaves después de else.
El programa de Arduino tiene una distribución muy clara resaltada aquí con colores para que se note mejor. Las partes en magenta es donde se “declaran” las variables que se van a usar, en este caso a ledPin, ,buttonPin, conDicion, se asignan los valores 13, 2, y 0 respectivamente. Eso quiere decir que cuando ponemos ledPin es igual que si ponemos el valor 13, lo mismo para buttonPin con 2.
La parte en amarillo entre dos llaves {} después de las palabras void loop() contiene las instrucciones para lo que se quiere realizar.
Primero se lee el valor de la pata del Arduino donde está el botón con digitalRead y seasigna a conDicion.
Luego si se cumple que conDicion es igual a 1, la función if se activa y se realiza lo que esté entre sus llaves:
digitalWrite(ledPin, HIGH), poner voltaje donde está conectado el LED, pata 13 del Arduino.
En la parte resaltada en azul se va a configurar el microprocesador para que las patas que se usarán actúen en correspondencia a lo que el programa va a realizar con ellas. En Arduino eso se hace entre las llaves {} despues de void setup (). Como explican los comentarios, la instrucción pinMode(pin, modo) dice de que número de pin se trata y si es entrada (INPUT) o salida (OUTPUT). Los botones van a entradas y los LED a salidas.
En la imagen se observa el circuito correspondiente a este programa. EL diodo se conecta con el positivo al pin 13 para que encienda cuando tenga voltaje y en serie una resistencia de 220 Ohm a 0v. El botón va entre 5v y el pin 2, mientras no esté oprimido la resistencia de 10k mantiene el pin 2 a 0v, al oprimir el botón se conecta aquí la fuente de 5v.
En un próximo trabajo explicaremos como instalar el IDE y como aprovechar las potencialidades del Arduino en aplicaciones mas útiles. Y también, muy importante, qué precauciones debemos tomar para no maltratarlo y que nos dure. De momento esperamos haber develado un poco los “misterios” de la programación.
Realmente es una lástima que en nuestro país no existan tiendas que se dediquen a la venta de equipos así, sería maravilloso programar esos equipos.