Semana 1 Estructura y Programacion de Arduino - NestorPlasencia/hackspace-electronica GitHub Wiki
Estructura de Arduino
Vamos a conocer las partes que conforman nuestra tarjeta Arduino.
Pero antes conozcamos algunos conceptos de los sistemas controlados por microcontroladores.
Entradas y Sensores:
Las entradas son señales que brindan información a un centro de procesamiento. Como por ejemplo un mouse o un teclado son entradas o inputs de un ordenador. Arduino utiliza como entradas a los sensores.
Los sensores toman del mundo físico señales como
- Temperatura
- Luz
- Distancia
- Presencia, entre otras.
Y las convierten en señales de corriente o voltaje que pueden ser interpretadas y procesadas por Arduino y otros microcontroladores.
Existen otros componentes que ingresan información al microcontrolador, pero que no son necesariamente sensores, por ejemplo
- Un botón que ingresa un valor binario
- Un potenciómetro que ingresa múltiples valores en un rango
- O un teclado numérico que ingresa valores personalizados
Salidas y Actuadores:
Las salidas son señales que provienen de un centro de procesamiento. Como por ejemplo un monitor o un parlante son salidas o outputs de un ordenador. Arduino utiliza como salidas a los actuadores.
Los actuadores convierten las señales de corriente o voltaje en señales físicamente útiles como:
- La Luz de un led
- Los mensajes en un display
- El giro y movimiento de un motor
- y los sonidos en un parlante.
Microcontrolador:
Son circuitos electrónicos que sirven para manipular, interpretar y transformar las señales de voltaje y corriente provenientes de los sensores o entradas, procesar esta información para tomar las decisiones y generar acciones en los actuadores o salidas.
Arduino puede tomar información del entorno a través de sus entradas, para esto posee toda una gama de sensores, y puede afectar aquello que le rodea controlando luces, motores y otros actuadores.
El microcontrolador en la tarjeta Arduino es el Atmega328p. Cuando un proyecto ha sido prototipado, en la implementación se puede solo utilizar el microcontrolador sin necesidad de utilizar toda la tarjeta Arduino, permitiendo su reutilización.
Señales electrónicas
En electrónica se trabaja con variables que se toman en forma de voltaje o corriente, éstas se pueden denominar señales electrónicas.
Las señales pueden ser de dos tipos:
Variables digitales
Las variables digitales también llamadas variables discretas. Se caracterizan por tener dos estados diferenciados, es por esto que se suele llamarlas variables binarias. Un ejemplo son las transmisiones de datos a través de un cable de red.
Variables Analógicas
Son aquellas que pueden tomar un número infinito de valores comprendidos entre dos límites. La mayoría de los fenómenos de la vida real son señales de este tipo.(el sonido, la temperatura, la voz) Un ejemplo de una variable analógica es el información enviada a un altavoz.
Estructura de Arduino
Ahora que tenemos los conceptos de entrada y salida, y la diferencia entre señal analogica y digital, veamos como esta estructurada la tarjeta Arduino UNO
- El botón de reset, reinicia nuestra tarjeta para empezar a correr el programa nuevamente.
- El puerto USB, comunica la tarjeta con el computador para compilar el programa en el microcontrolador
- La fuente de alimentación, alimenta con energía a nuestra tarjeta cuando esté desconectada del computador.
- Los pines Digitales funcionan tanto como salidas y entradas digitales,
- Un pin es un punto de conexión entre el microcontrolador y su entorno, los pines digitales reciben o envían voltajes de 5 o 0 voltios únicamente.
- El controlador, es el núcleo de la tarjeta, aquí se procesa toda la información.
- Las entradas analogicas, sirven unicamente como entradas de una variable analógica.
- Por último los pines de energía que tienen salidas de 5V y 3.3V, así como pines de tierras o GND.
Con esto hemos finalizado el presente artículo, los espero en el siguiente para aprender más de Arduino.
Programación en Arduino
Vamos a aprender sobre la programación en Arduino.
La programación en Arduino, es muy similar a la de muchos otros lenguajes de programación esencialmente al lenguaje C, del cual hereda muchas funcionalidades.
Para programar, siempre se sigue la estructura de un algoritmo, pero ...
¿ Que es un algoritmo ?
Un algoritmo es un conjunto de instrucciones detalladas paso a paso para resolver un problema o completar una tarea. Los algoritmos pueden ser cosas muy cotidianas como, una receta para cocinar, el método usado en resolver una suma, o el proceso de doblar una camisa, para todas estas actividades implícitamente realizamos pasos que hemos aprendido con el pasar de los años. En Arduino, escribiremos algoritmos que le indicarán al microcontrolador cómo realizar una tarea. Por ejemplo para hacer parpadear un led.
Esta tarea posee los pasos siguientes.
- Encender el led
- Esperar
- Apagar el led
- Esperar
Para que este conjunto de pasos se ejecutan continuamente, anidamos los pasos en un bucle o ciclo, un bucle realiza la repetición de un conjunto de instrucciones infinitamente, hasta cumplir una condición o definiendo previamente un número de veces.
En la programación de microcontroladores es normal que el programa principal se repita infinitamente hasta que se resetee el programa o se desconecte el microcontrolador.
Variables
Una variable es la manera de codificar, representar y almacenar un valor o un valor dentro de un programa y así facilitar su manipulación. Las variables son almacenadas en la memoria del microcontrolador. Para que Arduino consiga realizar las tareas que le asignamos necesita el procesamiento e interpretación de estos datos.
byte a = 5;
Hagamos una abstracción.
Consideremos a las variables como los cajones de un armario, cada uno tiene una etiqueta describiendo el contenido, acompañado de un tipo que indicará el número de cajones necesarios para almacenar un contenido y dentro se encuentra el valor de la variable como el contenido del cajón.
Tipos de dato en Arduino
Arduino considera los tipos de datos siguientes:
Entre los más importantes y usados tenemos:
- El tipo boolean que indica verdadero o falso.
- El tipo int para almacenar números enteros.
- El tipo float para números con decimales, no enteros
- El tipo string que es una secuencia y agrupación de datos de tipo char. Se utiliza para almacenar cadenas de texto.
- y los array que es una colección de datos de un mismo tipo.
Array
Un array es una colección de variables de un mismo tipo, que comparten la misma etiqueta o nombre.
Declaración
La sintaxis para declarar un array es simple solo agregamos corchetes al nombre de la variable, tener en cuenta que este array no posee un tamaño determinado.
Variable
int Pin;
int Pin = 5;
Array
int Pins[];
Si queremos que este array tenga un número determinado de elementos colocamos tal numero dentro de los corchetes.
int Pins[3];
Para agregar elementos en la declaración del array, los colocamos entre llaves separados por comas.
int Pins[3] = {1,2,3};
Para acceder a cada uno de los elementos del array. sólo hay que colocar el índice de este entre los corchetes, recordar que el primer índice del array es 0.
Pins[índice];
Funciones
Una función es un bloque de código que tiene un conjunto de instrucciones que realizan una tarea específica. Estas instrucciones son ejecutadas cuando la función es invocada dentro de un programa principal.
Poseen la siguiente estructura
type name (parámetros)
{
Instrucción 1;
Instrucción 2;
}
El tipo de dato es el valor que devolverá la función a un programa principal, por ejemplo 'int' se utilizará cuando la función devuelve un dato numérico de tipo entero.
Si la función no devuelve ningún valor entonces se colocará delante la palabra “void”, que significa “vacío”.
Después se escribe el nombre de la función o etiqueta con el que se identifica y con el cual será invocada dentro del programa principal.
Entre paréntesis se escribirán, si es necesario, los parámetros que se deben pasar a la función. Un parámetro es información que se brinda a la función para que pueda ser procesada.
Los parámetros son declarados con el tipo de dato al que pertenecen y son separados con comas.
Todas las instrucciones pertenecientes a la función son declaradas dentro de dos corchetes que delimitan su alcance.
Si la función retorna un valor al programa principal, se utiliza la palabra clave return.
int suma (int a, int b)
{
return a+b;
}
Sintaxis básica de un programa en Arduino La estructura básica de un programa en Arduino es bastante simple y se compone de un mínimo de dos partes. La de configuraciones y el programa principal.
La primera función es void setup() es la parte encargada de las configuraciones. Es la primera función a ejecutar al correr el programa en el microcontrolador, se ejecuta sólo una vez, y se utiliza para configurar o inicializar los pines en un modo de trabajo específico, de entrada o salida, además de la configuración de la comunicación y otras.
void setup ()
{
Configuración 1;
Instrucción 1;
}
La segunda es void loop(), como mencionamos antes la repetición constante de un grupo de instrucciones es fundamental en la programación en microcontroladores. void loop() contiene las instrucciones que se ejecutaran continuamente como, lectura de entradas, señales de salida, etc. Esta función es el núcleo de todos los programas de Arduino y la que realiza la mayor parte de las tareas.
void loop ()
{
Instrucción 2;
Instrucción 3;
}
Sintaxis
Algunos elementos de sintaxis a tener en cuenta:
Llaves
Las llaves sirven para definir el inicio y el final de un bloque de instrucciones. Se utilizan para los bloques de programación setup(), loop(), funciones de usuario, etc.
type function()
{
instrucciones;
}
Punto y coma
El punto y coma “;” se utiliza para separar instrucciones y así poder ser interpretadas y compiladas. Muchas veces olvidamos de colocarlos y esto nos dará error al momento de compilar el programa.
int x = 13;
Línea de comentarios
Una línea de comentario empieza con // y terminan con la siguiente línea de código, las línea de comentarios son ignoradas por el programa y no ocupan espacio en la memoria.
// Esto es un comentario
Una línea de comentario se utiliza a menudo después de una instrucción, para proporcionar más información acerca de lo que hace ésta o para recordarla más adelante.
Con esto hemos finalizado el presente artículo, los espero en el siguiente para aprender más de Arduino.