¿Que es Arduino?

OPENSOURCECOMMUNITY

Arduino es una plataforma de prototipado electrónico programado, basado en un IDE, la sigla traducida seria Entorno de Desarrollo Integrado – WiKi, de Software Libre, osea un programa sin ninguna restricción de uso ni de modificación, y una placa electrónica de Hardware Libre que también puede ser modificada según lo que uno precisa, sin ninguna limitación.

La pagina en español no dice algo parecido pero mas artístico:

Arduino es una herramienta para hacer que los ordenadores puedan sentir y controlar el mundo físico a través de tu ordenador personal. Es una plataforma de desarrollo de computación física de código abierto, basada en una placa con un sencillo microcontrolador y un entorno de desarrollo para crear software para la placa.

Y nos lo dice artisticamente, precisamente porque Arduino ha generado una nueva filosofía artística: Las Artes Electrónicas. Y ya hay carreras en esta rama, por ejemplo ya hay cursos en el  Centro Cultural San Martín.

El Hardware

La placa

La parte fisica de la plataforma Arduino, la placa en si mismo, consta de muy pocas piezas, que hasta pueden ser ensambladas en casa, siendo la parte mas importante el microcontrolador, por lo general un Atmega328 (en los Arduinos Nano y Uno) que es el encargado de procesar el programa cargado en el y controlar los procesos internos (contadores, temporizadores, interrupciones, etc) y los externos por medio de los 20 pines que posee. De estos 20 pines 6 son entradas analógicas (pueden leer un voltaje de entre 0v y 5v, dividido en 1024 partes), 14 son entradas y salidas digitales (en algunos lugares dicen que un pin que es configurado como salida digital queda así, y esto es mentira, estos pines puede alternar entre entradas o salidas infinidad de veces dentro del mismo programa). De estos 14 pines I/O 6 de ellos pueden entregar una salida PWM (Salida con Ancho de Pulso Modulado), osea que simulan una salida analógica, con una salida que va de 0 a 255.

Ademas algunos de estos pines pueden ser configurados para la comunicación, ya que el Atmega328 soporta municacion I²C, SPI y UART (todos los pines PWM pueden convertirse en UART por medio de la librería SoftwareSerial).

La placa ademas consta de un adaptador USB a UART para una fácil carga de los programas, por medio del auto reset que activa el Bootloader pre cargado en el microcontrolador. Este es el verdadero exito de Arduino. Tal vez muchos de ustedes hayan escuchado, o incluso hayan tratado de programar un PIC, algo que se dificultaba, no solo por el lenguaje complejo con el que se programan, sino porque se requería de un aparato especial capaz de cargar en la memoria del PIC el archivo .hex que habíamos compilado: El programador.

Arduino cuenta con un chip con conexión USB que une al Atmega con la PC, y dentro de la memoria del microcontrolador hay un pequeño software que se encarga de grabarse en la memoria el programa que le enviá la PC desde el IDE. Este chip solía ser un FTDI FT232 (En el Arduino Nano sigue siendo este chip) aunque en las versiones mas modernas de Arduino (Uno rev2 y rev3, Mega rev2 y rev3) se lo reemplazo por otro controlador Atmega mas chico, de la serie Atmega XXU2. Estos microcontroladores poseen una entrada USB nativa y no necesitan de ningún adaptador, y en su interior hay un pequeño programa para que la PC lo detecte y actué de puente entre la PC y el microcontrolador principal. Este cambio no afecta en nada al uso que se tenia con los chip’s antiguos, pero si brinda mas opciones, ya que modificando el programa que esta dentro del “puente USB” podemos hacer que la PC detecte al Arduino como un HID (mouse o teclado) o un dispositivo MIDI, etc. Ademas hay Arduinos con microcontroladores que disponen de conexión USB nativa, como los Atmega usados de puente PC-Arduino, pero con la potencia de un Atmega328, como es el caso del Arduino Leonardo, que usa un ATmega32U4 o el Arduino Due, con microcontroladores ARM Cortex M3 un micro AT91SAM3X8E. Para mas información de la inmensa cantidad de placas Arduino, visitar la pagina Oficial de Productos Arduino.

La placa ademas dispone de otros pequeños componentes, como el cristal del oscilador de 16Mhz, los reguladores de tensión, un Led de encendido, dos Led’s de comunicación Tx/Rx, y un Led conectado al pin 13 que suele usarse para la primer practica de Arduino: El tan mentado “Hello World”.

Los Shields

Arduino nos dice:

Los “Shields” son placas que pueden ser conectadas encima de la placa Arduino extendiendo sus capacidades. Los diferentes “shields” siguen la misma filosofía que el conjunto original: son fáciles de montar, y baratos de producir.

Por la filosofía de Arduino de estandarización de las placas, es posible armar una placa de expansión que se puede montar encima del Arduino, porque tenemos la seguridad que todas son iguales y que los pines son los mismos.  Los shields son “escudos” que le brindan nuevas características al arduino. Por ejemplo hay shields del tipo potencia (control de motores, relays, lamparas, etc), de comunicación (ethernet, wifi, zigbee, etc) de prototipado (protoboards, para atornillar cables, etc).

A continuación vas a ver dos Arduinos distintos, un Mega y un Uno, de los cuales el Mega es físicamente mas grande y tiene mas salidas, sin embargo en los dos funciona el mismo shield Ethernet+microSD:

 

El pase de diapositivas requiere JavaScript.

El Software.

La parte “suave” esta divida en dos: El IDE, o entorno de desarrollo, y el programa que nosotros vamos a escribir.

El IDE Arduino.

ide-arduino-ejemplo-comentarios

En este pantallazo se puede ver la apariencia del IDE Arduino, y una breve explicación del mismo.

Para saber como instalarlo y usarlo mira ¿Como instalar y usar el IDE Arduino en GNU/Linux?.

Nuestro programa.

Programar un Arduino es muy sencillo, por mas que no tenga conocimientos en programación, si se dispone a aprender.

El lenguaje de programación es básicamente un C, pero no es C. Es Arduino, un pseudo-C.

Pero si sabemos algo de C vamos a ver de que es muy similar, por mas de que Arduino tiene sus palabras claves, por tratarse de un microcontrolador el que programamos hay cosas que en el C normal no existen.

Lo primero que tenemos que saber (y que se ve en la foto) es que Arduino necesita obligatoriamente dos funciones: setup y loop.

El Arduino va a ir leyendo el programa de arriba hacia abajo, por eso el void setup se escribe arriba y en el se escriben las configuraciones, ya que esta funcion solo se va a ejecutar al principio. Aqui se escribe, por ejemplo, que inicie la comunicación serial (para imprimir información en el monitor serial) y la configura.

Después sigue el void loop. Como su nombre lo dice esta función es un bucle, que Arduino va a leer y releer una y otra vez hasta que se lo apague. Esta función viene pre-diseñada, pero para los que saben de otros lenguajes verán que no es ni mas ni menos que una función en la cual la condición seria un while 1=1. Pero Arduino nos la hace fácil y ya esta hecho. Arduino no nos limita a estas dos funciones, podemos crear otras y que sean llamadas ante algún proceso.

Al igual que en C, si tenemos que definir variables e iniciarlas en algún valor, esto se hace antes de las dos mínimas funciones, donde ademas se importan las librerías necesarias para las distintas necesidades, como por ejemplo la librería Wire.h para las comunicaciones, o LiquidCrystal.h para el control de pantallas LCD.

Descripción del Lenguaje Arduino.

Como en C y muchos otros lenguajes, disponemos de las siguientes Estructuras de Control:

  1. if (comparador si-entonces)
  2. if…else (comparador si…sino)
  3. for (bucle con contador)
  4. switch case (comparador múltiple)
  5. while (bucle por comparación booleana)
  6. do… while (bucle por comparación booleana)
  7. break (salida de bloque de código)
  8. continue (continuación en bloque de código)
  9. return (devuelve valor a programa)

Los datos que maneja pueden ser de los siguientes tipos:

  1. boolean (booleano)
  2. char (carácter)
  3. byte
  4. int (entero)
  5. unsigned int (entero sin signo)
  6. long (entero 32b)
  7. unsigned long (entero 32b sin signo)
  8. float (en coma flotante)
  9. double (en coma flotante de 32b)
  10. string (cadena de caracteres)
  11. array (cadena)
  12. void (vacío)

Para el manejo de los pines I/O digitales las funciones son las siguientes:

  1. pinMode() (configuramos el pin como entrada o salida)
  2. digitalWrite() (escribimos en el pin digital un 0 lógico, LOW, o un 1 lógico, un HIGH)
  3. digitalRead() (leemos el pin digital para saber si esta en LOW o HIGH)

Para el manejo de los pines analógico:

  1. analogReference() – referencia analógica
  2. analogRead() – lectura analógica
  3. analogWrite() – escritura analógica, por modulación de ancho de pulso

Hay muchas mas cosas, pero estas son las básicas. Para mas información visitar la Referencia Oficial de Arduino.

Bueno ya sabiendo un poco del lenguaje podemos escribir el tan mentado “Hola Mundo”  que en una placa Arduino seria hacer parpadear un Led (bastante básico no?).

Empecemos con las declaraciones, sabemos que hay un Led conectado en el pin 13, así que deberíamos hacer es declarar que ledPin es igual a 13 (aca ledPin no significa nada, podríamos poner pataLed y seria lo mismo) y como 13 es un numero entero (y no existe el pin 13,4 por ejemplo…) lo que tenemos que escribir es:

int ledPin=13;

No no s olvidemos del punto y coma (;) del final de la linea, porque C toma a ese signo como final de linea y si no lo ponen les saldria un error. El siguiente error:

error-arduino

Ya no hay mas cosas que declarar y ninguna librería que importar, así que pasamos a la primera función que es el estupre donde configuramos, si no tenemos cosas que configurar lo dejamos en blanco, pero si tenemos algo que configurar y es que el ledPin es una salida:

void setup() {
pinMode(ledPin, OUTPUT);
}

Listo! Ahora ya esta todo configuradito. ¿Que nos falta? Y.. Que parpadee! Bueno hay que hacer la lista de que significa parpadear:

  1. Prenderse.
  2. Mantenerse prendido.
  3. Apagarse.
  4. Mantenerse apagado.
  5. Repetir.

En arduino prender el Led hay que poner un 1 logico en el ledPin, y eso se escribe asi:

digitalWrite(ledPin, HIGH);

Que se mantenga prendido se podria escribir de varias maneras, pero lo mas facil seria pensar en que “espere” un rato para hacer otra cosa, ese “espere un rato” se escribe con delay(tiempo en milisegundos); osea que si queremos que se encienda un segundo seria asi:

delay(1000);

Para que se apague hay que decir que ponga un cero lógico, un cero seria que no hala tensión en la salida, y si no hay tensión se apaga!

digitalWrite(ledPin, LOW);

Volvemos a esperar un segundo con la función de delay, y como es un bucle se va a volver a repetir.

El programa entero para esto seria este:

int ledPin = 13;

void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Si lograron que el led de la placa parpadee no crea que ha conquistado el mundo de la programación, pero siéntase feliz de que dio el primer paso en el mundo de la programación física.

El pase de diapositivas requiere JavaScript.

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s