Hace un tiempo habíamos empezado a hablar del uso de Arduino, una mera introducción. En este artículo veremos un ejemplo y algunas cosas sobre la programación. Antes que nada es indispensable descargarse y leer un buen manual, preferiblemente en español con los conceptos básicos.
Nuestra placa elegida es un clon de Arduino MEGA que contiene un microcontrolador ATmega1280 (actualmente considerada obsoleta). Sus principales características son:
- Microcontrolador ATmega1280
- Frecuencia: 16MHz
- Tensión de entrada: 7~12V
- Pines digitales I/O: 54 (de los cuales 14 pueden ser salidas PWM)
- Entradas analógicas: 16
- Memoria Flash: 128K
- Memoria SRAM: 8K
- Memoria EEPROM: 4K

Como primer experimento vamos a practicar utilizando pines digitales para controlar un motor paso a paso. El elegido es el 28BYJ-48 que es un motor de muy bajo costo.
Es muy importante conocer qué tipo de motor es, la tensión de trabajo y la secuencia de pasos para lograr que el motor funcione. Obligada consulta a la hoja de datos. La siguiente tabla nos muestra la secuencia que debemos programar en nuestro Arduino para que las bobinas del motor sean excitadas convenientemente y lograr que el eje gire!
Programando
La estructura básica del lenguaje de programación Arduino es bastante simple y se organiza en al menos dos partes o funciones que encierran bloques de declaraciones. Ambas funciones son requeridas para que el programa funcione.
void setup() {
instrucciones;
}
void loop() {
instrucciones;
}
La función setup() es la primera función a ejecutar en el programa, es ejecutada una vez y es usada para asignar los modos de pines o inicializar las comunicaciones serie por ejemplo.
La función loop() se ejecuta a continuación e incluye el código que se ejecuta continuamente leyendo entradas, activando salidas, etc. Esta función es el núcleo de todos los programas Arduino y hace la mayor parte del trabajo.
El programa a continuación hará que nuestra placa Arduino utilice 4 pines como salidas digitales, y «escriba» en ellos la secuencia correspondiente para mover el motor en un sentido. Cambiando el tiempo de demora se podrá incrementar la velocidad de giro del eje del motor.
/* EMPEZANDO CON ARDUINO, EJEMPLOS BÁSICOS CON PINES DIGITALES
CONTROL DE UN MOTOR PASO A PASO BIPOLAR - 27 de mayo de 2012
www.automatismos-mdq.com.ar - www.mateslab.com.ar
*/
// Función "setup". Inicializaciones
void setup ()
{
pinMode(47, OUTPUT); // ajusta pin47 como salida
pinMode(49, OUTPUT); // ajusta pin49 como salida
pinMode(51, OUTPUT); // ajusta pin51 como salida
pinMode(53, OUTPUT); // ajusta pin53 como salida
}
// Función "loop". Aquí va el código que se ejecutara continuamente.
void loop()
{
// PASO 1
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
digitalWrite(53, HIGH);
delay(200); // retardo de 200 milisegundos
// PASO 2
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(51, HIGH);
digitalWrite(53, HIGH);
delay(200); // retardo de 200 milisegundos
// PASO 3
digitalWrite(47, LOW);
digitalWrite(49, LOW);
digitalWrite(51, HIGH);
digitalWrite(53, LOW);
delay(200); // retardo de 200 milisegundos
// PASO 4
digitalWrite(47, LOW);
digitalWrite(49, HIGH);
digitalWrite(51, HIGH);
digitalWrite(53, LOW);
delay(200); // retardo de 200 milisegundos
// PASO 5
digitalWrite(47, LOW);
digitalWrite(49, HIGH);
digitalWrite(51, LOW);
digitalWrite(53, LOW);
delay(200); // retardo de 200 milisegundos
// PASO 6
digitalWrite(47, HIGH);
digitalWrite(49, HIGH);
digitalWrite(51, LOW);
digitalWrite(53, LOW);
delay(200); // retardo de 200 milisegundos
// PASO 7
digitalWrite(47, HIGH);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
digitalWrite(53, LOW);
delay(200); // retardo de 200 milisegundos
// PASO 8
digitalWrite(47, HIGH);
digitalWrite(49, LOW);
digitalWrite(51, LOW);
digitalWrite(53, HIGH);
delay(200); // retardo de 200 milisegundos
}
Por último el diagrama a modo de ejemplo. Reemplazamos las bobinas del motor por LEDs para poder ver la secuencia. Recuerden que no es posible conectar el motor directamente a los pines de salida de Arduino por el consumo del mismo. Es necesario utilizar un circuito driver adecuado para tal caso, como puede ser el L298. En próximos artículos veremos en detalle la electrónica.