Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción A Arduino I
Introducción A Arduino I
FabLab Len
ndice:
Qu es FabLab Len?........................................................... 9
Programacin ..................................................... 13
setup() .............................................................. 15
5.2
loop() ................................................................ 16
Led intermitente.................................................. 17
Circuito .......................................................... 18
6.1.3
Funciones ........................................................... 24
7.2
7.3
FabLab Len
7.4
7.5
7.6
Variables ............................................................ 26
7.7
7.8
7.9
aritmtica .......................................................... 30
7.11
7.12
7.13
7.14
constantes ......................................................... 31
7.15
7.16
High/Low ........................................................... 32
7.17
Input/Output ...................................................... 32
7.18
FabLab Len
E/s analgicas..................................................... 37
Matemticas ....................................................... 39
aleatorios ........................................................... 39
FabLab Len
FabLab Len
Glosario:
ATmega8U2: Microcontrolador usado en las placas Arduino para establecer
la conexin USB
Bit: es el acrnimo de Binary digit o dgito binario. Un bit es un dgito del
sistema de numeracin binario
Bootloader: Es un gestionador de arranque. Es una programacin de que
disponen todos los micros de Arduino para facilitar la comunicacin con el
PC y la programacin.
Byte: secuencia de 8 bits contiguos.
CAD: Computer Aided Design o diseo asistido por ordenador
CAN: es un protocolo de comunicaciones desarrollado por la firma alemana
Robert Bosch GmbH, basado en una topologa bus para la transmisin de
mensajes en ambientes distribuidos, adems ofrece una solucin a la
gestin de la comunicacin entre mltiples CPUs (unidades centrales de
proceso).
Clavija: Parte macho de un conector.
CPU: Central Proces Unit o unidad central de proceso
Conversor A/D: Dispositivo electrnico encargado de convertir una seal
analgica en una sucesin de bits o seal digital
Drivers: Son pequeos programas que permiten que el Sistema Operativo
sepa utilizar las capacidades de un perifrico. Software que se encarga de
interactuar entre el sistema operativo y los dispositivos (hardware).
DFU: (Device Firmware Update), Actualizacin del Firmware del Dispositivo
se trata de un modo que disponen muchos dispositivos que permite
reprogramarle. Es posible reprogramar el dispositivo mientras esta
encendido sin necesidad de programador externo.
EEPROM: son las siglas de Electrically-Erasable Programmable Read-Only
Memory (ROM programable y borrable elctricamente). En espaol se la
suele denominar "EPROM" y en ingls "E-Squared-PROM". Es un tipo de
memoria no voltil que puede ser programado, borrado y reprogramado
elctricamente.
Firmware: Programacin interna de un dispositivo que le permite controlar
su propio hardware.
FLASH: La memoria flash es una forma desarrollada de la memoria
EEPROM que permite que mltiples posiciones de memoria sean escritas o
borradas en una misma operacin de programacin mediante impulsos
elctricos, frente a las anteriores que slo permite escribir o borrar una
nica celda cada vez. Por ello, flash permite funcionar a velocidades muy
FabLab Len
FabLab Len
FabLab Len
1 Qu es FabLab Len?
La misin de Fab Lab Len es convertirse en un ecosistema que
aliente y ayude a las personas a construir (casi) todo lo que puedan
imaginar.
Un Fab Lab es un proyecto de la organizacin sin nimo de
lucro tMA, y consiste en un espacio de trabajo comunitario, a un
coste razonable, que sirve como incubadora de investigacin, de
iniciativas creativas y de negocios, que permite el crecimiento
personal, el desarrollo econmico e incrementa las capacidades
locales.
El concepto de Fab Lab refleja un nuevo paradigma de la
fabricacin en el que las personas definen los problemas, crean las
soluciones y comercializan los productos.
El Fab Lab elimina barreras como el capital fundacional, el
acceso a equipamiento y el acceso a expertos, alentando un cambio
sistmico de
de
innovacin y
de
emprendimiento.
FabLab Len
Arduino UNO
FabLab Len
10
FabLab Len
11
3 Software de Arduino
La Arduino Uno tiene una gran cantidad de posibilidades para la
comunicacin
con
microcontrolador
un
de
ordenar,
esta
otros
placa
microcontroladores.
(Atmega328)
El
proporciona
comunicacin serie UART TTL (5V), que est disponible en los pines
digitales 0 (RX) y 1 (TX). El ATmega8U2 integrado en la tarjeta
permite transfiere esta comunicacin sobre el USB y aparece con un
puerto COM virtual para el software del ordenador. El firmware del
8U2 emplea los drivers estndar para el puerto USB, por lo tanto no
son necesarios drivers externos. Sin embargo bajo Windows es
necesario un archivo .inf. El software the Arduino incluye un monitor
serie que permite el envo y recepcin de datos de texto plano entre
el ordenador y la tarjeta. Los leds de RX y TX se iluminaran durante
la transmisin de los datos
FabLab Len
12
3.1 Programacin
El Arduino Uno puede ser programado con el software gratuito
Arduino (descargable de su pgina web). Una vez descargado no es
necesario instalarlo basta con descomprimir la carpeta y ejecutar
arduino.exe.
A continuacin se debe conectar la tarjeta con su cable USB.
Windows tratara de buscar el controlador adecuado, como no lo
encontrara, nosotros debemos de actualizar el controlador.
FabLab Len
13
Serial
Programming).
El firmware que usa el ATmega8U2 tambin est disponible.
Este chip est cargado con un bootloader DFU, que puede ser
activado conectando el jumper de soldadura en la parte posterior de
la placa y posteriormente reseteando el 8U2. As despus se podr
hacer la programacin con un programador DFU (no usado en este
taller).
FabLab Len
14
vo i d se t u p ()
{
i n str u cci o n e s;
}
vo i d l oo p ()
{
i n str u cci o n e s;
}
son
correctamente.
necesarias
La
funcin
para
de
que
el
configuracin
programa
debe
funcione
contener
la
5.1 setup()
La funcin setup() se invoca una sola vez cuando el programa
empieza. Se utiliza para inicializar los modos de trabajo de los pines,
o el puerto serie. Debe ser incluido en un programa aunque no haya
declaracin que ejecutar. As mismo se puede utilizar para establecer
el estado inicial de las salidas de la placa.
FabLab Len
15
5.2 loop()
Despus
de
finalizar
setup(),
la
funcin
loop()
hace
FabLab Len
16
6 Ejemplos a implementar
6.1 Led intermitente
En la mayora de los lenguajes de programacin, el primer
programa que escribes imprime en la pantalla del ordenador la frase
"Hola Mundo". Ya que una placa Arduino no tiene una pantalla (ya la
se la pondremos), podemos hacer parpadear un Led.
Las placas estn diseadas para que hacer parpadear un Led
sea muy fcil. Algunas tienen un Led directamente incorporado en la
placa para este pin. Si no lo tiene, usarlo es igual de sencillo solo
necesitamos una resistencia de 220 Ohm y el Led.
Los Leds tienen polaridad, lo que significa que solo encendern
si estn correctamente polarizados. El terminal ms largo es el
positivo y deber estar conectado al pin elegido. El terminal corto
debe conectarse con la tierra (GND), la capsula del LED tiene un
borde plano en este extremo. Si el LED no enciende, trata de
conectarlo de manera opuesta, intercambiando los terminales de
posicin (no daaras el LED si lo conectas en sentido opuesto).
FabLab Len
17
6.1.1 Cdigo
El cdigo de ejemplo es sencillo:
/*
Bli n k
T u r n s o n a n L ED o n f o r o n e se co n d , t h e n o f f f o r on e se co nd ,
r e p e a t edl y.
T hi s e xa mp l e co d e i s i n t h e p u bli c do ma i n .
*/
vo i d se t u p () {
/ / ini ti al i ze t h e d igi t al pi n a s a n o ut pu t .
/ / Pi n 1 2 h a s a n L ED co n n e ct e d o n mo st Ar d u i n o b o a rd s:
p i n Mo d e( 1 2 , O UT PUT ) ;
}
vo i d l oo p () {
d i gi talW rit e ( 12 , HI G H ) ;
d e la y ( 1 00 0 ) ;
//
d i gi talW rit e ( 12 , L OW ) ;
d e la y ( 1 00 0 ) ;
//
}
/ / se t t h e
wa i t fo r a
/ / set t h e
wa i t fo r a
LED o n
se co n d
LED o f f
se co n d
6.1.2 Circuito
FabLab Len
18
6.1.4 Ejercicio 1:
Construir y programar una tira de 5 Leds que simule el efecto
coche fantstico
FabLab Len
19
FabLab Len
20
6.2.1 Cdigo
No te preocupes si ahora no comprendes todo el cdigo, basta
con que sepas modificar alguna parte y veas lo que va sucediendo.
/*
Bu t t o n
*/
/ / co n st a n t s wo n ' t ch a n g e . T h e y' r e u s e d h e r e t o
/ / se t pi n nu mb e r s:
co n st in t b u tt o n Pin = 2 ;
/ / t h e n u mb e r o f th e p u shb u t t o n pi n
co n st in t l e d Pi n = 1 2;
/ / t h e n u mb e r o f t he L ED pi n
/ / va ri a bl e s will ch an g e :
i n t bu t t o n St a te = 0 ;
st a t u s
/ / vari a bl e fo r r e ad in g t h e p u sh bu t t o n
vo i d se t u p () {
/ / ini ti al i ze t h e L ED p in a s a n o u t p u t:
p i n Mo d e(l e d Pi n , O UT PUT) ;
/ / ini ti al i ze t h e p u sh b u tt o n pi n a s a n i n pu t :
p i n Mo d e( b u t to n Pi n, I NPUT ) ;
}
vo i d l oo p () {
/ / r e a d t h e st at e o f th e p u shb u t t o n va l u e:
b u t t o n St a t e = di gi t al Re a d( b u t t on Pi n) ;
/ / ch e ck i f t he p u shb u t t o n i s p r e ssed.
/ / if i t i s, t h e b u t t o n St at e i s HI G H:
i f ( b u t t on St a t e == HI G H) {
/ / t u rn L ED o n :
di gi t alW ri t e (le d Pin , HI G H) ;
}
e l se {
/ / t u rn L ED o f f :
di gi t alW ri t e (le d Pin , L OW ) ;
}
}
6.2.2 Circuito
FabLab Len
21
FabLab Len
22
6.2.4 Ejercicio 2:
A partir del ejercicio 1 hacer que la tira de leds se detenga al
pulsar el botn.
6.2.5 Ejercicio 3 complementario:
Con los montajes anteriores colocar 2 pulsadores uno que
encienda el efecto coche fantstico y otro que lo apague.
FabLab Len
23
FabLab Len
24
hacer
clic
en
el
punto de
insercin
de
una llave
abierta e
FabLab Len
25
7.6 Variables
Una variable es una manera de nombrar y almacenar un valor numrico
para su uso posterior por el programa. Como su nombre indica, las variables son
nmeros que se pueden variar continuamente en contra de lo que ocurre con las
constantes cuyo valor nunca cambia. Una variable debe ser declarada y,
opcionalmente, asignarle un valor. El siguiente cdigo de ejemplo declara una
variable llamada variableEntrada y luego le asigna el valor obtenido en la entrada
analgica del PIN2:
i n t vari a bl e En tr a d a = 0 ; / / d e cl ar a u na va ri a bl e y le
/ / a sig n a el valo r 0
va r ia bl e En t r ad a = a n al og Re a d (2 ) ; / / la va ri a bl e r e co g e
/ / e l va lo r an al gi co de l PI N2
'variableEntrada' es la variable en s. La primera lnea declara que ser de
tipo entero int. La segunda lnea fija a la variable el valor correspondiente a la
entrada analgica PIN2. Esto hace que el valor de PIN2 sea accesible en otras
partes del cdigo. Una vez que una variable ha sido asignada, o re-asignada, usted
puede probar su valor para ver si cumple ciertas condiciones, o puede utilizar
directamente su valor. Como ejemplo ilustrativo veamos tres operaciones tiles con
variables: el siguiente cdigo prueba si la variable entradaVariable es inferior a
100, si es cierto se asigna el valor 100 a entradaVariable y, a continuacin,
establece un retardo (delay) utilizando como valor entradaVariable que ahora
ser como mnimo de valor 100:
i f (e n t r ad a Va ri a bl e < 1 0 0 ) / / p re g u n t a si l a vari a bl e e s
{ / / me n o r d e 1 0 0
e n t r a d a Vari a bl e = 1 00 ; / / si e s ci er t o a si g na el val or
} //100
d e l a y( e n tr a d a Va ria bl e ) ; // u sa el va lor co mo r e t a r d o
Nota: Las variables deben tomar nombres descriptivos, para hacer el cdigo
ms legible. Los nombres de variables pueden ser contactoSensor o pulsador
, para ayudar al programador y a cualquier otra persona a leer el cdigo y
entender lo que representa la variable. Nombres de variables como var o
valor, facilitan muy poco que el cdigo sea inteligible. Una variable puede ser
cualquier nombre o palabra que no sea una palabra reservada en el entorno de
Arduino.
FabLab Len
26
FabLab Len
27
7.9.2 Int
Enteros son un tipo de datos primarios que almacenan valores numricos de
16 bits sin decimales comprendidos en el rango 32,767 to -32,768.
7.9.3 Long
El formato de variable numrica de tipo extendido long se refiere a
nmeros enteros (tipo 32 bits) sin decimales que se encuentran dentro del rango 2147483648 a 2147483647.
l o n g u n a Va ri abl e = 9 0 0 00 ; / / de cl a r a 'u n a Va ri a bl e' co mo
/ / d e ti p o l on g
7.9.4 Float
El formato de dato del tipo punto flotante float se aplica a los
nmeros con decimales. Los nmeros de punto flotante tienen una mayor
resolucin que los de 32 bits con un rango comprendido 3.4028235E +38 a +383.4028235E.
FabLab Len
28
7.9.5 arrays
Un array es un conjunto de valores a los que se accede con un nmero
ndice. Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y
el nmero del ndice. El primer valor de la matriz es el que est indicado con el
ndice 0, es decir el primer valor del conjunto es el de la posicin 0. Un array tiene
que ser declarado y opcionalmente asignados valores a cada posicin antes de ser
utilizado.
i n t mi Ar r a y[ ] = { val o r 0, val o r 1, val o r2 .. . }
FabLab Len
29
7.10 aritmtica
Los operadores aritmticos que se incluyen en el entorno de programacin
son suma, resta, multiplicacin y divisin. Estos devuelven la suma, diferencia,
producto, o cociente (respectivamente) de dos operandos.
y = y + 3; x = x - 7; i = j * 6; r = r / 5;
La operacin se efecta teniendo en cuenta el tipo de datos que hemos
definido para los operandos (int, dbl, float, etc..), por lo que, por ejemplo, si
definimos 9 y 4 como enteros int, 9 / 4 devuelve de resultado 2 en lugar de
2,25 ya que el 9 y 4 se valores de tipo enteroint (enteros) y no se reconocen
los decimales con este tipo de datos.
Esto tambin significa que la operacin puede sufrir un desbordamiento si el
resultado es ms grande que lo que puede ser almacenada en el tipo de datos.
Recordemos el alcance de los tipos de datos numricos que ya hemos explicado
anteriormente. Si los operandos son de diferentes tipos, para el clculo se utilizara
el tipo ms grande de los operandos en juego. Por ejemplo, si uno de los nmeros
(operandos) es del tipo float y otra de tipo integer, para el clculo se utilizara el
mtodo de float es decir el mtodo de coma flotante.
Elija el tamao de las variables de tal manera que sea lo suficientemente
grande como para que los resultados sean lo precisos que usted desea. Para las
operaciones que requieran decimales utilice variables tipo float, pero sea consciente
de que las operaciones con este tipo de variables son ms lentas a la hora de
realizarse el cmputo.
Nota: Utilice el operador (int) para convertir un tipo de variable a otro sobre
la marcha. Por ejemplo, i = (int) 3,6 establecer i igual a 3.
FabLab Len
30
+= y / / i g u al q u e x = x + y, o i n cre me n t o d e x e n +y
- = y / / i g u al qu e x = x - y, o d e cr e me n t o d e x e n - y
* = y / / i g u al q u e x = x * y, o mu l t i plica x p o r y
/ = y / / i g u al q ue x = x / y, o d i vi d e x p o r y
== y / / x e s i g u al a y
! = y / / x n o e s ig u al a y
< y / / x e s me n o r q u e y
> y / / x e s ma yo r q u e y
<= y / / x e s me n o r o i gu a l q u e y
>= y / / x e s ma yo r o i g ual q u e y
Lgica OR:
i f ( x > 0 || y > 0 ) / / ci e r to si u n a cu al qu i er a d e la s
/ / e xp r e si on e s e s ci er t a
Lgica NOT:
i f (! x > 0 ) / / cie r t o so lo si l a e xp r e si n e s
/ / f al sa
7.14 constantes
El
lenguaje
de
programacin
de
Arduino
tiene
unos
valores
FabLab Len
31
7.16 High/Low
Estas constantes definen los niveles de salida altos o bajos y se utilizan para
la lectura o la escritura digital para las patillas. ALTO se define como en la lgica de
nivel 1, ON, o 5 voltios, mientras que BAJO es lgica nivel 0, OFF, o 0 voltios.
d i gi t alW rit e ( 1 3, HI G H) ; / / a cti va l a sal i d a 1 3 co n u n
/ / n i ve l al t o (5 v. )
7.17 Input/Output
Estas constantes son utilizadas para definir, al comienzo del programa, el
modo de funcionamiento de los pines mediante la instruccin pinMode de tal
manera que el pin puede ser una entrada INPUT o una salida OUTPUT.
p i n Mo d e( 1 3 , O UT PUT ) ; / / d e si g n a mo s q u e el PI N 1 3 e s
/ / u n a sali d a
if (si condicional)
FabLab Len
32
7.18.2
FabLab Len
33
7.18.3
for
7.18.4
while
FabLab Len
34
7.18.5
do while
pinMode(pin, mode)
FabLab Len
35
7.19.2
digitalRead(pin)
Lee el valor de un pin (definido como digital) dando un resultado HIGH (alto)
o LOW (bajo). El pin se puede especificar ya sea como una variable o una constante
(0-13).
va l or = di gi t al Re a d( Pin ) ; / / h a ce qu e 'va l or se a i gu al
/ / a l e st a d o le d o en Pi n
7.19.3
digitalWrite(pin, value)
FabLab Len
36
analogRead(pin)
Lee el valor de un determinado pin definido como entrada analgica con una
resolucin de 10 bits. Esta instruccin solo funciona en los pines (0-5). El rango de
valor que podemos leer oscila de 0 a 1023.
va l or = a n al o g Re a d (p in ) ; / / a si g n a a va l or l o q ue l e e
/ / e n l a e nt r a d a pi n'
Nota: Los pines analgicos (0-5) a diferencia de los pines digitales, no
necesitan ser declarados como INPUT u OUPUT ya que son siempre Inputs.
7.20.2
analogWrite(pin, value)
FabLab Len
37
delay(ms)
7.21.2
millis()
FabLab Len
38
7.22 Matemticas
7.22.1
min(x, y)
7.22.2
max(x, y)
7.23 aleatorios
7.23.1
randomSeed(seed)
7.23.2
FabLab Len
39
Serial.begin(rate)
7.24.2
Serial.println(data)
FabLab Len
40
7.24.3
7.24.4
Serial.avaible()
FabLab Len
41
7.24.5
Serial.Read()
FabLab Len
42