Arduino: Sintaxis básica del lenguaje de programación

Estructura de un programa

Cuando creamos un nuevo programa (Archivo > Nuevo) el entorno de desarrollo crea por nosotros la estructura básica de la aplicación.

ar1

Las líneas de código que comienzan con “//” son comentarios para poder entender mejor la aplicación y no ejecutan ninguna instrucción cuando descargamos el programa a la placa Arduino.

El programa básico está formado por 2 funciones: setup y loop.

Más adelante explicaremos el propósito de cada una de ellas pero lo importante ahora es saber que es una función y cual es su sintaxis.

Funciones (Functions)

Las funciones permiten crear piezas modulares de código que pueden ser llamadas desde distintos puntos del resto del programa (si son recursivas pueden llegar a llamarse a si mismas).

La sintaxis básica de una función es la siguiente:

type NombreFunción(parámetros) { 
    //código de la función
}

Primero definimos el resultado que puede retornar (al punto del programa desde donde se llama) la función con el type, especificamos que tipo de dato va a retornar (por ejemplo un número entero o una cadena). Cuando el retorno es void significa que no retorna nada. A continuación definimos el nombre de la función (NombreFunción en el ejemplo de arriba),  entre paréntesis definimos los parámetros de la función especificando el tipo de dato y el nombre de la variable. Pongamos un ejemplo muy sencillo, queremos sumar dos números pasados como parámetros y que la función retorne el resultado de la suma.

La función tendrá el siguiente aspecto:

ar3

Si seguimos la explicación de arriba:

  • int: Indica que la función va a retornar un tipo de dato entero (la suma de dos números).
  • mySumFunction: Es el nombre de la función que nosotros hemos elegido.
  • Entre paréntesis los dos parámetros de entrada a la función, son los números a sumar, definidos de tipo entero o integer (int) y con los nombres de variable a y b.
  • Luego entre las llaves {} añadimos las instrucciones que realiza la función, en este caso sólo debe sumar los números de entrada que hemos llamado “a” y “b” y retornar el resultado usando la palabra clave return.

Para saber algo más consultar este enlace sobre declaración de funciones.

Para llamarla podemos hacer lo siguiente en otro punto del programa:

mySumFunction(2,3)

Bueno ahora que sabemos algo más sobre funciones volvemos al programa inicial básico, tenemos 2 funciones imprescindibles.

void setup()

Normalmente dentro de esta función establecemos los parámetros de configuración de nuestra aplicación. Es la primera función que ejecuta el programa cuando se carga y se ejecuta una sola vez. Por ejemplo usando la función pinMode podemos establecer un pin como E/S (Entrada o Salida) y usarla más adelante para encender un led conectado como salida (podemos ver algo más sobre PinMode en “Arduino ledblink: Hacer parpadear el led de la placa“).

ar4

void loop()

La función loop  es la siguiente que se ejecuta tras setup(). La función loop() hace lo que su nombre indica de forma secuencial ejecuta una a una las líneas de código y vuelve a empezar de forma cíclica. De esa forma en cada vuelta de ejecución podemos controlar los eventos que se producen en la placa.

 

 

Arduino: Moviendo un Micro Servo SG90 9g

servo1El Kit de Arduino que obra en mi poder viene acompañado con los sensores básicos, mi objetivo es conocerlos todos y probarlos antes de seguir con otros proyectos.

Hoy le ha tocado a uno de los componentes más interesantes de la caja, un servomotor.

En concreto el modelo del kit es el siguiente: Tower Pro Micro Servo 9g SG90 (sg90servo).

servo2

Los servo normalmente no están ideados para un giro continuo como los motores convencionales (por ejemplo para hacer girar un rueda que mueva nuestro Arduino), los servos están diseñados para que se muevan un determinado angulo y se mantengan en una posición en respuesta a una señal. Nuestro modelo puede rotar 180 grados, 90º en cada sentido.

El servo se conecta usando 3 hilos:

  • 5V (rojo)
  • GND (negro/marrón)
  • Control (amarillo/blanco) conectado al PIN nº7 en este ejemplo.

servo5

El control de un servo se facilita en forma de librería con funciones especiales, en el IDE de desarrollo debemos asegurarnos de que esta instalada (menú Programa > Incluir librería).

servo4

Para usar la librería sólo debemos añadir el fichero de cabecera:

#include <Servo.h>

Para probar abriremos un proyecto de ejemplo para servos llamado Sweep (tutorial oficial en arduino.cc). Es muy sencillo, va enviando la orden de mover el motor del servo grado a grado desde 0 hasta 180 (con una pequeña espera o delay), luego realiza la misma operación de forma inversa.

Referencias al lenguaje usado para el código:

Primero declaramos un objeto de tipo Servo.  En el bloque de código Setup() usamos el método attach() pasando como parámetro de entrada el pin al que tenemos conectado el hilo amarillo con la señal de control.

El método write() escribe un valor al servo con el angulo de rotación.

#include <Servo.h>

#define SERVO_PIN 7
#define SERVO_MX_ANGLE 180
#define SERVO_DELAY_MS 100

Servo myservo; 

int pos = 0; 

void setup() {
 myservo.attach(SERVO_PIN); 
}

void loop() {
 
 myservo.write(45);
 delay(1000);
 myservo.write(90);
 delay(1000); 
 myservo.write(180);
 delay(1000); 
 myservo.write(0);
 
 for (pos = 0; pos <= SERVO_MX_ANGLE; pos++) { 
 myservo.write(pos); 
 delay(SERVO_DELAY_MS); 
 }
 for (pos =SERVO_MX_ANGLE; pos >= 0; pos--) { 
 myservo.write(pos); 
 delay(SERVO_DELAY_MS); 
 }
}

 

Prototipado rápido con Arduino y Bitbloq (entorno desarrollo visual)

bqzum1Este post nace a raíz de un taller al que tuve el placer de asistir hace unas semanas (“Prototipado rápido con Arduino“), una clase muy entretenida gracias a la persona que lo impartía y sobre todo práctica. En aquel taller pudimos jugar con un kit de robótica compuesto por una placa BQ Zum Core y una amplia gama de sensores para crear un montón de proyectos interesantes (disponible en esta enlace por 110 euros aproximadamente).

La placa BQ Zum es compatible con Arduino pero además los fabricantes de BQ Zum ponen a disposición del público de forma gratuita (previo registro) un entorno de desarrollo perfecto para principiantes sin nociones de programación, se llama Bitbloq y la programación se realiza en una aplicación Web usando bloques visuales para la lógica del programa.

bqzum2Podéis explorar primero como funciona Bitbloq en este enlace. Para descargar la aplicación creada en Bitbloq a a placa BQ Zum es necesario descargarse una aplicación llamada Web2Board para conectar con la placa (disponible para Windows 32/64 bit, Mac y Linux).

bqzum3

Instalamos windows_web2board_installer.exe en nuestro ordenador.

A continuación vamos a Bitbloq y accedemos con la cuenta creada. Vamos a crear un nuevo proyecto que apague y encienda un led luminoso conectado a un pin como salida (como en el post “Arduino extern2al_led: Encender un led usando un pin de salida“).

Lo primero es seleccionar la placa de trabajo (Arduino UNO) arrastrando y soltando el componente.

bqzum4

A continuación en la sección de componentes cogemos y arrastramos un led, le damos un nombre (yo lo he dejado con el mismo nombre “led_0”) y conectamos a un pin como en la siguiente imagen:

bqzum5

Ahora en la sección de la izquierda pasamos al software para programar el comportamiento del Led.

bqzum6

Lo primero que haremos es arrastrar de la sección componentes un bloque rojo que permite encender/apagar el Led (se muestran más o menos componentes de código dependiendo de los componentes hardware que hayas seleccionado en la fase previa).

Después de encender el Led queremos esperar unos esperar unos milisegundos y apagarlo (podemos encontrar el código necesario para la espera en la sección Control), volver a esperar y el bucle principal volverá a ejecutarse desde el principio (podemos duplicar un bloque seleccionándolo con el botón derecho del ratón).

bqzum7

Ahora solo tenemos que verificar el código y cargar nuestro código usando los controles en la esquina derecha superior de la aplicación.

bqzum8

He compartido el proyecto en el siguiente enlace: https://goo.gl/4NjBhP

 

Arduino external_led: Encender un led usando un pin de salida

Este ejercicio es similar al anterior (Arduino ledblink: Hacer parpadear el led de la placa) pero voy a usar una luz led incluido en el kit DFRduino Beginner Kit For Arduino (SKU:DFR0100) conectada a un pin (nº 8).

Los pins digitales se pueden configurar como entradas o salidas (por defecto están configurados como entradas, si lo queremos usar así no es necesario llamar a la función pinMode()).

 

arduino8

El esquema del circuito es como el siguiente pero usando la salida Nº 8.

arduino9

La patilla más larga del led es el ánodo (el polo positivo) y la otra el cátodo, debemos conectar la resistencia (yo he usado una de 1.0K ohm) a la patilla más larga y el otro extremo a la salida Nº 8. La otra patilla del led va directamente a la señal GND.

arduino10

 

A nivel de código es igual que el ejercicio anterior.

arduino11

Enlaces:

Arduino ledblink: Hacer parpadear el led de la placa

Este es el ejercicio más sencillo para comenzar, algo así como el “Hola mundo” en otros lenguajes de programación. El objetivo es hacer que parpadee el Led integrado en nuestra placa Arduino One (pin digital nº 13).

Se queremos saber cual es el nº de pin integrado en la placa y otras especificaciones https://www.arduino.cc/en/Main/ArduinoBoardUno#techspecs.

arduino7

Sólo debemos rellenar la función setup() con los datos de configuración, en este caso usamos la función pinMode(). Esta función configura un pin de la placa como entrada / salida.

La función loop() ejecuta en bucle una y otra vez el código que incluyamos. Usamos la función digitalWrite() para activar / desactivar la salida asociada al Led luminoso y la función delay() especificando para esperar 1000 mili-segundos entre activación / des activación.

Ahora sólo queda compilar la aplicación y subirla a la placa para que empiece a funcionar.

arduino6

Beginner kit for Arduino: Primeros pasos

arduino2Un amigo me ha prestado un Kit de Arduino (DFRduino Beginner Kit For Arduino V3 SKU:DFR0100) para que me vaya entrenando un poco de cara a un taller de iniciación básico que imparte este Martes.

Lo primero es descargar el entorno de desarrollo IDE (Integrated Development Environment) de la Web  oficial:https://www.arduino.cc/en/Main/Software# (disponible para Win, Mac y Linux). La versión actual en el momento de redactar este artículo es 1.6.12:

arduino3

Una vez descargado realizamos la instalación.

arduino4

La primera prueba es abrir el IDE y probar la conectividad con la placa Arduino conectada por USB a nuestra computadora. Usamos el menú principal Herramientas > Obtén información de la placa (antes igual debemos definir el puerto COM). Si todo está correcto nos mostrará una ventana emergente con información de nuestra placa.

arduino5