Professional Documents
Culture Documents
1. INTRODUCCIÓN
Arduino puede tomar información del entorno a través de sus pines de entrada de toda
una gama de sensores y puede afectar aquello que le rodea controlando luces, motores
y otros actuadores. El microcontrolador en la placa Arduino se programa mediante
el lenguaje de programación Arduino(basado en Wiring) y el entorno de desarrollo
Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse
sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y
comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP).
Las placas pueden ser hechas a mano o compradas montadas de fábrica; el software
puede ser descargado de forma gratuita. Los ficheros de diseño de referencia (CAD)
están disponibles bajo una licencia abierta, así pues es libre de adaptarlo a cualquier
necesidad.
Fuente: http://architecnologia.blogspot.com.es/
La mayoría de los microcontroladores modernos no solo integran los elementos básicos
mencionados anteriormente, sino que pueden llegar a tener muchas más partes:
memoria RAM, memorias flash, temporizadores, decodificadores, conversores A/D y
D/A, controladores (DMA, USB, Ethernet, PCI, etc.), UARTs (Universal Asynchronous
Receiver-Transmitter).
Un microcontrolador puede hacer funciones tan simples como hacer titilar una luz o
manejar máquinas y robots complejos. Por su versatilidad están presentes en muchos
aparatos cotidianos: ordenadores, electrodomésticos, reproductores multimedia,
automóviles, dispositivos de red, etc., incluso en las máquinas y robots industriales.
Fuente: http://architecnologia.blogspot.com.es/
Pero Arduino también integra otras versiones de ATmel (SAM3x Series) que poseen un
núcleo ARM Cortex-M son de 32 bits basados en la arquitectura RISC ARMv7-M
desarrollada por ARM Holdings.
Fuente: http://architecnologia.blogspot.com.es/
En el mercado existen diversos productos. Unos son oficiales y otros son no oficiales
(compatibles de otros fabricantes, por ejemplo SainSmart, Brasuino, Freeduino). Lo que
varía de uno a otro, a parte del precio, son las características del microcontrolador, el
número de patillas digitales, entradas analógicas disponibles, cantidad de memoria.
Algunas de las versiones oficiales de placas son: Leonardo, Uno, Due, Mega, Flo, Nano,
LilyPad, Pro, Esplora, Micro, entre las más conocidas.
Entre las más destacadas o utilizadas en un mayor cantidad se encuentran las Uno,
Due, Mega, LilyPad.
Fuente: http://architecnologia.blogspot.com.es/
Por otro lado también existen los accesorios o “shields”, que son placas o componentes
para complementar la placa arduino. Entre los shields podemos encontrar dispositivos
GPS, placas Ethernet, pantallas LCD, breadboard o protoboard, tarjetas basic I/O,
cámaras, bluetooth, etc.
Fuente: Autores
Botón de Reset.
Puerto USB.
Pines digitales
Entradas analógicas.
ATmega328.
Fuente: http://architecnologia.blogspot.com.es/
Para que funcione necesitamos la placa de Arduino, un cable USB para conectarla al
PC, el software de desarrollo, una fuente de alimentación (también puede ser una pila
que dé el voltaje necesario, aunque si no se desconecta del PC no es necesario) y los
periféricos, ya sean analógicos o digitales.
En la fig. , las conexiones POWER o potencia son muy importantes. Como dijimos
anteriormente la placa de Arduino puede conectarse al USB del ordenador o PC y
alimentarse desde ahí, pero si se va a utilizar sin ordenador se puede emplear una
fuente de alimentación conectada a la toma destinada a ello o emplear pilas. Si se lo
hace mediante baterías, se puede conectar un borne de la batería a Vin, que es la
entrada de voltaje para alimentar arduino y el otro borne a GND (tierra). Si la placa se
está alimentando por USB o por la toma de Lafuente de alimentación, los pines Vin y
GND pueden ser utilizados también para obtener corriente de ellos.
Fuente: http://architecnologia.blogspot.com.es/
Las conexiones analógicas de la placa permiten trabajar con valores intermedios, ya
que el sistema digital solo reconoce un valor bajo (interpretando como cero) o el valor
alto (interpretado como 1), todo dependerá del umbral de voltaje de la familia lógica
empleada por el chip. En cambio, las conexiones analógicas son capaces de identificar
todos los posibles valores que pueda haber entre el voltaje máximo y el mínimo. El
microcontrolador transforma esos valores en formato binario para trabajar internamente
con ellos. Para ello emplea un código de 10 bits, oscilando entre 0 y 1023 para
representar los posibles valores entre 0 y 5v (o los valores correspondientes del modelo
de placa que tengamos). Así por ejemplo 65 equivale a 0.3 v, 655 representaría los 3.2
v, 850 es 4.15v y así con los demás valores.
El resto de pines puede variar según la placa, pero normalmente pueden aportarnos
voltajes para manejar nuestros componentes electrónicos utilizados en el proyecto.
Otro pin interesante es AREF, que proporciona un voltaje de referencia para los pines
analógicos. Rx es para recibir y Tx para transmitir datos a través de un puerto serie TTL.
Reset es capaz de resetear la memoria del microcontrolador, SDA y SCL también están
presentes en algunas placas para dar soporte al protocolo I2C/TWI, incluso podemos
encontrarnos con placas que tengan conexiones para interrupciones.
Para que un microcontrolador cumpla las funciones, tan solo hay que crear un programa
y colocarlo en la memoria del microcontrolador para que comience a ejecutarlo. Para
crear este código fuente se necesita un compilador y otros elementos q se integran en
un IDE (Integrated Development Environment) o entorno de desarrollo integrado. El
entorno de desarrollo integrado gratuito de la plataforma es Arduino IDE, compatibles
con Linux, Windows y Mac OS X.
La ventana de Arduino IDE consta de la barra de menú arriba, unos botones de acceso
rápido bajo el menú, la zona en blanco es el eitor de texto donde se escribe el código,
la zona verdosa es el área de mensajes y finalmente existe una zona negra que
representa la consola. En el menú herramientas, se puede seleccionar el tipo de placa
que se utiliza, así como el tipo de programador y puerto serial. Solo si se relaciona los
valores adecuados, el programa o codigo fuente (sketch) se transfiere correctamente al
hardware
Fuente: http://architecnologia.blogspot.com.es/
Casi todo el trabajo lo podemos realizar gracias a los botones de acceso rápido de la
interfaz. De izquierda a dercha son: Verificar (comprueba la sintaxis del código fuente),
Cargar (transmite el sketch a la placa arduino), Nuevo (abre un nuevo sketch), Abrir
(podemos abrir sketch ya realizados), Guardar (para guardar nuestro sketch actual) y
mas separado del resto se encuentra Monitor serie (es muy importante para depurar el
código, ya que muestra mensajes o datos enviados desde/hacia el puerto serie o USB).
Hay q recordar que el botón de Monitor serie, puesto que servira para recibir datos de
la placa Arduino en muchos ejemplos prácticos .
La barra de menús nos ofrece lasopciones típicas de casi la mayoría de ventanas con
algunas particularidades de Arduino IDE (Archivo, Editar, Sketch, Herramientas y
Ayuda). En el menú archivo, se puede destacar las opciones Sketchbook (librería de
sketches ya guardados), Ejemplos (contiene ejemplos prácticos de sketch ya hechos) y
Preferencias (opciones, tamaño de letra del IDE, modos, asociación de extensiones,
directorio de trabajo, etc.).
Saltando al menú Editar resaltaremos Copiar para el Foro (copia el código del sketch en
un formato especial para publicarlo en la página oficial de arduino),
Comentar/Descomentar (podemos comentar o quitar comentarios de bloques de código
para limpiarlo), ya que el resto de opciones son muy comunes. En el menú Sketch
podemos Verificar/compilar el código, agregar archivos, importar librerías, etc., mientras
que en herramientas podemos seleccionar Formato automático (tabular y organizar el
código escrito), archivar el sketch (crea un fichero comprimido con todoslos códigos
necesarios para un sketch que dispone de diversos códigos), Grabar secuencia de inicio
(graba la secuencia del bootloader de Arduinoen el chip microcontrolador, para qye este
sea compatible con Arduino, por ejemplo por si hemos creado nuestra propia placa
Arduino o hemos reemplazado el microcontrolador de una placa arduino por otro( y
otros).
Para finalizar con los menús, ahora toca describir ayuda, en el que podemos encontrar
información general.
2. Lenguaje de programación
Existen lenguajes de alto nivel (Arduino, C, C++, Java, Python, etc.) y bajo nivel (ASM
o ensamblador y código máquina). Los de alto nivelson más fáciles y entendibles para
los humanos, yaque tienen una estructura sintáctica similar a la que empleamos en
nuestro lenguaje. Los de bajo nivel ejercen un control directo sobre el hardware y están
estrechamente relacionados con la estructura o arquitectura del mismo, pero son
dificiles por ser representados por código binario. En la actualidad existen loslenguajes
graficos, mucho mas sencillos, intuitivos y fáciles para los humanos al componerse de
bloques gráficos en forma de diagramas de flujo que representan el programa.
Fuente: http://architecnologia.blogspot.com.es/
Arduino permite ser programado en otros lenguajes de programación como: C, C++, C#,
Objetive-C, Java, Matlab, Perl, PHP, Processing, Python, Ruby, VBScript, Visual
basic.NET, etc.
Este lenguaje (como otros) se debe traducir en lenguaje máquina para que le
microcontrolador lo entienda, es decir, unos y ceros. El código binario tampoco lo
entiende el microcontrolador, ya que es un circuito y como tal solo comprende los pulsos
eléctricos. Así que un cero será un voltaje bajo y un uno un voltaje alto, así es como los
chips trabajan.
El lenguaje nos servirá para escribir un programa o sketch, que no es más que una serie
de instrucciones, para ordenarle al chip lo que tiene que hacer.
Ahora bien, ¿de qué se compone el lenguaje Arduino? Pues como cualquier otro
lenguaje de programación se compone de funciones, variables, tipos de datos,
operadores, sentencias, entradas y salidas, etc.
|0 → Carácter nulo.
ARITMÉTICOS
= → Igual o asignación
+ → Suma
- → Resta
*→ Multiplicación
/ → División
% → Módulo
COMPARACIÓN
== → Igual que
OPERADORES
!= → Distinto
> → Mayor que
< → Menor que
>= Mayor o igual que
<= → Menor o igual que
BOOLEANOS
&& → AND
|| → OR
! → NOT
& → AND entre bits
| → OR entre bits
^ → XOR entre bits
~ → NOT entre bits
<< → Desplazamiento de bits a la izquierda
>> → Desplazamiento de bits a la derecha
COMPUESTOS
++ → Incremento
̶ → Decremento
+= → Suma compuesta
-= → Resta compuesta
*= Multiplicación compuesta
/= → División compuesta
|= → Asignación con O (OR) lógico
&= → Asignación con Y (AND) lógico
INPUT → Entrada
CONSTANTES
OUTPUT → Salida
true → Verdadero
false → Falso
int → Entero
word → Palabra
sizeof() → Tamaño
sin(rad) → Seno
cos(rad) → Coseno
tan(rad) → Tangente
Fuente: http://architecnologia.blogspot.com.es/
La memoria RAM y flash de las placas Arduino es limitada. Según el modelo puede
tener más o menos memoria, esto interfiere en lo complejo que pueda ser el programa.
Los datos, números, caracteres, etc., ocupan como mínimo 8 bits (1 byte), algunos como
los enteros son 2 bytes, doublé, long y coma flotante hasta 4 bytes. Por eso, hay que
tener en cuenta de cuanta memoria dispone y cuantos de estos datos se han incluido
en el programa. Las constantes se almacenan en la flash y las variables en la RAM. Por
ejemplo, Arduino UNO tiene 32KB de flash (32X1024 = 32768 bytes) y una RAM de 2KB
(2X1024 = 2048 bytes). A esta capacidad habrá que descontarle las direcciones de flash
empleadas por las sentencias del programa y la memoria RAM ocupada por el arduino.
Un programa Arduino debe constar de unas partes fundamentales, como las estructuras
de preparación y ejecución, las sentencias, etc.
Tosdo esto se lo verá mejor en los ejemplos prácticos, para ellos se estudiara un código
muy simple el de la fig. :
Fuente: http://architecnologia.blogspot.com.es/
En la Fig. vemos un encabezado a modo de comentario que nos introduce en una breve
descripción del sketch. Seguidamente viene la línea de preparación (void setup()), con
la que se inicia el programa y se ejecutan todas las sentencias que haya en su interio
(es decir, entre {…}). Finalmente la sentencia que determina la funcionalidad de este
ejemplo concreto, emitir un tono por el pin 8 con una frecuencia de 320 Hz.
El código fuente debe cumplir una serie de condiciones para considerarlo óptimo, que
son: