Manual de Programación

En este manual aprenderemos de forma fácil a utilizar el software y el hardware del arduino, ya que esta es una placa open source.

1. Qué es Arduino.imagen de arduino para blog
2. Razones por la cuales usar Arduino.
3. El hardware de Arduino.
4. El software de Arduino ( IDE ).
5. Que es un programa.
6. Como es un programa.
7. Tipos de variables (Global y local).
8. Tipos de datos.
9. Entradas & Salida digitales.
10. Control de flujo.
11. Entradas & Salida análogas.
12. Operadores.

1. Qué es Arduino

Arduino es una plataforma para crear prototipos y proyectos de electrónica que incluye componentes de Hardware y Software flexibles y fáciles de usar.

2. Razones por la cuales usar Arduino

Hay muchos otros microcontroladores y plataformas microcontroladores disponibles para compu- tación física. Parallax Basic Stamp, Netmedias BX-24, Phidgets, MIT’s Handyboard, y muchas otras ofertas de funcionalidad similar. Todas estas herramientas toman los desordenados detalles de la programación de microcontrolador y la encierran en un paquete fácil de usar. Arduino tam- bién simplifica el proceso de trabajo con microcontroladores, pero ofrece algunas ventajas para profesores, estudiantes y aficionados interesados sobre otros sistemas:

Barato: Las placas Arduino son relativamente baratas comparadas con otras plataformas microcontroladoras. La versión menos cara del modulo Arduino puede ser ensamblada a mano, e incluso los módulos de Arduino preensamblados cuestan menos de 50$.

Multiplataforma: El software de Arduino se ejecuta en sistemas operativos Windows, Ma-cintosh OSX y GNU/Linux. La mayoría de los sistemas microcontroladores están limitados a Windows.

Entorno de programación simple y claro: El entorno de programación de Arduino es fácil de usar para principiantes, pero suficientemente flexible para que usuarios avanzados puedan aprovecharlo también. Para profesores, está convenientemente basado en el entorno de pro- gramación Processing, de manera que estudiantes aprendiendo a programar en ese entorno estarán familiarizados con el aspecto y la imagen de Arduino.

Código abierto y software extensible: El software Arduino está publicado como herramientas de código abierto, disponible para extensión por programadores experimentados. El lenguaje puede ser expandido mediante librerías C++, y la gente que quiera entender los detalles técnicos pueden hacer el salto desde Arduino a la programación en lenguaje AVR C en el cual está basado. De forma similar, puedes añadir código AVR-C directamente en tus programas Arduino si quieres.

Código abierto y hardware extensible: El Arduino está́ basado en microcontroladores ATMEGA8 y ATMEGA168 de Ámel. Los planos para los módulos están publicados bajo licencia Creative Commons, por lo que diseñadores experimentados de circuitos pueden hacer su propia versión del módulo, extendiéndolo y mejorándolo. Incluso usuarios relativamente inexpertos pueden construir la versión de la placa del módulo para entender como funciona y  ahorra dinero.

3. El hardware de Arduino

arduino1

 

4. El software de Arduino ( IDE )

ide

 

5. Que es un programa

Los Sketch Son los programas de Arduino que se escriben usando el IDE. En realidad no son más que archivos de texto que creamos cuando escribimos un programa.

Los archivos creados a partir de la versión UNO tienen la extensión “.ino” (Anteriormente se usaba la extensión “.pde”).

En otras plataformas se utilizan los términos programa, firmware o código para referirse a los Sketch.

Las librería Son un conjunto de funciones similares agrupadas en dos o más archivos de texto. Se utilizan para facilitar la escritura de los programas de Arduino.

Las librerías tienen siempre al menos dos archivos, uno de extensión “.h” (Header) y el otro con extensión “.cpp” (Clase). Esto es heredado del lenguaje de programación C y C++.

Existen cientos de librerías disponibles para diversos casos y escribir una propia es muy poco necesario, sin embargo, veremos un ejemplo en este curso.

6. Como es un programa

Estructura 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.

          void setup(){
          statements;
          }
          void loop(){
          statements;
          }
 Ambas funciones son requeridas para que el programa funcione.

setup() La función setup debería contener la declaración de cualquier variable al comienzo del programa. Es la primera función a ejecutar en el programa, es ejecutada una vez y es usada para asignar pinMode o inicializar las comunicaciones serie.

 setup(){
pinMode(pin, OUTPUT); //ajusta ‘pin’ como salida
}

loop() La función loop se ejecuta a continuación e incluye el código que se ejecuta contínuamente – leyendo entradas, activando salidas, etc. Esta función es el núcleo de todos los programas Arduino y hace la mayor parte del trabajo.

void loop() {
digitalWrite(pin, HIGH); //Activa ‘pin’
delay(1000); //espera un segundo
digitalWrite(pin, LOW); //Desactiva ‘pin’
delay(1000); //espera un segundo
}

Funciones Una función es un bloque de código que tiene un nombre y un grupo de declaraciones que se ejecutan cuando se llama a la función. Podemos hacer uso de funciones integradas como void setup() y void loop() o escribir nuevas.

Llaves {} Las llaves definen el comienzo y el final de bloques de función y bloques de declaraciones como void loop() y sentencias for e if. Las llaves deben estar balanceadas (a una llave de apertura { debe seguirle una llave de cierre }). Las llaves no balanceadas provocan errores de compilación.

void loop() {
statements;
}

Nota:El entorno Arduino incluye una práctica característica para chequear el balance de llaves. Sólo selecciona una llave y su compañera lógica aparecerá resaltada.

Punto y coma ; Un punto y coma debe usarse al final de cada declaración y separa los elementos del programa. También se usa para separar los elementos en un bucle for.

int x = 13;   //declara la variable ‘x’ como el entero 13

Nota: Olvidar un punto y coma al  final de una declaración producirá un error de compilación.

 

Bloques de comentarios /*…*/ Los bloques de comentarios, o comentarios multilínea, son areas de texto ignoradas por el programa y se usan para grandes descripciones de código o comentarios que ayudan a otras personas a entender partes del programa. Empiezan con /* y terminan con */ y pueden abarcar múltiples líneas.

/*
este es un bloque de comentario encerrado
no olvides cerrar el comentario
tienen que estar balanceados!
*/

Nota:Comentarios de una línea se usan a menudo despues de declaraciones válidas para proporcionar más información sobre qué lleva la declaración o proporcionar un recordatorio en el futuro.

 7. Tipos de variables (Global y local)

El Scope, Ámbito o Alcance nos dice en cuáles partes del programa se puede utilizar la variable. Esto va a depender de en qué parte del programa se declare la misma:

Una variable global es aquella que ha sido declarada al inicio del programa (antes de la función setup()). Puede ser empleada en cualquier parte del programa, incluso dentro de un bloque o función.

Una variable local se declara dentro de un determinado bloque, ya sea una función o un bucle.

8. Tipos de datos

Son las clases de datos que pueden almacenarse en una variable. Una variable para almacenar un número entero (tipo int) no es igual que una para almacenar un carácter (tipo char) o una lista de valores (tipo array).

Tipos de Datos  Arduino permite manejar varios tipos de datos. Los más usados son:

Byte: Almacena un número de 8 bits. (0 a 255).

Int: Almacena un número entero de 16 bits (-32,768 a 32,767).

Long: Un número entero de 32 bits (-2,147,483,648 a 2,147,483,647).

Float: Un número decimal de 32 (-3.4028235E+38 a 3.4028235E+38).

Char: Ocupa un byte y almacena un valor de carácter.

Arrays: Es una colección de valores que pueden ser accedidos con un número de índice.

9. Entradas & Salida digitales

pinMode(pin, mode) Se usa en void setup() para configurar un pin específico para que se comporte o como INPUT o como OUTPUT.

pinMode(pin, OUTPUT); //ajusta ‘pin’ como salida

Los pines digitales de Arduino estan ajustados a INPUT por defecto, por lo que no necesitan ser declarados explícitamente como entradas con pinMode(). Los pines configurados como INPUT se dice que están e un estado de alta impedancia. Hay también convenientes resistencias de pull-up de 20KOhm, integradas en el chip ATmega que pueden ser accedidas por software. A estas resistencias pull-up integradas se accede de la siguiente manera.

 pinMode(pin, INPUT); //ajusta ‘pin’ como entrada
digitalWrite(pin, HIGH); //activa la resistencia de pull-up

Las resistencias de pull-up se usarían normalmente para conectar entradas como interruptores. Los pines configurados como OUTPUT se dice que están en un estado de baja impedancia ypueden proporcionar 40 mA a otros dispositivos/circuitos.

Nota: Cortocircuitos en los pines de Arduino o corriente excesiva puden dañar o destruir el pin de salida, o dañar el chip ATmega. A menudo es una buena idea conectar un pin OUTPUT a un dispositivo externo en serie con una resistencia de 470 Ohm o 1KOhm.

digitalRead(pin) Lee el valor desde un pin digital especificado con el resultado HIGH o LOW. El pin puede ser especificado o como una variable o como una constante (0 – 13)

value = digitalRead(Pin); //ajusta ‘value’ igual al pin de entrada 

digitalWrite(pin, value) Devuelve o el nivel lógico HIGH o LOW a (activa o desactiva) un pin digital especificado. El pin puede ser especificado como una variable o constante (0 – 13).

digitalWrite(pin, HIGH); //ajusta ‘pin’ a HIGH

//Ejemplo de programa

int led = 13; //conecta ‘led’ al pin 13
int pin = 7; //conecta ‘pushbutton’ al pin 7
int value = 0; //variable para almacenar el valor leído
void setup(){
pinMode(led, OUTPUT); //ajusta el pin 13 como salida
pinMode(pin, INPUT); //ajusta el pin 7 como entrada
}
void loop() {
value = digitalRead(pin); //ajusta ‘value’ igual al pin de entrada
digitalWrite(led, value); //ajusta ‘led’ al valor del botón
}

10. Control de flujo

if es un estamento que se utiliza para probar si una determinada condición se ha alcanzado, como por ejemplo averiguar si un valor analógico está por encima de un cierto número, y ejecutar una serie de declaraciones (operaciones) que se escriben dentro de llaves, si es verdad. Si es falso (la condición no se cumple) el programa salta y no ejecuta las operaciones que están dentro de las llaves, El formato para if es el siguiente:

if (unaVariable ?? valor)
{
ejecuta Instrucciones;
}

En el ejemplo anterior se compara una variable con un valor, el cual puede ser una variable o constante. Si la comparación, o la condición entre paréntesis se cumple (es cierta), las declaraciones dentro de los corchetes se ejecutan. Si no es así, el programa salta sobre ellas y sigue.

Nota: Tenga en cuenta el uso especial del símbolo ‘=’, poner dentro de if (x = 10), podría parecer que es válido pero sin embargo no lo es ya que esa expresión asigna el valor 10 a la variable x, por eso dentro de la estructura if se utilizaría X==10 que en este caso lo que hace el programa es comprobar si el valor de x es 10.. Ambas cosas son distintas por lo tanto dentro de las estructuras if, cuando se pregunte por un valor se debe poner el signo doble de igual “==”

if… else viene a ser un estructura que se ejecuta en respuesta a la idea “si esto no se cumple haz esto otro”. Por ejemplo, si se desea probar una entrada digital, y hacer una cosa si la entrada fue alto o hacer otra cosa si la entrada es baja, usted escribiría que de esta manera:

if (inputPin == HIGH) // si el valor de la entrada inputPin es alto
{
instruccionesA; //ejecuta si se cumple la condición
}
else
{
instruccionesB; //ejecuta si no se cumple la condición
}

Else puede ir precedido de otra condición de manera que se pueden establecer varias estructuras condicionales de tipo unas dentro de las otras (anidamiento) de forma que sean mutuamente excluyentes pudiéndose ejecutar a la vez. Es incluso posible tener un número ilimitado de estos condicionales. Recuerde sin embargo que sólo un conjunto de declaraciones se llevará a cabo dependiendo de la condición probada:

if (inputPin < 500)
{
instruccionesA; // ejecuta las operaciones A
}
else if (inputPin >= 1000)
{
instruccionesB; // ejecuta las operacione B
}
else
{
instruccionesC; // ejecuta las operaciones C
}

Nota: Un estamento de tipo if prueba simplemente si la condición dentro del paréntesis es verdadera o falsa. Esta declaración puede ser cualquier declaración válida. En el anterior ejemplo, si cambiamos y ponemos (inputPin == HIGH). En este caso, el estamento if sólo chequeara si la entrada especificado esta en nivel alto (HIGH), o +5 v.

for se usa para repetir un bloque de sentencias encerradas entre llaves un número determinado de veces. Cada vez que se ejecutan las instrucciones del bucle si if… else (si….. sino ..) for  Arduino. vuelve a testear la condición. La declaración for tiene tres partes separadas por (;) vemos el ejemplo de su sintaxis:

for (inicialización; condición; expresión)
{
ejecutaInstrucciones;
}

La inicialización de una variable local se produce una sola vez y la condición se testea cada vez que se termina la ejecución de las instrucciones dentro del bucle.

Si la condición sigue cumpliéndose, las instrucciones del bucle se vuelven a ejecutar. Cuando la condición no se cumple, el bucle termina.

El siguiente ejemplo inicia el entero i en el 0, y la condición es probar que el valor es inferior a 20 y si es cierto i se incrementa en 1 y se vuelven a ejecutar las instrucciones que hay dentro de las llaves:

for (int i=0; i<20; i++) // declara i, prueba que es menor que 20, incrementa i en 1
{
digitalWrite(13, HIGH); // envía un 1 al pin 13
delay(250); // espera ¼ seg.
digitalWrite(13, LOW); // envía un 0 al pin 13
delay(250); // espera ¼ de seg.
}

Nota: El bucle en el lenguaje C es mucho más flexible que otros bucles encontrados en algunos otros lenguajes de programación, incluyendo BASIC. Cualquiera de los tres elementos de cabecera puede omitirse, aunque el punto y coma es obligatorio. También las declaraciones de inicialización, condición y expresión puede ser cualquier estamento válido en lenguaje C sin relación con las variables declaradas. Estos tipos de estados son raros pero permiten disponer soluciones a algunos problemas de programación raras.

11. Entradas & Salida análogas

analogRead(pin) Lee el valor desde un pin analógico especificado con una resolución de 10 bits. Esta función sólo trabaja en los pines analógicos (0 – 5). Los valores enteros devueltos están en el rango de 0 a 1023.

value = analogRead(pin); //ajusta ‘value’ igual a ‘pin’

Nota: Los pines analógicos al contrario que los digitales, no necesitan ser declarados al principio como INPUT u OUTPUT.

analogWrite(pin, value) Escribe un valor analógico usando modulación por ancho de pulso (PWM en inglés) a un pin de salida marcado como PWM. En los Arduinos más nuevos con el chip ATmega168, esta función trabaja en los pines 3, 5, 6, 9, 10 y 11. Los Arduinos más antiguos con un ATmega8 sólo soporta los pines 9, 10 y 11. El valor puede ser especificado como una variable o constante con un valor de 0 a 255.

analogWrite(pin, value);  //escribe ‘value’ al ‘pin’ analogico

12. Operadores

Es un elemento del programa que se aplica a uno o varios operandos en una sentencia o instrucción. Los operadores pueden ser Aritméticos, Compuestos, de Comparación y Lógicos. Operadores Aritméticos: Se utilizan para efectuar la suma, resta, multiplicación y división de dos operandos.

y = y+3;

x = x-7;

i = j*6;

r = r/5;

Operadores Aritméticos Compuestos: Combinan una operación aritmética con una asignación de variable. Son muy usados en bucles for.

x++; //lo mismo que x = x+1

x–; //lo mismo que x = x-1

x += y; //lo mismo que x = x+y

x -= y; //lo mismo que x = x-y

x *= y; //lo mismo que x = x*y

Operadores de Comparación: Se utilizan para comparar una variable o constante con otra. Se usan a menudo en bloques if para comprobar si un condición es cierta.

x == y; //x es igual a y ?
x != y; //x no es igual a y ?
x < y; //x es menor que y ?
x > y; //x es mayor que y ?
x <= y; //x es menor o igual que y ?
x >= y; //x es mayor o igual que y ?

Operadores Lógicos: Son usados a menudo en bloques if para comparar dos expresiones y devuelve TRUE o FALSE según el operador usado.

Hay tres operadores lógicos: AND (&&) OR (||) NOT (!).

if(x>0 && x<5){ /* AND: verdadero sólo si las dos expresiones son ciertas*/
}
if(x>0 || y>0) { /* OR: verdadero si al menos una expresión es cierta */
}
if(!(x>0)) { /* NOT: verdadero sólo si la expresión es falsa */
}

Sign In

Reset Your Password