Вы находитесь на странице: 1из 18

Qu es Arduino

Arduino es una plataforma de hardware libre, basada en una placa con un


microcontrolador y un entorno de desarrollo, diseada para facilitar el uso de la
electrnica en proyectos multidisciplinares.

Para qu sirve Arduino?

Arduino se puede utilizar para desarrollar elementos autnomos, conectndose a dispositivos


e interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un
elemento, pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz
existente es una habitacin, gracias a un sensor de luz conectado al Arduino, o bien para leer
la informacin de una fuente, como puede ser un teclado, y convertir la informacin en una
accin como puede ser encender una luz y pasar por un display lo tecleado.

Libreras Arduino
Las libreras son trozos de cdigo hechos por terceros que usamos en nuestro sketch. Esto
nos facilita mucho la programacin y hace que nuestro programa sea ms sencillo de hacer y
de entender. En este curso no veremos como hacer o modificar una librera pero en este curso
debemos ser capaces de buscar una librera, instalarla, aprender a usar cualquier librera y
usarla en un sketch.
Las libreras son colecciones de cdigo que facilitan la interconexin de sensores, pantallas,
mdulos electrnicos, etc. El entorno de arduino ya incluye algunas libreras de manera que
facilita, por ejemplo, mostrar texto en pantallas LCD.
Existen infinidad de libreras desarrolladas por terceros en internet con sus correspondientes
forks, que nos ayudarn a conectar prcticamente cualquier dispositivo a los Arduinos de
forma muy sencilla.

EEPROM

El microcontrolador en la placa basada Arduino y Genuino AVR tiene


EEPROM: Memoria cuyos valores se mantienen cuando el tablero est
apagado (como un pequeo disco duro). Esta biblioteca le permite
leer y escribir los bytes.

Los micro-controladores compatibles en las diferentes placas Arduino


y Genuino tienen diferentes cantidades de EEPROM: 1024 bytes en
el ATmega328 , 512 bytes en elATmega168 y ATmega8 , 4 KB (4096
bytes) en el ATmega1280 y Atmega2560 . Los Arduino y Genuino 101
tableros tienen un espacio emulada EEPROM de 1024 bytes.
Ejemplos
EEPROM Borrar : permite borrar los bytes en la EEPROM.

Leer EEPROM : Leer la EEPROM y enviar sus valores al ordenador.

De escritura de EEPROM : Almacena valores de una entrada analgica


en la EEPROM.

EEPROM Crc : Calcula la CRC de los contenidos de la EEPROM como si


fuera una matriz.

EEPROM Get : Obtener los valores de la EEPROM y se imprime como


flotador en serie.

EEPROM iteracin : Comprender la forma de ir a travs de las


posiciones de memoria EEPROM.

Ponga EEPROM : Poner los valores en la EEPROM utilizando la


semntica variables.

Actualizar EEPROM : Tiendas valores ledos del A0 en la


EEPROM, escribir el valor slo si es diferente, para aumentar la
vida EEPROM.
Librera Ethernet
La librera Ethernet es la usada para manejar el Ethernet Shield que implementa la pila de
protocolos TCP/IP y dentro de Arduino se implementan los protocolos en la capa de
aplicacin. La librera se usa entre otras cosas para mandar por Ethernet el protocolo
programado en Arduino.
Para manejar el Ethernet Shield deberemos conocer todos los mtodos que nos ofrece la
librera Ethernet y as poder usarla.
La librera ethernet se compone de 5 clases, cada una con sus mtodos
Ethernet Class
Inicializa la librera ethernet y las configuraciones de red.

begin() Inicializa la librera Ethernet (Constructor)

localIP() Obtiene la direccin IP. til al usar DHCP

maintain() Solicita una renovacin al servidor DHCP

IPAddress Class
Trabaja con IPs locales y remotas. Facilita el trabajo con direcciones IPs.

IPAddress() Define una direccin IP

Server Class
Crea un servidor que puede mandar y recibir datos de los clientes conectados.

Server() Constructor de la clase server. No se usa directamente

EthernetServer() Crea un servidor que escucha por las conexiones entrantes del
puerto definido.

begin() Le dice al servidor que comience a escuchar.

available() Devuelve el cliente que est conectado al servidor y tiene datos


disponibles a leer.

write() Escribe datos a todos los cliente conectados al servidor.

print() Escribe datos a todos los cliente conectados al servidor.

println() Escribe datos a todos los cliente conectados al servidor seguido de una
nueva lnea.
Client Class
Crea un cliente que se conecta a un servidor y puede mandar y recibir datos.

Client Constructor de la clase client. No se usa directamente

EthernetClient() Crea un cliente que se conecta a una determinada IP y puerto

if (EthernetClient) Indica si el cliente Ethernet est preparado

connected() Devuelve si el cliente est o no conectado

connect() Conecta a una IP y puerto especificado. Soporta DNS lookup. Devuelve


unos cdigos en funcin del xito o fallo de la conexin.

write() Escribe datos al servidor al que est conectado.

print() Escribe datos al servidor al que est conectado

println() Escribe datos al servidor al que est conectado, seguido de una nueva lnea

available() Devuelve el nmero de bytes disponibles para leer.

read() Lee el siguiente byte recibido desde el servidor.

flush() Borrar todos los bytes que han sido escritos en el cliente pero no leidos

stop() Desconecta el cliente del servidor

EthernetUDP Class
Habilita el envo y recepcin de mensajes UDP

begin() Inicializar la librera UDP

read() Lee datos UDP

write() Escribe datos UDP a la conexin remota.

beginPacket() Comienza una conexin para escribir paquetes UDP

endPacket() Finaliza una conexin UDP despus de escribir

parsePacket() Comprueba la presencia de un paquete UDP


available() Devuelve el n de bytes disponible para leer en el buffer

stop() Desconecta del servidor

remoteIP() Obtiene la IP de la conexin remota

remotePort() Obtiene el puerto de la conexin remota

Librera firmata

El Firmata biblioteca implementa el protocolo Firmata para la


comunicacin con el software en el ordenador host. Esto le permite escribir un
firmware personalizado sin tener que crear su propio protocolo y objetos para
el entorno de programacin que est utilizando.

LIBRERA GSM
El escudo GSM comunica con un Arduino unido a travs de
la biblioteca de software de serie . Por defecto, esta
comunicacin utiliza los pines digitales 2 y 3. En la Uno esto
funciona sin modificaciones, pero para utilizar el Leonardo ,Yun ,
o Mega juntas, se requieren algunos cambios leves.

El pasador GSM_TX, el pin 2 en el escudo, enva informacin al


Arduino. El Arduino se basa en una interrupcin de este pin
saber cuando la informacin est disponible para leer. En el Uno,
esta capacidad de interrupcin est en el pin 2. El Leonardo,
Yun, y Mega tener capacidades de interrupcin en diferentes
pines.

No es necesario modificar el cdigo para programar el escudo


para su uso con el Leonardo, Yun, o Mega, como la biblioteca
cambiar pin RX del Arduino automticamente en funcin de la
junta seleccionada en el men "Herramientas" de la IDE. Usted,
sin embargo, es necesario volver a encaminar los datos GSM_TX
al pin correspondiente en el Arduino.

Arduino Arduino Leonardo y Yun

La biblioteca de GSM utiliza el pin digital de 8 a comunicarse con


el Leonardo o el Yun. Por lo tanto, es necesario enviar la seal
desde el pin 2 del escudo GSM al pin 8 del Arduino, y al mismo
tiempo evitar que esta seal se conecte al pin 2 del Arduino. Los
siguientes dos pasos de lograr esto:

En el escudo GSM, conectar un cable de puente entre los pines


digitales 2 y 8. Esta rutas de la seal desde el pin 2 del escudo
GSM a la patilla 8 de la Arduino.

Para evitar esta seal de interferir con o ser interferido por el pin
2 del Arduino, doblar la cabecera macho unido al pin 2 en el
escudo de GSM a un lado para que no se conecta a la Leonardo
o Yun.
Arduino Mega

La biblioteca de GSM utiliza pin digital 10 para comunicarse con


el Mega. Por lo tanto, es necesario enviar la seal desde el pin 2
del escudo GSM al pin 10 de la Arduino, y al mismo tiempo
evitar que esta seal se conecte al pin 2 del Arduino. Los
siguientes dos pasos de lograr esto:

En el escudo GSM, conectar un cable de puente entre los pines


digitales 2 y 10. Esta rutas de la seal desde el pin 2 del escudo
GSM a la patilla 10 de la Arduino.

Para evitar esta seal de interferir con o ser interferido por el pin
2 del Arduino, doblar la cabecera macho unido al pin 2 en el
escudo de GSM a un lado para que no se conecta a la Mega.

El uso de pasadores alternativos con la biblioteca

Si prefiere utilizar un pin de interrupcin diferente para la


comunicacin, consulte la biblioteca de serie de software pgina
de referencia para ver opciones PIN vlido. Tendr que cambiar
la __RXPIN__ definicin en el GSM3SoftwareSerial archivo .cpp,
que se encuentra en la carpeta de biblioteca GSM.

LiquidCrysta
Esta biblioteca permite una placa Arduino para controlar LiquidCrystal muestra
( LCDs ) basado en el Hitachi HD44780 (o una compatible) chipset, que se
encuentra en la mayora basados en texto LCDs . La biblioteca trabaja con ya
sea en modo de 4 u 8 bits

Es el constructor de la clase LyquidCrystal . Permite crear un objeto de esta


clase, que se usar para gestionar el dsiplay LCD. Como argumentos recibe
una serie de nmeros que se refieren a pines concretos de la placa Arduino,
conectados a diferentes pines del display.
LiquidCrystal MiDisplay (12, 11, 5, 4, 3, 2);

Los dos primeros nmeros (el 12 y el 11) se refieren a los pines conectado a
los puntos RS y E del display. Los cuatro ltimos nmeros se refieren a los
pines de D4 a D7 del bus de datos del display. En general, esta
configuracin es la ms simple y tpica. No obstante, este constructor
admite otras listas de argumentos, cmo podemos ver a continuacin:

LiquidCrystal(Rs, E, D4, D5, D6, D7);

LiquidCrystal(Rs, rw, E, D4, D5, D6, D7);

LiquidCrystal(Rs, E, D0, D1,D2, D3, D4, D5, D6, D7);

LiquidCrystal(Rs, rw, E, D0, D1, D2, D3, D4, D5, D6, D7);

De lo que se trata, como podemos deducir de las lneas de arriba, es que


podemos especificar los pines de Arduino que se conectan a distintos
terminales del display. En el ejemplo del artculo 12 solo necesitbamos los
pines de la primera configuracin del constructor. En otros montajes, o con
otros modelos de displays, necesitaremos otras configuraciones.

EL MTODO begin()
Como hemos comentado durante la descripcin del primer sketch, este
mtodo es necesario para inicializar el display. Recibe dos argumentos: el
primero es la anchura en caracteres y el segundo la altura (nmero de filas)
del display. Tambin posiciona el cursor en el primer carcter de la primera
fila.

EL MTODO clear()
Limpia el display y posiciona el cursor en el primer carcter de la primera
fila.

EL MTODO home()
Sita el cursor en el primer carcter de la primera fila, sin borrar el display.
EL MTODO setCursor()
Posiciona el cursor en una ubicacin especfica del display. Recibe dos
argumentos. El primero se refiere al carcter de la fila y el segundo a la fila.
Ten en cuenta que tanto los caracteres como las filas se empiezan a contar
desde 0, no desde 1.

EL MTODO write()
Escribe una cadena (bien sea un objeto de tipo String o una matriz de
caracteres) en el display. Como argumento recibe la cadena a mostrar.

EL MTODO print()
Acta de un modo similar a write() , pero con la posibilidad de enviar
directamente nmeros enteros al display, en distintas bases de numeracin.

LOS MTODOS cursor() y


noCursor()
Estos mtodos no reciben argumentos. El primero se emplea para que el
cursor sea visible en el display como un signo de subrayado. El segundo
mtodo hace el cursor invisible (es el estado por defecto).

LOS MTODOS blink() y noBlink()


Cuando el cursor est visible por haber usado el mtodo cursor(), podemos
hacer que aparezca parpadeante usando el mtodo blink() . Si usamos el
mtodo noBlink() el cursor no parpadear.
LOS MTODOS display() y
noDisplay()
Si usamos el mtodo noDisplay() el display se apagar. Podemos
reactivarlo con el mtodo display() . Estos mtodos no reciben argumentos.

LOS MTODOS autoscroll() y


noAutoscroll()
Cuando se completa el espacio del display destinado a mostrar texto o
datos, lo que sobra no se ver (aparece truncado). Si activamos el
mtodo autoscroll() , el contenido ms antiguo se desplazar,
desapareciendo por el principio de la lnea, para dejar sitio al final de la
misma para los nuevos contenidos. Con el
mtodo noAutoscroll() restablecemos el comportamiento por defecto.

LOS MTODOS scrollDisplayLeft()


y scrollDisplayRight()
Cuando usamos estos mtodos, el contenido se desplaza un carcter a la
izquierda o a la derecha. Adems, segn el que empleemos, si activamos el
mtodo autoscroll() los contenidos se desplazarn en el sentido indicado.

LOS MTODOS leftToRight() y


rightToLeft()
Establecen el sentido de la escritura, por si el mensaje se enva en idiomas,
como el rabe, que se escriben al revs que el nuestro.
EL MTODO createChar()
El display LCD puede mostrar, por defecto, un conjunto bastante limitado
de caracteres. La datasheet del display est en este enlace y contiene,
entre otra informacin, el juego de caracteres que incorpora el display por
defecto. La datasheet est en ingls, que es el idioma en el que publican
estos documentos la mayora de los fabricantes. Mralo por el lado bueno.
Algunos fabricantes orientales solo publican material en chino, coreano,
etc.

Por ejemplo, en espaol, letras como la o las acentuadas no pueden


mostrarse directamente, ya que aparecen como guarismos sin significado.

Con este mtodo podemos crear hasta ocho caracteres adicionales,


identificados por nmeros del 0 al 7, para sacar mensajes concretos. Los
caracteres se crean a partir de una matriz de cinco puntos de ancho por
ocho de alto. Para crear el carcter que desees e implementarlo en tu
cdigo, visita: http://gotencool.com/lcdchar/. Esta es una herramienta online
muy prctica, que nos permite disear un carcter a medida en una matriz
de 5 x 8 (que es como se representan los caracteres en los displays LCD), y
nos da el cdigo Arduino necesario para implementar el carcter diseado
en nuestro sketch.

Librera SD

Arduino tiene una librera para usar estas memorias, que funciona con
cualquiera de los mdulos antes mencionados. La librera ya viene junto con
el IDE de arduinos, por lo que no necesitamos instalar ni descargar nada.

Para poder usar la librera en nuestro Sketch es necesario incluir a la librera


SD al inicio del cdigo:
#include <SD.h>

A continuacin explicamos las funciones principales de la librera SD, el cual


es un resumen de la referencia proporcionada en la pgina oficial
de Arduino: https://www.arduino.cc/en/Reference/SD
SD.begin(cspin)
Inicializa la biblioteca SD y la tarjeta, como parmetro se le indica el pin CS
al que est conectado el modulo, si no se especifica cspin , se usa el valor
por defecto del CS por hardware. Los dems pines deben estar conectados
al SPI por hardware del Arduino.
SD.exists(filename)
Comprueba si existe el archivo especificado, filename es el nombre del
archivo y/o directorio en la tarjeta SD si este existe la funcin nos retorna un
true, de lo contrario retorna false.
SD.mkdir(directory)
Crea el directorio especificado, si los subdirectorios no existen, tambin se
crearan. Por ejemplo: SD.mkdir(Arduino/proyecto1/archivos), crea la
carpeta archivos y si las carpetas Arduino y proyecto1 no existen,
entonces tambin se crearan. La funcin retorna true si la creacin del
directorio fue exitosa de lo contrario nos retorna un false
SD.remove(filename)
Elimina el archivo (filename) de la tarjeta SD, se debe de incluir el directorio.
Solo elimina el archivo ms no el directorio. Devuelve true se logra eliminar
el archivo de lo contrario nos retorna un false.
SD.rmdir(dirname)
Eliminar el directorio (dirname) de la tarjeta SD. El directorio debe estar
vaco. Devuelve TRUE si la eliminacin del directorio tuvo xito o FALSE en
caso contrario.
SD.open(filepath, mode)
Abre el archivo especificado y se debe de incluir el directorio si el archivo
est en carpetas. Si el archivo no existe, se creara un archivo con el nombre
especificado, pero no ser posible crear el directorio si este no existe. Se
puede abrir un archivo como solo lectura (si mode es FILE_READ) o como
lectura y escritura (si mode es FILE_WRITE), el modo por defecto en caso
no se especifique es FILE_READ
sta funcin nos retorna un objeto tipo FILE, el cual es necesario declararlo
antes como una variable. Por ejemplo:
File myFile;
myFile = SD.open("archivo.txt", FILE_WRITE);

Funciones de la clase File:


file.available()
Compruebe si hay bytes disponibles para leer en el archivo y retorna el
nmero de bytes disponibles
file.read()
Lee un byte de la variable File (archivo abierto anteriormente con
SD.open())
file.write(data)
Escribe un byte en el archivo, el archivo debe estar abierto en modo lectura
y escritura. Usando file.write(buf, len) se puede escribir un array de byte
(buf) pero se debe especificar el tamao (len).
file.print(data)
Esta funcin tiene las mismas caractersticas que un Serial.print(); data
puede ser una variable o texto, el cual ser enviado como caracteres. Si
queremos agregar al final un salto o nueva lnea se usa file.println(data)
file.size()
Retorna el tamao en bytes del archivo
file.position()
Retorna la posicin actual en donde se leer o escribir el siguiente byte.
file.seek(pos)
Nos ubicamos en una posicin especfica en el archivo. Pos debe ser un
nmero entre 0 y el tamao en bytes del archivo
file.close()
Cerramos el archivo, y recin en este momento los datos se guardan en la
SD, pudiendo extraer de forma segura nuestra SD.
Librera servo

Cmo programar un servo desde el


entorno de Arduino?
Ahora vamos a ir a lo interesante, la programacin. Para ello tenemos
que hacer uso de una librera externa para poder controlar el servo desde
Arduino. Para incorporar la librera tenemos que ir a Programa/Include
Library/Servo.

El cdigo para girar el motor de 0 a 180


Esta accin ya nos ha hecho un include en nuestro cdigo que nos
permite controlar el servo. Os dejo a continuacin un cdigo bsico para
posicionar el servo en los ngulos 0, 90 y 180
1 // Inclumos la librera para poder controlar el servo

2 #include <Servo.h>
3

4 // Declaramos la variable para controlar el servo

5 Servo servoMotor;

7 void setup() {

8 // Iniciamos el monitor serie para mostrar el resultado

9 Serial.begin(9600);

0
// Iniciamos el servo para que empiece a trabajar con el pin 9

1
servoMotor.attach(9);
1
}
1

void loop() {
1

1 // Desplazamos a la posicin 0

4
servoMotor.write(0);

1
// Esperamos 1 segundo
5

delay(1000);
1

1 // Desplazamos a la posicin 90

7
servoMotor.write(90);

1
// Esperamos 1 segundo
8
1 delay(1000);

2
// Desplazamos a la posicin 180
0
servoMotor.write(180);
2
// Esperamos 1 segundo
1

delay(1000);
2

2 }

1
3

De la librera Servo.h hemos declarado un objeto o variable servoMotor y


hacemos uso de dos mtodos. Por un lado el attach, que nos permite
indicar en que pin tenemos conectado nuestro servo, y por otro lado
el write, donde indicamos en qu ngulo queremos posicionar nuestro
servomotor.

Вам также может понравиться