Como programar arduino parte 2
En esta parte hablare sobre el hardware de arduino y del
microcontrolador que tiene como corazon. La placa basicamente solo
presta apoyo al microcontrolador extendiendo los pines de los conectores
para que pueda conectar hardware en ellos y proporcionar un enlace USB
para descargar los sketch.
Tambien hablare brevemente del lenguaje C para programar arduino, algo
que se profundizara cuando se vaya poniendo proyectos mas complejos.
Microcontroladores
El corazon de arduino es un microcontrolador el resto de la placa se
ocupa para facilitar la alimentacion y permitir que se comunique con la
computadora . Lo que se nos da cuando compramos un arduino es un pequeño
ordenador en un chip. Este tiene todo y mas de lo que contenia las
primeras computadoras caseras. Dispone de un procesador, un Kilobyte de
RAM para contener datos, unos cuantos kilobytes de memoria EPROM o de
memoria Flash para contener nuestros programas y puertos de
entrada/salida.
Las entradas pueden leer señales digitales y señales analogicas estas
nos permite conectar innumerables tipos de sensores de luz, temperatura,
sonido, etc. Las salidas tambien pueden ser digitales o analogicas
¿Que hay en una placa arduino?
Fuente de alimentacion
Debajo del conector de USB se encuentra el regulador de tension de 5v
estabilizando cualquier voltaje en un rango de 7 a 12 volts
Conexiones electricas
Cada patilla esta identificada con su nombre impreso junto a cada uno de
sus pines. El primero es el Reset (reiniciar), este hace que el
programa del microcontrolador comience desde el principio. El pin Reset
permite reiniciar el microcontrolador momentaneamente estableciendo este
pin alto ( conectandolo a +5v ). Aunque no esta especificado
concretamente en las especificaciones de arduino la corriente que puede
proporcionar no deben de pasar de 250 mA por seguridad para que la
tarjeta no sufra algun daño.
Entradas analogicas
Especificado como ANALOG IN esta marcado con los numeros 0 a 5. Estos
seis pines se pueden utilizar para medir el voltaje que se les a
conectado de forma que el valor se pueda utilizar en los sketches. Si
bien aparecen etiquetadas como entradas analogicas, estas conexiones
pueden utilizarse tambien como entradas/salidas digitales.
Conexiones digitales
Cambiando al conector superior y comenzando por el lado derecho. Tenemos
pines denominados Digital 0 a 13. Estos se pueden utilizar como
entradas/salidas digitales, si se utilizan como salida proporcionan 5
volts cuando estan en "1" y 0 volts cuando estan en "0". La corriente
maxima que pueden suministrar son 40 mA. Mas que suficiente para
encender un led estandar, pero no para manejar directamente un motor
electrico por pequeño que sea.
Cuando estan como entradas cuyo voltaje que se le debe proporcionar para indicar que esta recibiendo un bit es 5 volts.
Algunas de las conexiones digitales (3, 5, 6, 9, 10 y 11) estan
rotuladas con PWM. Estas se pueden utilizar para proporcionar un voltaje
de salida variable.
Otras conexiones son AREF.AREF utilizadas para escalar las lecturas de las entradas analogicas.
Microcontrolador
Volviendo a nuestra placa arduino, el chip microcontrolador es el
dispositivo rectangular negro con 28 pines. Esta insertado en un zocalo
DIL (Dual in-line) con lo que se puede reemplazar facilmente, este
microcontrolador es el ATmega 328.En la siguiente figura podemos ver un
diagrama a bloques que muestra las principales caracteristicas de este
dispositivo.
El cerebro de este dispositivo es la CPU (Unidad de Procesamiento
Central) controla todo lo que ocurre dentro del dispositivo. Este
obtiene instrucciones de la memoria flash y las ejecuta , tambien
tenemos la memoria EEPROM que se utiliza para almacenar datos que no
queremos perder en caso de un fallo en el suministro de energia, la uart
utilizada para comunicarse de micro a micro, micro a pc o micro a
cualquier dispositivo externo.
¿ LENGUAJE C en arduino ?
Arduino utiliza el lenguaje de programacion en C, aunque eliminandon parte de su complejidad.
Ahora vamos a ver en forma mas detallada nuestro primer programa que hemos escrito para arduino en primer lugar las lineas
// y /* */
Nos indican comentarios y no tienen efecto alguno en nuestro programa,
la primera linea indica que todo lo escrito delante de esas dos
// no tendra efecto alguno en esa linea
Ejemplo
// Todo lo escrito en esta linea no tiene efecto en mi programa
Aqui el compilador de arduino lo tomaria como error
La segunda linea /* */ dentro de esas lineas y asteriscos lo que se escriba no tendra efecto en el codigo
Ejemplo
/* Lo escrito dentro de estas lineas y asterisco no tendra efecto en mi codigo
Aunque exista un salto de linea.
*/
Ahora si empezando a explicar el programa
int led = 13;
Esta linea de codigo da un nombre al pin digital de salida que vamos a
conectar el led hay que aclarar que en nuestro sketch si definimos el
nombre como :
int Led = 13;
Nos arrojaria un error ya que el compilador no acepta mayusculas en la primera letra . Bueno entendido esto la palabra led es
lo que se denomina una variable. Cuando se quiera utilizar una variable
por primera vez en nuestro sketch hay que indicarle al compilador que
tipo de variable es . Puede ser de tipo "int" como en este caso, puede
ser "float", o cualquiera que describire mas adelante.
Un "int" es un entero, es decir un numero entero, ya que no existe un pin 12.5 verdad si no en nuestro caso el pin 13 .
La sintaxis parra declarar una variable es:
tipo_de_dato nombre_variable = valor;
Asi
es como, primero tenemos el tipo "int", luego un espacio , luego un
nombre de variable despues un signo de "=" , despues un valor y por
ultimo un punto y coma para indicar fin de linea, tenga en cuenta no
olvidar el punto y coma ya que eso puede traer errores de compilacion
que pueden ser confusos.
Las siguientes lineas de nuestro sketch son :
void setup() {
pinMode(led, OUTPUT);
}
Lo anterior es una funcion, en este caso se llama setup(), todos los sketches
deben de tener una funcion setup(), y las lineas que contenga se ejecutaran en
el orden que este escrita. En este caso es pinMode(led, OUTPUT);, con lo anterior
estamos configurando el pin digital como salida, si quisieramos ocuparlo como
entrada solo tendriamos que cambiarlo por pinMode(led, INPUT);, lo anterior seria
mas conveniente llamarlo como para evitar pinMode(switch, INPUT); confusiones.
Tanto OUTPUT como INPUT son constantes reservadas.
void loop()
{
digitalWrite(led, HIGH);
delay (1000);
digitalWrite(led,LOW);
delay(1000);
}
La funcion anterior loop() tambien debe estar contenida en todos los sketches de
arduino esta funcion loop()(bucle), se ejecuta dentro de arduino de forma continua
hasta que se apague el arduino, por lo que el codigo que esta en el interior de
dicha funcion se ejecutara de manera continua hasta que se apague arduino.
La funcion digitalWrite( parametro1,parametro2 ); toma dos parametros, el pin de arduino en el
que escribe y el valor a escribir, en el codigo pasamos los parametros led y HIGH
para activar el led y
led y LOW para apagarlo de nuevo.
Tipos de Datos y Variables.
En las lineas anteriores hablamos de la variable led y la declaramos como tipo int (entero). La mayoria de
las variables utilizadas en nuestros sketches seran tambien del tipo int.
Un int contiene un numero entero entre -32 768 y +32 767 esto utiliza 2 bytes de datos para cada uno
de los 1024 bytes disponibles para almacenamiento en nuestro arduino. Si ese numero no fuera suficiente
se puede utilizar un numero "long" (largo) que utiliza 4 bytes por cada numero y le proporciona un
intervalo de
numeros entre -2 147 483 648 y +2 147 483 647. En la siguiente tabla se
muestra los diferentes tipos de datos que hay.
