Arduino PDF
Arduino PDF
Arduino PDF
ndice
1
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
2
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
1.1 Introduccin
El presente PFC surge de la idea de generar un paquete de prcticas de
programacin, electrnica, automatizacin y robtica bsica orientadas a la asignatura
de Tecnologa impartida en diferentes cursos de educacin secundaria obligatoria.
Aunque en principio estas prcticas se orientan a secundaria, la idea es extenderlas para
su uso en los primeros cursos de Ingeniera Industrial y de Telecomunicacin.
La razn de utilizar Arduino como herramienta educativa viene dada por su fcil
manejo, compatible con una gran capacidad de control electrnico. Arduino reduce
considerablemente el tiempo de diseo electrnico as como la programacin de su
microcontrolador. Estamos ante una plataforma muy intuitiva a la que se le puede sacar
mucho provecho. Vemos como poco a poco Arduino se va abriendo camino en robtica,
sistemas de comunicaciones, domtica, telemtica y un largo etctera. En un futuro no
muy lejano y gracias a sus caractersticas podremos apostar en esta herramienta como
una oportunidad de negocio, implantndola en mbitos de automatizacin y
comunicaciones industriales, creacin de juguetes, as como la programacin y manejo
de impresoras 3D. Es por tanto una herramienta de trabajo apropiada para el uso
docente, pero con una gran proyeccin en otros mbitos.
El modelo de trabajo propuesto es ir generando un conjunto de prcticas de
dificultad creciente, empezando por montajes muy sencillos, con programas muy
simples, adaptados a los primeros de aos de la educacin secundaria e ir aadiendo
complejidad de forma progresiva. La ltima prctica es un pequeo proyecto de
automatizacin, que puede adaptarse a las necesidades de cada centro docente. En esta
prctica, adems de Arduino se utilizan otros recursos, como son AVR Studio, Fritzing
y Pololu 3pi.
De esta manera, partiendo desde la instalacin del IDE Arduino iremos viajando
a travs de sencillas prcticas hasta ser capaces de controlar un circuito con un cruce,
cuatro semforos, cuatro barreras y un puente levadizo. As mismo explicaremos cmo
manejar Arduino con LabVIEW. Segn esto, la presente memoria est organizada de
la siguiente manera:
Introduccin a Arduino y estudio de la placa Arduino UNO
Redaccin de prcticas Arduino y diseo con Fritzing
Arduino y LabVIEW
Estudio y programacin del robot Pololu 3pi
3
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Fritzing
Ilustracin 1 Fritzing
4
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
5
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Fritzing nos permite exportar nuestro proyecto, en cualquiera de sus tres vistas,
en diferentes formatos (PDF, PNG, JPG, SVG,). Tiene licencia GPL para el cdigo y
Creative Common para el contenido, es decir, podemos obtenerlo y utilizarlo
gratuitamente; adems, en su pgina web www.fritzing.org podremos compartir y
discutir proyectos y experiencias.
Otros programas
A continuacin vamos a comentar muy de pasada algunos de los programas
relacionados con Arduino que xisten en el mercado y nos podran ayudar en un futuro
no muy lejano en la divulgacin y enseanda de esta nueva herramienta.
Minibloq
Minibloq es un entorno de programacin grfica para dispositivos fsicos
informticos y robots. Uno de sus principales objetivos es el de llevar la computacin
fsica y las plataformas robticas a la escuela primaria (nios y principiantes.
Principales caractersticas:
Fcil e intuitivo
Generador de cdigo en tiempo real
Comprobacin de errores en tiempo real
Drag & Drop bsico con giro automtico
Interfaz avanzada
Terminal incorporado
Todo en uno para comenzar a utilizarlo
Portable
Rpido
Modular y ampiable
6
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Ilustracin 5 Minibloq
Ms informacin en http://blog.miniblog.or/
Ardublock
Se trata de una utilidad grfica cuya misin es generar cdigo compatible con el
entorno IDE Arduino y sus principales caractersticas son:
Herramienta gratuita
Fcil creacin de sketchs para Arduino
Genera cdigo directamente
Posee una coleccin de bloques funcionales bsicos que facilitan la comprensin
de la programacin
Indicado para aplicaciones educativas en niveles bsicos dnde el usuario no
necesita tener conocimientos de programacin
Aplicacin muy sencilla de instalar
Se trata de un plugin que el IDE Arduino reconoce e instala como Tool
Ilustracin 6 Ardublock
Ms informacin en http://blog.ardublock.com/
7
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Amici
Amici ha sido desarrollado por investigadores de DIMEB de la Universidad de
Bremen, como parte de la EduWear (proyecto europeo). El software ha sido utilizado en
ms de 25 talleres formados por nios y jvenes.
Se suministra junto con una versin completa del IDE Arduino, lo que permite
realizar cualquier programa sin tener que cargar ningn otro firmware adicional. Una
vez realizado el programa, se genera el cdigo correspondiente y se hace el volcado en
la tarjeta Arduino. Es uno de los primeros entornos creados para programar Arduino
generando cdigo.
Ilustracin 7 Amici
Ms informacin en http://www.dimeb.de/
Modkit
Es un entorno de programacin para microcontroladores. Nos permite programar
Arduino y hardware compatible con simples bloques grficos y/o cdigo de texto
tradicional. El entorno de bloques grficos de Modkit est basado en el Scratch, entorno
de programacin desarrollado por el grupo Lifelong Kindergarten del Media Lab del
MIT. Se ejecuta en cualquier navegador web y requiere de un widget de escritorio para
comunicarse con la placa de Arduino. Podemos usarlo de forma gratuita o formar parte
del Club de Alpha, dnde podemos contribuir con nuestros proyectos y disfrutar de
caractersticas adicionales antes de que se lancen al pblico en general.
8
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Ilustracin 8 Modkit
Ms informacin en http://www.modk.it/
VirtualBread Boared
Entorno de simulacin y desarrollo de aplicaciones integradas que utilizan los
microcontroladores. Fcil de usar y capaz de sustituir a una protoboard para
experimentar con nuevos diseos.
Nos permite disear el prototipo en la protoboard virtual:
1. Realizar la PCB del diseo
2. Importar sketches de Arduino
3. Trabajar con distintas PICs
4. Descargar sobre Arduino la aplicacin
Ms informacin en http://www.virtualbreadboard.com/
9
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Physical Etoys
Es una herramienta de programacin visual que une el mundo virtual de los
ordenadores con el mundo fsico. Con Physical Etoys podemos programar fcilmente
objetos del mundo real (por ejemplo robots) para realizar cualquier accin o mover
objetos grficos en la pantalla a travs de variables recogidas del mundo fsico.
Interfaces con las que se comunica:
Arduino
Nintendo Wiimote
Puerto paralelo
RoboSapien v2
Roboquad
I-Sobot
Lego Mindstorms Nxt
Ms informacin en http://tecnodata.com.ar/gira/projects/physical-etoys/
10
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Ms informacin en http://seaside.citilab.eu/scratch/arduino
11
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Ardulab
Entorno de trabajo que permite interactuar con una placa Arduino para crear un
laboratorio virtual. Podemos realizar una serie de experimentos y actividades orientados
principalmente al aprendizaje de sencillos conceptos relacionados con la tecnologa
(electrnica y robtica). No es un entorno de programacin, es un laboratorio virtual
que nos permite aprender, probar y conocer como paso previo a la programacin de
sistemas, con sensores y actuadores, basados en Arduino. Se puede adquirir
gratuitamente y tenemos acceso desde el principio a toda su funcionalidad.
Ilustracin 12 Ardulab
Ms informacin en:
http://complubot.educa.madrid.org/proyectos/arduino/ardulab/ardulab_index.php
Rhino + Firefly
Podemos conectar Arduino al poderoso entorno grfico Rinho a travs del
conocido plugin Grasshopper, que es un entorno grfico muy verstil y fcil de utilizar
con el que se programa eventos y gobierna imgenes de Rinho. Una de la libreras de
Grasshopper es Firefly y est concebida para interactuar con Arduino en el gobierno de
entradas y salidas tanto digitales como analgicas.
Ms informacin en http://www.fireflyexperiments.com/download/
12
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
MyOpenlab
Entorno orientado a la simulacin y modelado de sistemas fsicos, electrnicos,
robticos y de control con un amplio campo de aplicaciones didcticas. Sus principales
caractersticas son:
Facilidad de uso
Amplia biblioteca de funciones analgicas y digitales
Gran biblioteca de objetos grficos de visualizacin y/o actuacin
Tratamiento de los tipos de datos y operaciones con stos.
Realizacin de las aplicaciones mediante el uso de bloques de funcin
Posibilidad de ampliacin de su librera de componentes, editndolos en cdigo
JAVA
Posibilidad de creacin de submodelos de panel y submodelos de circuito
encapsulados
Libreras propias: Elementos Funcionales; Elementos de Decoracin,
Visualizacin y Actuacin
Ilustracin 14 MyOpenlab
Ms informacin en http://es.myopenlab.de/
13
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
2.1 Introduccin
Utilizaremos para el desarrollo del proyecto el hardware y software de Arduino.
Como indican sus creadores, Arduino es una plataforma de prototipos electrnica de
cdigo abierto (open-source) basada en hardware y software flexibles y relativamente
fciles de usar. Arduino se vende como herramienta pensada para artistas,
diseadores, arquitectos y cualquiera que est interesado en crear objetos o entornos
interactivos.
15
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Vamos a analizar a fondo la placa elegida para nuestro proyecto: Arduino UNO.
Dispone de un reset (botn rojo) que suministra un valor LOW que reinicia el
microcontrolador. A su lado, encontramos el conector ICSP (In Circuit Serial
Programming), que es el sistema utilizado en los dispositivos PIC para programarlos sin
ser necesario la retirada del chip del circuito del que formase parte.
son los encargados de enviar y recibir datos serie TTL. La funcin de los pines 2 y 3 es
la de manejar interrupciones (Arduino UNO slo es capaz de manejar dos
interrupciones por tanto). Encontramos que los pines 10, 11, 12 y 13 sirven de apoyo a
la comunicacin SPI con la biblioteca SPI. El bus SPI (Serial Peripheral Interface) es un
estndar de comunicaciones, usado principalmente para la transferencia de informacin
entre circuitos integrados en equipos electrnicos. Es un estndar para el control de
cualquier dispositivo electrnico digital que acepte un flujo de bits serie regulado por un
reloj. Tenemos 3 pines de tierra marcados como GND (0V). La alimentacin al circuito
puede ser de 5V o 3,3V en su respectivo pin. Podemos aplicar un voltaje de entrada a la
placa mediante el pin Vin cuando sta sea alimentada por una fuente externa y conocer
el valor exacto del voltaje aplicado a la placa. Respecto a entradas analgicas, Arduino
UNO dispone de 6 distribuidas en los pines A0, A1, A2, A3, A4 y A5. Cada una de
ellas proporciona una resolucin de 10 bits (1024 valores). Por defecto se mide en estos
pines la tierra a 5V, aunque podemos cambiar la cota superior de este rango mediante el
pin AREF, que se encarga de la tensin de referencia para las entradas analgicas.
El puerto USB nos permite una comunicacin serie con el ordenador mediante el
estndar de los controladores USB COM, sin necesidad de controlador externo. La
placa nos avisa con un parpadeo de los leds Rx y Tx que la comunicacin se est
llevando a cabo.
17
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
18
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
19
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Estructura de un programa
Arduino se programa en C++, admitiendo la gran mayora de libreras usadas en
C++ y todas sus estructuras bsicas. Todo sketch tiene siempre la misma estructura:
DECLARACIN DE VARIABLES;
void loop() {}
Una vez visto la estructura tpica de cada programa, las funciones especficas
que posteriormente emplearemos en la realizacin de las prcticas y la maqueta final se
resumen en las siguientes tablas:
Funciones especficas
NOMBRE DESCRIPCIN SINTAXIS PARMETROS DEVOLUCIN
PIN MODE() Configuramos el pinMode(pin, modo) pin: nmero de Nada
pin especificado pin que usaremos
como entrada o modo: INPUT
salida (entrada),
OUTPUT (salida)
DIGITALWRITE() Escribimos un digitalWrite(pin, pin: el nmero de Nada
valor elctrico valor) pin que usaremos
(alto o bajo) en el valor: HIGH
pin seleccionado LOW
20
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
21
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
22
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
23
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
24
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
25
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
26
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Programa:
void setup(){
pinMode(2, OUTPUT); //Pin 2 en modo salida
}
void loop(){
digitalWrite(2, HIGH); //Pin 2 en alta (5V)Encendido
delay(2000); //Esperamos 2 segundos con el LED encendido
digitalWrite(2, LOW); //Pin 2 en baja (0V)Apagado
delay(2000); //Esperamos 2 segundos con el LED apagado
}
27
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
Programa:
int boton = 0;
void setup(){
pinMode(2, OUTPUT); //Pin 2 en modo salida
pinMode(3, INPUT); //Pin 3 en modo entrada
}
void loop(){
boton = digitalRead(3); //Leemos el estado del pulsador
if(boton == HIGH){
digitalWrite(2, HIGH); //Si est en alta, enciende el LED
}
else{
digitalWrite(2, LOW); //Si est en baja, apaga el LED
}}
28
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Con este programa somos capaces de controlar el encendido y apagado del LED
mediante un pulsador. Queda como ejercicio la incorporacin de otro LED que funcione
de forma opuesta al presionar el pulsador.
Circuito:
Programa:
int boton = 0;
void setup(){
pinMode(2, OUTPUT); //Pin 2 en modo salida
pinMode(3, INPUT); //Pin 3 en modo entrada
Serial.begin(9600); //Inicia el puerto serie para comunicarnos
}
void loop(){
boton = digitalRead(3); //Leemos el estado del pulsador
Serial.println(boton); //Sacamos por el puerto serie el valor leido
if(boton == HIGH){
digitalWrite(2, HIGH); //Si est en alta, enciende el LED
}
else{
digitalWrite(2, LOW); //Si est en baja, apaga el LED
}
} 29
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
En este sketch la placa nos avisa por consola si alguien ha pulsado el botn.
Podemos ver el cambio de los valores transmitidos abriendo en
Men/Herramientas/Monitor Serial. Mostramos una imagen de la consola:
30
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
Programa:
int boton = 0;
int contador = 0;
void setup(){
pinMode(2, OUTPUT); //Pin 2 en modo salida
pinMode(3, INPUT); //Pin 3 en modo entrada
Serial.begin(9600);} //Inicia el puerto serie para comunicarnos
void loop(){
boton = digitalRead(3); //Leemos el estado del pulsador
if(boton == HIGH){
digitalWrite(2, HIGH); //Si est en alta, enciende el LED
contador = contador + 1;
Serial.print("Alguien ha pulsado el botn unas ");
Serial.print(contador);
Serial.println("veces"); //Muestra por consola
}
else{
digitalWrite(2, LOW); //Si est en baja, apaga el LED
}}
31
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
32
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
Programas:
void setup(){
pinMode(2, OUTPUT); //Pin 2 en modo salida
pinMode(3, INPUT); //Pin 3 en modo entrada
Serial.begin(9600); //Inicia el puerto serie para comunicarnos
}
void loop(){
boton = digitalRead(3); //Leemos el estado del pulsador
if(boton == HIGH){
digitalWrite(2, HIGH); //Si est en alta, enciende el LED
contador = contador + 1;
Serial.print(contador);
}
else{
digitalWrite(2, LOW); //Si est en baja, apaga el LED
}
}
33
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
void setup(){
pinMode(6, OUTPUT); //Pin 6 en modo salida
pinMode(7, OUTPUT); //Pin 7 en modo entrada
Serial.begin(9600); //Inicia el puerto serie para comunicarnos
}
void loop(){
if(Serial.available() > 0){ //Miramos si hemos recibido algo
ahora = Serial.read();
if(ahora > antes){ //Si el nmero recibido es mayor al que
antes = ahora; //tenamos, encendemos los LEDs
digitalWrite(6, HIGH);
delay(500);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(500);
digitalWrite(7, LOW);
}
}
}
Esta prctica parece que se complica pero vamos a ver que realmente no es para
tanto. Queremos que Arduino 1 le diga a Arduino 2 lo que sucede con una de sus
entradas y ste reaccione encendiendo dos LEDs. El primer programa es casi idntico al
de la prctica anterior y con l slo pretendemos enviar a Arduino 2 el nmero de veces
que ha sido pulsado el botn y ste encienda dos LEDs si el nmero enviado es mayor
al anterior recibido.
34
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
Programa:
int valor_potenciometro = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
valor = analogRead(0);
Serial.println(valor_potenciometro); //Leemos el valor del
//potencimetro
delay(500); //Damos tiempo a la comunicacin
}
35
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
Programa:
int valor_potenciometro = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
valor = analogRead(5); //Leemos el valor del potencimetro
Serial.println(valor_potenciometro); //Sacamos el valor del
//potencimetro
valor_potenciometro = map(valor_potenciometro, 0, 1023, 0, 255);
analogWrite(3, valor_potenciometro);
}
Circuito:
37
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Programa:
38
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Prctica 9. Servomotor
Circuito:
Programa:
40
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
41
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Programa:
42
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Material necesario: Arduino UNO, 1 pulsador, 1 chip LD293, 1 resistencia de 2,2 kilo
Ohmios, 1 LED y 1 motor DC.
Circuito:
43
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Con este chip podemos conectar dos motores DC, uno en cada parte del chip.
En esta prctica controlaremos con la ayuda del chip presentado anteriormente el
sentido de giro del motor con la ayuda de un pulsador.
Programa:
44
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
En este sketch hemos incorporado dos mtodos auxiliares con sus respectivas
variables locales para apoyarnos en el control del sentido de giro. Destacamos tambin
la declaracin e inicializacin de los pines del motor en forma de array.
45
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Programa:
46
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
47
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Programa:
int PinRojo = 2;
int PinAmarillo = 3;
int PinVerde = 4;
int boton = 5;
int estado_actual = 0; //Estado en el que se encuentra el semforo
void setup(){
pinMode(PinRojo, OUTPUT);
pinMode(PinAmarillo, OUTPUT);
pinMode(PinVerde, OUTPUT);
pinMode(boton, INPUT);
}
void loop()
{
if (digitalRead(boton))
{
if (estado_actual == 0)//Si est en reposo
{
Luces(HIGH, LOW, LOW);//Ponemos el semforo en rojo
estado_actual = 1;
}
else if (estado_actual == 1)
{
Luces(HIGH, HIGH, LOW);
estado_actual = 2;//Ponemos el semforo en rojo y amarillo
}
else if (estado_actual == 2)
{
Luces(LOW, LOW, HIGH);//Ponemos el semforo en verde
estado_actual = 3;
}
else if (estado_actual == 3)
{
Luces(LOW, HIGH, LOW);//Ponemos el semforo en amarillo
estado_actual = 0;
}
delay(1000); //Esperamos 1 segundo
}}
void Luces(int Rojo, int Amarillo, int Verde)
{
digitalWrite(PinRojo, Rojo);
digitalWrite(PinAmarillo, Amarillo);
digitalWrite(PinVerde, Verde);}
48
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Circuito:
49
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Programa:
int PinRojo = 2;
int PinAmarillo = 3;
int PinVerde = 4;
int PinEncoderA = 6;
int PinEncoderB = 7;
int boton = 5;
int estado_actual = 0;
int PeriodoLargo = 5000; // Tiempo en verde o en rojo
int PeriodoCorto = 700; // Tiempo en amarillo
int CuentaUsada = PeriodoCorto;
int cuenta = 0;
void setup()
{
pinMode(PinEncoderA, INPUT);
pinMode(PinEncoderB, INPUT);
pinMode(boton, INPUT);
pinMode(PinRojo, OUTPUT);
pinMode(PinAmarillo, OUTPUT);
pinMode(PinVerde, OUTPUT);
}
void loop()
{
cuenta++;
if (digitalRead(boton))
{
Luces(HIGH, HIGH, HIGH);
}
else
{
int cambio = getEncoderTurn();
int nuevoPeriodo = PeriodoLargo + (cambio * 1000);
if (nuevoPeriodo >= 1000 && nuevoPeriodo <= 10000)
{
PeriodoLargo = nuevoPeriodo;
}
if (cuenta > CuentaUsada)
{
setEstado();
cuenta = 0;
}}
delay(1);}
50
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
51
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
A continuacin vamos a explicar como instalar la librera LIFA que nos permitir
programar nuestra tarjeta Arduino.
Una vez instalado LabView, veamos los pasos que tenemos que seguir para
completar la instalacin de dicha librera:
Una vez tenemos instalada la librera, debemos comunicar LabView con el IDE
Arduino. Tenemos que cargar el siguiente fichero (\National Instruments\LabVIEW
2010\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base) en la misma carpeta
donde tengamos el IDE Arduino. Ejecutamos Arduino y procedemos de la siguiente
manera:
52
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
53
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
4. Cargamos el sketch para que el programa se cargue en la tarjeta y haga que est
preparada para comunicarse con LabView.
54
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
55
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Tras la creacin del init, introducimos la estructura while loop que ser la
encargada de realizar las mismas funciones que la funcin void loop mencionada en
la estructura de Arduino. Esta estructura se ejecutar hasta que cerremos el puerto de
conexin. Es en esta estructura donde se introducirn todos los mdulos de control de la
tarjeta.
NOTA: Los pines 0 y 1 los utiliza LabView para comunicarse con la tarjeta
Arduino.
Una vez tenemos configurado nuestro while-loop, veamos que bloques
tenemos que aadir y que pin usaremos como salida. Para el ejercicio que nos ocupa
conectaremos con la placa mediante el pin 8 mediante la funcin de escritura Digital
Write Pin, quedando el diagrama de bloques en LabView de la siguiente forma:
56
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
57
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
58
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Comentamos a continuacin cada uno de los tres casos creados para cada estado:
Estado Rojo: La secuencia ser Rojo TRUE, mbar FALSE y verde FALSE con
tiempo 1000ms. El estado siguiente debe ser verde.
59
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Estado mbar: La secuencia ser Rojo FALSE, mbar TRUE y verde FALSE con
tiempo 700 ms. El estado siguiente debe ser rojo.
Estado verde: La secuencia ser Rojo FALSE, mbar TRUE y verde FALSE con
tiempo 700 ms. El estado siguiente debe ser mbar.
60
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Tenemos de nuevo tres LEDs y un botn de parada; aadimos tres objetos de entrada de
valor para ajustar los tiempos de cada estado.
El montaje elctrico es el mismo que hemos visto en la prctica 2, por lo que omitimos
su figura y explicacin.
El diagrama de bloques general es el siguiente:
El aadido de lectura del valor de tiempo para cada estado se realiza dentro de
cada estructura Case, como podemos observar en la siguiente figura:
61
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
62
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
4. Servo Read Angle Nos indica la posicin del servo y la sacamos con un
instrumento analgico (Servo 1 en nuestro caso)
63
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
El diagrama de bloques:
El montaje elctrico:
64
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
65
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Proceso de ejecucin:
1. Inicializamos y configuramos la conexin con Arduino mediante el init
2. Configuramos el pin 8 como salida para sentido DERECHA y el pin 9 para
sentido IZQUIERDA
3. Dentro del bucle colocamos una Case Structure encargada de controlar el
motor que ejecutaremos en intervalos de 200 ms. Tendremos dos casos, TRUE y
FALSE. Si es TRUE el giro es hacia la izquierda, por lo que sacaremos los
valores correspondientes a los pines 7 y 8 de Arduino y la velocidad quedar
marcada por el valor del panel. Si es FALSE, girar a derechas e invertiremos
los valores de los pines de salida 7 y 8. Veamos con una tabla los valores para
cada caso:
66
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
4. Colocamos los indicadores de giro para saber por pantalla hacia donde gira el
motor.
5. Detenemos el motor enviando un cero al pin 11 (salida PWM) y cerramos la
conexin con Arduino
6. Tratamos los errores con Simple Error
El cambio en la Case Structure se lleva a cabo mediante un operador del tipo Greater
or Equal To 0
Si recordamos, la velocidad de estos motores se escala desde -255 a 255, que es el valor
mximo admitido por un pin PWM, por lo que interpolamos nuestra escala de -100 a
100 y multiplicamos por 2.5.
67
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
5.1 Introduccin
Navegando por la red hemos encontrado un archivo ejecutable que dispone de todo
lo necesario para programar nuestro Pololu 3pi. El archivo pesa 164 megas y se adjunta
en el DVD de la memoria.
69
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
70
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
71
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Aclaracin: Este robot puede ser programado tambin mediante Arduino. Debido a una
incompatibilidad del programador con la versin actual de Arduino (error de
comunicacin con el puerto serie virtual) tuvimos que buscar una solucin que fue la
expuesta anteriormente.
72
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
6 CAPTULO 6. MAQUETA
6.1 Introduccin
Ilustracin 74 Maqueta
73
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Puente levadizo
En la siguiente figura podemos observar el puente levadizo adquirido en Opitec.
74
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
75
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Tablero
Conseguimos en recuperacin de la UPCT un tablero verde ideal para nuestra
maqueta que tuvimos que cortar para que fuera posible su posterior transporte. Sus
medidas finales son 100x180 centmetros. Pintamos de blanco la carretera por donde
pasarn nuestros robots para mejorar el rendimiento de los cinco sensores QTR a la hora
de seguir la lnea negra (cinta aislante).
Cubrimos todos los huecos con csped artificial para mejorar el aspecto.
Ilustracin 80 Maqueta II
76
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Finalmente optamos por construir prticos escalados a una cierta distancia que
nos sirvieran como estructura y unirlos con varillas para ganar estabilidad.
77
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Semforos
Los cuatro semforos estn construidos con piezas TechCard, de cartn
pretroqueladas, recortadas y premarcadas que son muy fciles de manejar. Vienen a ser
como las estructuras Meccano pero ms econmicas.
Ilustracin 83 TechCards
En tres de sus agujeros colocamos los tres leds (rojo, verde y amarillo) sacando
las conexiones de cada uno. De cada semforo saldrn cuatro conexiones, las tres
seales de control de cada led y la masa de todos.
Ilustracin 84 Semforos
78
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
Ilustracin 85 Barreras I
En las barreras de paso por debajo del puente, pondremos dos tiras blancas antes
de las barreras para evitar que el robot quede girado a la hora de llegar a la zona de
parada; ya que al estar en lnea recta, cuando ve la barrera, tenda a girar hacia el servo.
79
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
81
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
De nuevo nos apoyamos en una prctica anterior; esta vez en la prctica 11, para
programar el motor de continua que elevar y descender el puente.
int botonPin = 2;
int motorPin1 = 3;
int motorPin2 = 4;
int speedPin = 9;
void setup() {
pinMode(botonPin, INPUT);
pinMode(motorPin1 , OUTPUT);
pinMode(motorPin2 , OUTPUT);
pinMode(speedPin, OUTPUT);
digitalWrite(speedPin, HIGH); // Motor on desde principio
}
void loop() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
delay(10000);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
delay(15000);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
delay(8000);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
delay(12000);
}
82
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
83
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
En este caso manejaremos dos a dos las barreras para que cuando unas se abran
para dejar paso, las opuestas se cierren. El mtodo de control es el mismo que en los
programas anteriores: abrimos unas y cerramos otras, esperamos 8 segundos, cerramos
y abrimos y volvemos a esperar otros 8 segundos. De nuevo este proceso se repetir
mientras el circuito est alimentado.
#include <Servo.h>
Servo miServoPuente;
Servo miServoPaso;
int valor;
void setup() {
miServoPuente.attach(6);
miServoPuente.write(0);
miServoPaso.attach(5);
miServoPaso.write(90);
}
void loop() {
miServoPuente.write(90);
miServoPaso.write(0);
delay(8000);
miServoPuente.write(0);
miServoPaso.write(90);
delay(8000);
}
84
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
85
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
86
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
87
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
// Esperamos siempre a que se pulse el botn B para que el robot empiece a moverse
wait_for_button_release(BUTTON_B);
delay_ms(1000);
//Se autocalibran los sensores girando sobre su propio eje a derechas e izquierdas
for(counter=0;counter<80;counter++)
{
if(counter < 20 || counter >= 60)
set_motors(40,-40);
else
set_motors(-40,40);
// Grabamos la posicin de mximo y mnimo percibida por los sensores
//Encendemos los emisores de infrarrojos
calibrate_line_sensors(IR_EMITTERS_ON);
delay_ms(20);
}
set_motors(0,0);
// Muestra los valores de calibracin en barra grfica
while(!button_is_pressed(BUTTON_B))
{
// Se leen los valores tomados en la posicin
unsigned int position = read_line(sensors,IR_EMITTERS_ON);
//Mostramos la posicin medida, que va desde 0 (el sensor ms a la izquierda est
//encima de la lnea) hasta 4000 (el sensor ms a la derecha est sobre la lnea)
clear();
print_long(position);
lcd_goto_xy(0,1);
display_readings(sensors);
delay_ms(100);
}
wait_for_button_release(BUTTON_B);
clear();
print("Vmonos!");
//Suena una musiquita, muestra el mensaje y arranca el robot
play_from_program_space(go);
while(is_playing());
}
88
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
// Funcin main
int main()
{
unsigned int sensors[5]; // Array donde guardaremos los valores de los sensores
// Inicializamos el robot
initialize();
// Funcin "main loop" que siempre se ejecuta
while(1)
{
// Obtiene la posicin de la lnea (todos los sensores)
unsigned int position = read_line(sensors,IR_EMITTERS_ON);
if(position < 1000)
{
// Est lejos la parte derecha de la lnea -> Gira a la izquierda
// Ponemos el motor a derecho a 100 y el izquierdo a 0 para girar
//El valor mximo de velocidad del motor es 255
set_motors(0,100); //0,100
// Simplemente por diversin, indica mediante los Leds azules que direccin est tomando
left_led(1);
right_led(0);
}
else if(position < 3000)
{
// Si est centrado en la lnea, corre ms y recto y enciende los dos Leds azules
set_motors(70,70);
left_led(1);
right_led(1);
}
//Hacemos que pare cuando encuentre la barrera (cartulina)
//Jugando con los valores tomados por los sensores llegamos a la conclusin de que estos
//son los ptimos para su ptimo control
//Paramos el robot y apagamos los Leds
else if(position > 3700)
{
set_motors(0,0);
left_led(0);
right_led(0);
}
//hasta aqu el control de parada
else
{
//Si estamos lejos de la parte izquierda de la lnea, gira a la derecha
set_motors(100,0); //100,0
left_led(0);
right_led(1);
}}
89
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
90
Proyecto Fin de Carrera Plataforma docente para la enseanza de las TIC
basada en la maqueta de un puente colgante
7 Bibliografa
91