Professional Documents
Culture Documents
Arduino
Libro Azul
Elaborado por:
Angel De Jess Hernndez Bran.
Clave: 6, Grupo: 1612
Catedrtico asesor:
Jaime Batres
Guatemala, 2015
Angel HerBra.
ndice
Arduino ............................................................................................................................................... 8
Qu es Arduino? ........................................................................................................................ 8
Qu se puede hacer con Arduino?.......................................................................................... 8
Estructura de un sketch ................................................................................................................... 8
setup() ............................................................................................................................................ 9
loop()............................................................................................................................................... 9
Funciones ...................................................................................................................................... 9
Sintaxis ............................................................................................................................................. 11
{} Entre llaves .............................................................................................................................. 11
; Punto y coma ............................................................................................................................ 11
/* */ bloque de comentarios ................................................................................................... 12
// Lnea de comentarios ............................................................................................................. 12
#define:......................................................................................................................................... 13
#include: ....................................................................................................................................... 14
Declaracin de variables ........................................................................................................... 14
Utilizacin de una variable: ....................................................................................................... 15
Tipos de datos: ............................................................................................................................... 16
Byte:.............................................................................................................................................. 16
Int: ................................................................................................................................................. 16
Float: ............................................................................................................................................. 17
Void:.............................................................................................................................................. 17
Booleano: ..................................................................................................................................... 18
Long: ............................................................................................................................................. 18
Word: ............................................................................................................................................ 18
Unsigned long: ............................................................................................................................ 18
Arrays: .......................................................................................................................................... 19
Aritmtica: ........................................................................................................................................ 21
Asignaciones compuestas: ....................................................................................................... 21
Angel HerBra.
Operadores de comparacin: ................................................................................................... 22
Operadores de bits: ........................................................................................................................ 22
Operadores lgicos (booleanas): ............................................................................................. 22
Lgica AND: ................................................................................................................................ 22
Lgica OR: ................................................................................................................................... 23
Lgica NOT: ................................................................................................................................ 23
Constantes....................................................................................................................................... 23
Cierto/falso (true/false): ............................................................................................................. 23
high/low: ....................................................................................................................................... 24
input/output .................................................................................................................................. 24
Control de flujo (estructuras de control) ...................................................................................... 24
if (si condicional) ......................................................................................................................... 24
if else (si.. sino ..) ................................................................................................................ 25
Else: .............................................................................................................................................. 25
For:................................................................................................................................................ 26
Switch/case statements :........................................................................................................... 27
While:............................................................................................................................................ 28
do while: ................................................................................................................................... 28
Break: ........................................................................................................................................... 29
Continue:...................................................................................................................................... 29
Return:.......................................................................................................................................... 30
Goto: ............................................................................................................................................. 30
e/s digitales:..................................................................................................................................... 31
pinMode(pin, mode) : ................................................................................................................. 31
pinMode(pin, OUTPUT); ............................................................................................................ 31
digitalRead(pin): .......................................................................................................................... 32
digitalWrite(pin, value): .............................................................................................................. 32
e/s analgicas ................................................................................................................................. 34
analogRead(pin): ........................................................................................................................ 34
analogWrite(pin, value):............................................................................................................. 34
Control del tiempo .......................................................................................................................... 36
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
Angel HerBra.
delay(ms): .................................................................................................................................... 36
millis(): .......................................................................................................................................... 36
Matemticas .................................................................................................................................... 37
min(x, y) ....................................................................................................................................... 37
max(x, y) ...................................................................................................................................... 37
constrain(x, a, b): ........................................................................................................................ 38
map(value, fromLow, fromHigh, toLow, toHigh): ................................................................... 38
Parmetros .............................................................................................................................. 39
Aleatorios: ........................................................................................................................................ 40
randomSeed(seed): ................................................................................................................... 40
random(max), random(min, max): ........................................................................................... 41
Comunicacin serie:....................................................................................................................... 42
Serial: ........................................................................................................................................... 42
Serial.begin(rate) ........................................................................................................................ 43
Serial.println(data): ..................................................................................................................... 43
Serial.print(data, data type) ....................................................................................................... 44
Parmetros .............................................................................................................................. 44
Serial.avaible() ............................................................................................................................ 45
Serial.Read(): .............................................................................................................................. 46
Practicas .......................................................................................................................................... 47
1# Encendido de led ................................................................................................................. 47
2# Parpadeo de led :................................................................................................................. 48
3# Encendido de LED con entrada digital ............................................................................. 49
4# Salida analgica .................................................................................................................... 50
5# Entradas analgicas ............................................................................................................ 53
6# Secuenciador de LEDs........................................................................................................ 55
7# Semforo ............................................................................................................................... 57
8# Comunicacin serial (usb, arduino). ................................................................................. 59
9# Sensor de temperatura ....................................................................................................... 62
10# Sensor ultrasnico ............................................................................................................. 64
11# Servo Motor (controlado) ................................................................................................... 67
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
Angel HerBra.
12# Servo Motor controlado analgicamente ........................................................................ 70
13# DS 1307................................................................................................................................ 72
14# ADXL3xx (x,y,z.) ................................................................................................................. 75
15# Pantalla LCD ..................................................................................................................... 77
16# Pantalla LCD Blink .............................................................................................................. 79
17# LCD scroll............................................................................................................................. 81
18# Mdulo Bluetooth (configuracin) .................................................................................... 85
19# Encendido de LED con Bluetooth .................................................................................... 87
20# Sensor de color TCS230 ................................................................................................... 91
Vehculo seguidor de lnea ........................................................................................................... 96
Anexos ........................................................................................................................................... 111
Angel HerBra.
Introduccin
Angel HerBra.
Arduino
Libro Azul
Angel HerBra.
Arduino
Qu es Arduino?
Arduino es una tarjeta electrnica que integra bsicamente a un micro controlador
y un conjunto de pines de conexin de entradas y salidas que permiten, mediante
un determinado programa, interaccionar con el medio fsico mediante sensores y
actuadores electrnicos. De esta forma podrs crear tus propios proyectos
tecnolgicos, dotarlos de sensores que detecten magnitudes fsicas como luz,
calor, fuerza, etc... y en base a esa informacin, escribiendo un programa, activar
otros dispositivos (actuadores) como pequeas bombillas, LEDs, servomotores,
pequeos motores DC, rels, etc... Los sensores se conectan a los pines de
entrada y los actuadores a los de salida.
Estructura de un sketch
La estructura bsica del lenguaje de programacin de Arduino es bastante simple
y se compone de al menos dos partes. Estas dos partes necesarias, o funciones,
encierran bloques que contienen declaraciones, estamentos o instrucciones.
Angel HerBra.
setup()
La funcin setup() se invoca una sola vez cuando el programa empieza. Se utiliza
para inicializar los modos de trabajo de los pins, 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.
loop()
Despus de llamar a setup(), la funcin loop() hace precisamente lo que sugiere
su nombre, se ejecuta de forma cclica, lo que posibilita que el programa este
respondiendo continuamente ante los eventos que se produzcan en la placa.
Funciones
Una funcin es un bloque de cdigo que tiene un nombre y un conjunto de
instrucciones que son ejecutadas cuando se llama a la funcin. Son funciones
setup() y loop() de las que ya se ha hablado. Las funciones de usuario pueden ser
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
Angel HerBra.
tipo nombreFuncin(parmetros)
{
instrucciones;
}
La funcin siguiente devuelve un nmero entero, delayVal() se utiliza para poner
un valor de retraso en un programa que lee una variable analgica de un
potencimetro conectado a una entrada de Arduino. Al principio se declara como
una variable local, v recoge el valor ledo del potencimetro que estar
comprendido entre 0 y 1023, luego se divide el valor por 4 para ajustarlo a un
margen comprendido entre 0 y 255, finalmente se devuelve el valor v y se
retornara al programa principal.
10
Angel HerBra.
Sintaxis
{} Entre llaves
Las llaves sirven para definir el principio y el final de un bloque de instrucciones.
Se utilizan para los bloques de programacin setup(), loop(), if.., etc.
; Punto y coma
El punto y coma ; se utiliza para separar instrucciones en el lenguaje de
programacin de Arduino. Tambin se utiliza para separar elementos en una
instruccin de tipo bucle for.
Nota: Si olvidis poner fin a una lnea con un punto y coma se producir en un
error de compilacin. El texto de error puede ser obvio, y se referir a la falta de un
punto y coma, o puede que no. Si se produce un error raro y de difcil deteccin lo
primero que debemos hacer es comprobar que los puntos y comas estn
colocados al final de las instrucciones.
11
Angel HerBra.
/* */ bloque de comentarios
Los bloques de comentarios, o comentarios multi-lnea son reas de texto
ignorados por el programa que se utilizan para las descripciones del cdigo o
comentarios que ayudan a comprender el programa. Comienzan con / * y terminan
con * / y pueden abarcar varias lneas.
// Lnea de comentarios
Una lnea de comentario empieza con / / y terminan con la siguiente lnea de
cdigo. Al igual que los comentarios de bloque, los de lnea son ignoradas por el
programa y no ocupan espacio en la memoria.
12
Angel HerBra.
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.
#define:
Es un componente C til que permite al programador para dar un nombre a un
valor constante antes de compilar el programa. Constantes definidas en arduino
no ocupan ningn espacio de memoria de programa en el chip. El compilador de
reemplazar las referencias a estas constantes con el valor definido en tiempo de
compilacin.
Esto puede tener algunos efectos secundarios no deseados sin embargo, si por
ejemplo, un nombre de la constante que haba sido #defined est incluido en algn
otro nombre constante o variable. En ese caso el texto se sustituye por el nmero
#defined (o texto).
En general, se prefiere la palabra clave const para las constantes que definen y se
debe utilizar en lugar de #define.
Ejemplo:
13
Angel HerBra.
#include:
Se utiliza para incluir bibliotecas fuera de su dibujo. Esto le da al acceso
programador para un gran grupo de bibliotecas estndar de C (grupos de
funciones pre-hechos), y tambin bibliotecas escrito especialmente para Arduino.
Tenga en cuenta que #include, similar a #define, no tiene terminador punto y
coma, y el compilador producir mensajes de error crpticos si agrega uno.
Ejemplo:
Declaracin de variables
Todas las variables tienen que declararse antes de que puedan ser utilizadas.
Para declarar una variable se comienza por definir su tipo como int (entero), long
(largo), float (coma flotante), etc,
14
Angel HerBra.
Una variable puede ser declarada en una serie de lugares del programa y en
funcin del lugar en donde se lleve a cabo la definicin esto determinar en que
partes del programa se podr hacer uso de ella.
15
Angel HerBra.
Tipos de datos:
Byte:
Byte almacena un valor numrico de 8 bits sin decimales. Tienen unrango entre 0
y 255.
Int:
Enteros son un tipo de datos primarios que almacenan valores numricos de 16
bits sin decimales comprendidos en el rango 32,767 a -32,768.
16
Angel HerBra.
Nota: Las variables de tipo entero int pueden sobrepasar su valor mximo o
mnimo como consecuencia de una operacin. Por ejemplo, si x = 32767 y una
posterior declaracin agrega 1 a x, x = x + 1 entonces el valor se x pasar a ser 32.768. (algo as como que el valor da la vuelta).
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 +38-3.4028235E.
Nota: Los nmeros de punto flotante no son exactos, y pueden producir resultados
extraos en las comparaciones. Los clculos matemticos de punto flotante son
tambin mucho ms lentos que los del tipo de nmeros enteros, por lo que debe
evitarse su uso si es posible.
Void:
La palabra clave void se emplea slo en la declaracin de funciones. Se indica
que se espera que la funcin devuelva ninguna informacin a la funcin de la que
se llama.
17
Angel HerBra.
Booleano:
Un booleano tiene uno de dos valores, verdadero o falso. (Cada variable booleana
ocupa un byte de memoria.)
Long:
Las variables largas (Long) se extienden variables de tamao para el
almacenamiento de nmero, y almacenar 32 bits (4 bytes), desde -2147483648 a
2147483647.
Si hacer matemticas con nmeros enteros, por lo menos uno de los nmeros
debe ser seguido por una L, lo que oblig a ser un largo.
http://www.arduino.cc/en/Reference/IntegerConstants
Word:
Una palabra (Word) almacena un nmero sin signo de 16 bits, de 0 a 65535. La
misma como un unsigned int.
Unsigned long:
Variables de largo sin signo (unsigned long) se amplan las variables de tamao
para el almacenamiento de nmero, y almacenar 32 bits (4 bytes). A diferencia de
los largos estndar largos sin signo no almacenar nmeros negativos, por lo que
su rango de 0 a 4294967295 (2 ^ 32-1).
18
Angel HerBra.
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.
int miArray[] = {valor0, valor1, valor2...} del mismo modo es posible declarar una
matriz indicando el tipo de datos y el tamao y posteriormente, asignar valores a
una posicin especifica:
19
Angel HerBra.
Las matrices se utilizan a menudo para estamentos de tipo bucle, en los que la
variable de incremento del contador del bucle se utiliza como ndice o puntero del
array. El siguiente ejemplo usa una matriz para el parpadeo de un LED.
Utilizando un bucle tipo for, el contador comienza en cero 0 y escribe el valor que
figura en la posicin de ndice 0 en la serie que hemos escrito dentro del array
parpadeo[], en este caso 180, que se enva a la salida analgica tipo PWM
configurada en el PIN10, se hace una pausa de 200 ms y a continuacin se pasa
al siguiente valor que asigna el ndice i.
20
Angel HerBra.
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 operan dos.
Asignaciones compuestas:
Las asignaciones compuestas combinan una operacin aritmtica con una
variable asignada. Estas son comnmente utilizadas en los bucles tal como se
describe ms adelante. Estas asignaciones compuestas pueden ser:
21
Angel HerBra.
Nota: Por ejemplo, x * = 3 hace que x se convierta en el triple del antiguo valor x y
por lo tanto x es reasignada al nuevo valor.
Operadores de comparacin:
Las comparaciones de una variable o constante con otra se utilizan con frecuencia
en las estructuras condicionales del tipo if.. Para testear si una condicin es
verdadera. En los ejemplos que siguen en las prximas pginas se ver su
utilizacin prctica usando los siguientes tipo de condicionales:
Operadores de bits:
Operadores lgicos (booleanas):
Los operadores lgicos son usualmente una forma de comparar dos expresiones y
devolver un VERDADERO o FALSO dependiendo del operador. Existen tres
operadores lgicos, AND (&&), OR (||) y NOT (!), que a menudo se utilizan en
estamentos de tipo if:
Lgica AND:
22
Angel HerBra.
Lgica OR:
Lgica NOT:
Constantes
El lenguaje de programacin de Arduino tiene unos valores predeterminados, que
son llamados constantes. Se utilizan para hacer los programas ms fciles de leer.
Las constantes se clasifican en grupos.
Cierto/falso (true/false):
Estas son constantes booleanas que definen los niveles HIGH (alto) y LOW (bajo)
cuando estos se refieren al estado de las salidas digitales. FALSE se asocia con 0
(cero), mientras que TRUE se asocia con 1, pero TRUE tambin puede ser
cualquier otra cosa excepto cero. Por lo tanto, en sentido booleano, -1, 2 y -200
son todos tambin se definen como TRUE. (esto es importante tenerlo en cuanta).
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
23
Angel HerBra.
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, 5 voltios, mientras que BAJO es lgica nivel 0, OFF, o 0 voltios.
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.
24
Angel HerBra.
programa salta y no ejecuta las operaciones que estn dentro de las llaves, El
formato para if es el siguiente:
En el ejemplo anterior se compara una variable con un valor, el cual puede ser una
variable o constante. Si la comparacin, o la condicin entre parntesis se cumple
(es cierta), las declaraciones dentro de los corchetes se ejecutan. Si no es as, el
programa salta sobre ellas y sigue.
Nota: Tenga en cuenta el uso especial del smbolo '=', poner dentro de if (x = 10),
podra parecer que es valido pero sin embargo no lo es ya que esa expresin
asigna el valor 10 a la variable x, por eso dentro de la estructura if se utilizara
X==10 que en este caso lo que hace el programa es comprobar si el valor de x es
10.. Ambas cosas son distintas por lo tanto dentro de las estructuras if, cuando se
pregunte por un valor se debe poner el signo doble de igual ==.
Else:
Puede ir precedido de otra condicin de manera que se pueden establecer varias
estructuras condicionales de tipo unas dentro de las otras (anidamiento) de forma
que sean mutuamente excluyentes pudindose ejecutar a la vez. Es incluso
posible tener un nmero ilimitado de estos condicionales. Recuerde sin embargo
25
Angel HerBra.
For:
La declaracin for se usa para repetir un bloque de sentencias encerradas entre
llaves un nmero determinado de veces. Cada vez que se ejecutan las
instrucciones del bucle se vuelve a testear la condicin. La declaracin for tiene
tres partes separadas por (;), vemos el ejemplo de su sintaxis:
26
Angel HerBra.
Switch/case statements :
Como si las declaraciones, switch...case controla el flujo de programas
permitiendo a los programadores especificar diferente cdigo que debe ejecutarse
en diversas condiciones. En particular, una sentencia switch compara el valor de
una variable a los valores especificados en las declaraciones de casos. Cuando se
encuentra una sentencia case cuyo valor coincide con el de la variable, se ejecuta
el cdigo en esa declaracin de caso.
27
Angel HerBra.
While:
Un bucle del tipo while es un bucle de ejecucin continua mientras se cumpla la
expresin colocada entre parntesis en la cabecera del bucle. La variable de
prueba tendr que cambiar para salir del bucle.
La situacin podr cambiar a expensas de una expresin dentro el cdigo del
bucle o tambin por el cambio de un valor en una entrada de un sensor.
do while:
El bucle do while funciona de la misma manera que el bucle while, con la salvedad
de que la condicin se prueba al final del bucle, por lo que el bucle siempre se
ejecutar al menos una vez.
28
Angel HerBra.
Break:
Se utiliza para salir de un do, para, o while, sin pasar por el estado normal de
bucle. Tambin se usa para salir de la sentencia switch.
Continue:
La sentencia continue salta el resto de la iteracin actual de un bucle (do, for, or
while). Se contina por el control de la expresin condicional del bucle, y de
continuar con cualquier iteracin posterior.
29
Angel HerBra.
Return:
Terminar una funcin y devolver un valor desde una funcin a la funcin que
llama, si se desea.
Goto:
El flujo del programa Transferencias a un punto marcado en el programa
30
Angel HerBra.
e/s digitales:
pinMode(pin, mode) :
Esta instruccin es utilizada en la parte de configuracin setup () y sirve para
configurar el modo de trabajo de un PIN pudiendo ser INPUT (entrada) u OUTPUT
(salida).
pinMode(pin, OUTPUT);
configura pin como salida las terminales de Arduino, por defecto, estn
configurados como entradas, por lo tanto no es necesario definirlos en el caso de
que vayan a trabajar como entradas. Los pines configurados como entrada
quedan, bajo el punto de vista elctrico, como entradas en estado de alta
impedancia.
Estos pines tienen a nivel interno una resistencia de 20 K a las que se puede
acceder mediante software. Estas resistencias se accede de la siguiente manera:
31
Angel HerBra.
LED (no olvidando poner una resistencia en serie), pero no es lo suficiente grande
como para alimentar cargas de mayor consumo como rels, solenoides, o
motores.
Un cortocircuito en las patillas Arduino provocar una corriente elevada que
puede daar o destruir el chip Atmega. A menudo es una buena idea conectar
en la OUTUPT (salida) una resistencia externa de 470 o de 1000 .
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).
digitalWrite(pin, value):
Enva al pin definido previamente como OUTPUT el valor HIGH o LOW
(poniendo en 1 o 0 la salida). El pin se puede especificar ya sea como una variable
o como una constante (0-13).
32
Angel HerBra.
33
Angel HerBra.
e/s analgicas
analogRead(pin):
Lee el valor de un determinado pin definido como entrada analgica con una
resolucin de 10 bits. Esta instruccin slo funciona en los pines (0-5). El rango de
valor que podemos leer oscila de 0 a 1023.
Nota: Los pins analgicos (0-5) a diferencia de los pines digitales, no necesitan
ser declarados como INPUT u OUPUT ya que son siempre INPUTs.
analogWrite(pin, value):
Esta instruccin sirve para escribir un pseudo-valor analgico utilizando el
procedimiento de modulacin por ancho de pulso (PWM) a uno de los pins de
Arduino marcados como pin PWM. El ms reciente Arduino, que implementa el
chip ATmega168, permite habilitar como salidas analgicas tipo PWM los pines 3,
5, 6, 9, 10 y 11. Los modelos de Arduino ms antiguos que implementan el chip
ATmega8, solo tiene habilitadas para esta funcin los pines 9, 10 y 11. El valor
que se puede enviar a estos pines de salida analgica puede darse en forma de
variable o constante, pero siempre con un margen de 0-255.
34
Angel HerBra.
35
Angel HerBra.
millis():
Devuelve el nmero de milisegundos transcurrido desde el inicio del programa en
Arduino hasta el momento actual. Normalmente ser un valor grande
(dependiendo del tiempo que est en marcha la aplicacin despus de cargada o
despus de la ltima vez que se puls el botn reset de la tarjeta).
36
Angel HerBra.
Matemticas
min(x, y)
Calcula el mnimo de dos nmeros para cualquier tipo de datos devolviendo el
nmero ms pequeo.
Si 'valor' es menor que 100 `valor` recoger su propio valor si valor es mayor que
100 valor pasara a valer 100.
max(x, y)
Calcula el mximo de dos nmeros para cualquier tipo de datos devolviendo el
nmero mayor de los dos.
37
Angel HerBra.
De esta manera nos aseguramos de que valor ser como mnimo 100.
constrain(x, a, b):
Restringe un nmero para estar dentro de un rango.
Parmetros:
x: el nmero para limitar, todos los tipos de datos
a: El extremo inferior de la gama, todos los tipos de datos
b: el extremo superior de la gama, todos los tipos de datos
Devoluciones
x: si x est entre A y B
a: Si x es menor que a
b: si x es mayor que b
No restringir los valores dentro del rango, ya que los valores fuera de rango a
veces se destinan y til. La funcin de restriccin () se puede utilizar ya sea antes
o despus de esta funcin, si se desean lmites de los rangos.
38
Angel HerBra.
Tenga en cuenta que los "lmites inferiores" de cualquiera de rango pueden ser
ms grandes o ms pequeos que los "lmites superiores" para que el mapa ()
funcin se puede utilizar para revertir un rango de nmeros, por ejemplo
La funcin tambin se ocupa de los nmeros negativos, para que este ejemplo
Parmetros
valor: el nmero de mapa
fromLow: el lmite inferior del rango actual del valor
fromHigh: el lmite superior del rango actual del valor
toLow: el lmite inferior del rango objetivo del valor
toHigh: el lmite superior del rango objetivo del valor
Devoluciones
El valor asignado.
39
Angel HerBra.
Aleatorios:
randomSeed(seed):
randomSeed () inicializa el generador de nmeros pseudo-aleatorios, haciendo
que se inicia en un punto arbitrario en su secuencia aleatoria. Esta secuencia,
mientras que muy largo, y al azar, es siempre la misma.
Si es importante para una secuencia de valores generados por azar () para variar,
de las ejecuciones posteriores de un sketch, utilice randomSeed () para inicializar
el generador de nmeros aleatorios con una entrada bastante aleatorio, como
analogRead () en un pin desconectado.
A la inversa, puede ocasionalmente ser til utilizar secuencias de pseudoaleatorios que se repiten exactamente. Esto se puede lograr llamando
randomSeed () con un nmero fijo, antes de comenzar la secuencia aleatoria.
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
40
Angel HerBra.
Parmetros:
largo, int - pasar un nmero para generar la semilla.
41
Angel HerBra.
Comunicacin serie:
Serial:
Se utiliza para la comunicacin entre la placa Arduino y un ordenador u otros
dispositivos. Todas las placas Arduino tienen al menos un puerto serie (tambin
conocido como un UART o USART): Serial. Se comunica en los pines digitales 0
(RX) y 1 (TX), as como con el ordenador a travs de USB. Por lo tanto, si utiliza
estas funciones, no se puede tambin utilizar pines 0 y 1 para la entrada o salida
digital.
Puede usar monitor incorporado de serie del entorno Arduino para comunicarse
con una placa Arduino. Haga clic en el botn de monitor de serie en la barra de
herramientas y seleccione la misma velocidad de transmisin utilizada en la
llamada para comenzar ().
42
Angel HerBra.
Serial.begin(rate)
Abre el puerto serie y fija la velocidad en baudios para la transmisin de datos en
serie. El valor tpico de velocidad para comunicarse con el ordenador es 9600,
aunque otras velocidades pueden ser soportadas.
Nota: Cuando se utiliza la comunicacin serie los pins digital 0 (RX) y 1 (TX) no
puede utilizarse al mismo tiempo.
Serial.println(data):
Imprime los datos en el puerto serie, seguido por un retorno de carro automtico y
salto de lnea. Este comando toma la misma forma que Serial.print(), pero es ms
fcil para la lectura de los datos en el Monitor Serie del software.
43
Angel HerBra.
44
Angel HerBra.
Serial.avaible()
Devuelve Un entero con el nmero de bytes disponibles para leer desde el buffer
serie, o 0 si no hay ninguno. Si hay algn dato disponible, SerialAvailable() ser
mayor que 0. El buffer serie puede almacenar como mximo 64 bytes.
Ejemplo:
45
Angel HerBra.
Serial.Read():
Lee o captura un byte (un caracter) desde el puerto serie. Devuelve el siguiente
byte (carcter) desde el puerto serie, o -1 si no hay ninguno.
46
Angel HerBra.
Practicas
1# Encendido de led
El objetivo de encender un led a travs de un micro controlador arduino es para
iniciarse en la plataforma de programacin de arduino y el comienzo para el
desarrollo de programas ms complejos.
El encendido del led es para aprender a definir variables, salidas y estados de la
salida alto o bajo (HIGH, LOW),
Diagrama:
47
Angel HerBra.
2# Parpadeo de led :
Utilizacin de comandos bsicos que siempre deben de estar en los programas de
ARDUINO.
En el parpadeo del led utilizaremos el circuito anterior con la diferencia en
variaciones del programa, el programa har que el lede se encienda y se apague
cada cierto tiempo.
48
Angel HerBra.
Diagrama:
49
Angel HerBra.
Diagrama:
4# Salida analgica
Las salidas analgicas pueden ser utilizadas cuando se necesita entregar un valor
x en la salida que no se desea que sea encendido o apagado sino un valor
intermedio.
En el siguiente ejemplo se escribir el valor que se desea que tome la salida, en
este caso el led.
Programa:
int led= 13;
void setup()
{
}
voidloop()
{
analogWrite(13,1); //"1" es el valor que tomara el pin 13,
delay(10);
50
Angel HerBra.
Diagrama:
51
Angel HerBra.
52
Angel HerBra.
5# Entradas analgicas
Con las entradas analgicas se pude tomar un rango ms amplio de lecturas que
no sean solo "encendido y apagado", se pueden utilizar para tomar mediciones de
temperatura, resistencia, peso, etc....
El siguiente programa hace que la luminosidad del led sea dependiendo del valor
analgico que se lee en la entrada.
53
Angel HerBra.
Diagrama:
54
Angel HerBra.
6# Secuenciador de LEDs
Esta prctica nos servir para practicar el encendido y apagado de las salidas
digitales, utilizando diferentes salidas que se debern encender y apagar en una
secuencia establecida, la secuencia puede variar dependiendo de cmo la dese.
55
Angel HerBra.
Diagrama:
56
Angel HerBra.
7# Semforo
El objetivo de esta prctica es mejorar el conocimiento de los comandos de
programacin de arduino y que tome en cuenta que siempre se debe de cerrar
cada llave "{-}" que es abierta para no tener errores y que se debe de apagar la
salida cuando no se desea que este activa o de lo contrario se mantendr actica.
57
Angel HerBra.
Diagrama:
58
Angel HerBra.
59
Angel HerBra.
60
Angel HerBra.
Barra de comunicacin
Desplazamient
o de hoja
Velocidad de
comunicacin
Opciones de lnea
61
Angel HerBra.
9# Sensor de temperatura
Utilizar las entradas analgicas y la comunicacin serial del arduino, para
visualizar los valores obtenidos en el ordenador a travs del monitor serial.
Deberemos de utilizar una formula debido el sensor de temperatura (LM35) no
proporciona los datos en grados Celsius.
62
Angel HerBra.
Diagrama:
63
Angel HerBra.
64
Angel HerBra.
65
Angel HerBra.
Diagrama:
66
Angel HerBra.
67
Angel HerBra.
Diagrama:
68
Angel HerBra.
69
Angel HerBra.
70
Angel HerBra.
Diagrama:
71
Angel HerBra.
13# DS 1307
El modulo DS1307 es un reloj de hora y fecha que poses una batera para
seguir contando el tiempo aun que se desconecte de la fuente de alimentacin, se
puede utilizar para realizar una funcin cada cierto tiempo, en minutos, horas, o
das.
72
Angel HerBra.
Programa:
En el siguiente programa configuramos en modulo "DS 1307" con la hora y la
fecha, la hora y la fecha sern tomados del ordenador.
73
Angel HerBra.
Diagrama:
74
Angel HerBra.
75
Angel HerBra.
76
Angel HerBra.
Diagrama:
* Abrir el monitor serial para visualizar los valores que se obtienen del sensor
"ADXL335"
77
Angel HerBra.
Diagrama:
78
Angel HerBra.
79
Angel HerBra.
Diagrama:
80
Angel HerBra.
81
Angel HerBra.
82
Angel HerBra.
83
Angel HerBra.
Diagrama:
84
Angel HerBra.
85
Angel HerBra.
Diagrama:
86
Angel HerBra.
87
Angel HerBra.
1 Resistencia de 330.
1 Led
1 Telfono celular con bluetooth y Android
Programa:
Programa aplicacin:
88
Angel HerBra.
Diagrama:
89
Angel HerBra.
90
Angel HerBra.
El siguiente ejemplo deber de detectar los colores verde, rojo y azul. Activara una
salida dependiendo del color detectado.
Materiales:
1 placa arduino
1mudulo TCS230
Protoboard y cables de conexin.
Programa:
91
Angel HerBra.
92
Angel HerBra.
93
Angel HerBra.
94
Angel HerBra.
Diagrama:
95
Angel HerBra.
Los servo motores los modificaremos para lograr una rotacin continua, ya que en
su interior se encuentra un potencimetro para indicar el ngulo en el que se
encuentra y un tope en los engranajes para evitar que de en giro completo y
continuo.
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
96
Angel HerBra.
Programa:
97
Angel HerBra.
98
Angel HerBra.
99
Angel HerBra.
100
Angel HerBra.
101
Angel HerBra.
102
Angel HerBra.
Aplicacin
103
Angel HerBra.
104
Angel HerBra.
Esquemtico:
Seguidor de lnea:
105
Angel HerBra.
Control:
106
Angel HerBra.
Placas:
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla
107
Angel HerBra.
108
Angel HerBra.
Placa control:
109
Angel HerBra.
110
Angel HerBra.
Anexos
111
Angel HerBra.
112
Angel HerBra.
113
Angel HerBra.
114
Angel HerBra.
Modulo Bluetooth
Cables de conexin
Sensor ultrasnico
ADLX335
Servo motor
Pin header
Macho
Hembra
115
Angel HerBra.
116
Angel HerBra.
117
Angel HerBra.
118
Angel HerBra.
119
Angel HerBra.
120
Angel HerBra.
121
Angel HerBra.
122