Está en la página 1de 57

ARDUBLOCK

MANUAL BSICO DE ARDUBLOCK


Para programar Arduino sin saber Arduino
Por Ana Nez Prez

INDICE
1. PRIMERAS NOCIONES

2. EMPEZAMOS
AMOS A TRABAJAR

3. POR DNDE EMPEZAMOS

10

4. NUESTRA PRIMERA PRCTICA: LED INTERMITENTE

14

5. FUNCIN REPITE

16

6. PRACTICA: SOS

17

7. PRACTICA: EL SEMAFORO

18

8. PRACTICA: GOBIERNO DEL ENCENDIDO DE UN LED (SALIDA)


MEDIANTE UN PULSADOR (ENTRADA DIGITAL)

19

9. PRCTICA: LED (SALIDA) INTERMITENTE CON CONTROL DE FRECUENCIA


MEDIANTE UN POTENCIOMTRO (ENTRADA ANALGICA

22

10. PRCTICA: CONECTAR UNA SALIDA DIGITAL CON UN PULSADOR (ENTRADA


DIGITAL) Y APAGARLA CON OTRA ENTRADA DIGITAL DIFERENTE.
FUNCIN WHILE (MIENTRAS QUE)
24
11. PRCTICA: CONTROL DE UN MOTOR

27

12. PRCTICA 8: CONTROL DE UN SERVOMOTOR (giro 180

29

13. PRCTICA:: SERVO CONTRALADO POR SEALES EXTERNAS

35

14. PRCTICA: SENSOR DE LUZ 1(LDR

37

15. PRCTICA: SENSOR DE LUZ 2 (EL FOTOTRANSITOR).

40

16. PRCTICA: SENSOR IR,, SENSOR DE LUZ INFRAROJA.


INFRAROJA

41

17. PRCTICA: ULTRASONIDOS SR04

43

18. PRCTICA: ROBOT MINISKYBOT (ARDUINO)

50

19. PRCTICA: CDIGO ESCOBA (ARDUINO)

54

20. PRCTICA: SIGUELINEAS CON ARDUBLOCK

56

21. DOCUMENTACIN BIBLIOGRAFA WEBGRAFA

57

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

1.

PRIMERAS NOCIONES

ARDUBLOCK
Qu es Ardublock?: Ardublock es un lenguaje grfico de
programacin que se distribuye como un pluging de java y que
se aade a las herramientas del IDE de Arduino, con lo que
permite la elaboracin de programas para Arduino sin necesidad
de escribir el cdigo con la sintaxis de sus rdenes.
Se basa en
n el uso de una sencilla interfaz grfica utilizando un sistema de bloques, que
simbolizan diferentes elementos de programacin, por ejemplo: instrucciones,
condiciones, variables, bucles, etc. Estos bloques de programacin se van
ensamblando, como las piezas de un puzle hasta formar programas, lo que hace que
esta herramienta sea de gran utilidad para iniciar a nuestros alumnos en la
programacin con Arduino ya que tiene la posibilidad de pasar nuestro programaprograma
puzle a lenguaje Arduino permitiendo ver
ver a nuestros alumnos a qu sentencias
equivalen cada pieza del puzle.
puzle. . Adems se trata de una aplicacin libre y es muy fcil
de instalar y manejar.

LA PLACA ARDUINO UNO


Arduino UNO es una tarjeta electrnica sencilla y de bajo precio diseada para el
aprendizaje de electrnica y la creacin de prototipos.
Qu nos vamos a encontrar en esta tarjeta:
Pines digitales:: la tarjeta Arduino UNO tiene 14 patillas digitales que pueden actuar
tanto como entradas de datos (E) como de salidas (S), dependiendo de lo
l que
nosotros queramos conectar en ellas, elementos de control, o actuadores.
Por ejemplo, podramos conectar un pulsador (elemento de control) en la patilla 7
(pin 7), con lo que la estaramos usndola como entrada y un LED (actuador) en el
pin 13, con lo que la patilla 13 la estaramos utilizando como salida.
Nota: en el Pin 13 hay un LED y una resistencia asociada soldados a la placa,
cuando el pin es de alto valor, el LED est encendido, cuando el valor est bajo, es
apagado.
Entradas analgicas: En estos pines podemos
podemos conectar distintos sensores como
sensores de luz, temperatura, etc. Esta placa tiene 6.
Memoria Flash: En ella se grabar nuestro programa, la de nuestra placa es de
32Kb.

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Memoria RAM:: dispone de una RAM de 2 Kb


Memoria auxiliar:: de un 1Kb
Patillas digitales (pin)

Pines analgicos

Esta es la placa con la que trabajaremos, y las patillas digitales pueden verse en a
la parte superior (P0,1,2,34,5,6,7,8,9,10,11,12,13) y en la inferior las analgicas,
numeradas como A0, A1,.. Tambin en la parte inferior
inferior se encuentra el botn Reset,
que permite reiniciar el bootloader y cargar un nuevo programa, tambin se puede
hacer desde el IDE de Arduino.
En la parte derecha
echa podemos ver el puerto USB,a
USB,a la izquierda la entrada de corriente.
Seis de las entradas digitales
itales se pueden emplear como entradas PWM. Esto quiere
decir que permiten simular un comportamiento analgico enviando seales de valor
variable, de cara a modificar la intensidad de iluminacin de un LED o la
la velocidad de
giro de un motor, se corresponde
orresponden
n a los pines 3, 5, 6, 9, 10 y 11, y permiten enviar
seales de 256 valores distintos entre 0 y 5 voltios.
La alimentacin de Arduino UNO se realiza a travs de la entrada USB, o bien a travs
de la entrada de corriente SHIELDS DE ARDUINO

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Los shields son placas que se empotran encima de una placa Arduino y que ofrecen
funcionalidades complementarias a las de esta evitndonos tener que montar circuitos
para probar nuestros programas, una de ellas es la Arduino

Dasic I/O

ARDUINO BASIC I/O


Para poder realizar
zar montajes de electrnica de control con Arduino deberamos
trabajar con nuestros propios circuitos elctricos y electrnicos empleando placas
Proto Board, pero para simplificarnos algunas prcticas tambin podemos usar una
placa hecha exprofeso para entornos docentes por la empresa vasca MSE Bilbao, la
placa BASIC I/O, que podemos ver en la imagen.
Las entradas digitales se identifican con
una D y un nmero,
ero, y ya van asociadas a
LEDs pines 11, 10, 9 y 6, tiene tambin 4
pulsadores (pines
pines 12, 8, 7 y 4), un altavoz
(pin 2), conectores para motores
motor (pines
M+ y M-),, que corresponden a dos
tornillos de la parte superior
erior derecha, y
conexiones para servos (SV1 y SV2).
Las entradas analgicas se identifican con
una A y entre ellas tenemos: dos
potencimetros
os (pines 0 y 1, situados en
la esquina inferior izquierda de la
imagen), a su derecha, de color blanco, un
fotodiodo (pin 2),, siguiendo hacia la
derecha dee la imagen, un sensor IR (pin
(
3), a su derecha,, un sensor de
temperatura (pin 4) y en la esquina
inferior
erior derecha de la imagen tenemos un transistor. Por ltimo arriba a la izquierda se
encuentra el botn de RESET.
Con esta placa ya tenemos creados los circuitos elctricos y electrnicos necesarios
para poder empezar a programar en Arduino.

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

2.

EMPEZAMOS
AMOS A TRABAJAR

Para empezar a trabajar lo primero que tenemos que hacer es instalar el software
necesario y para ello debers seguir los pasos siguientes:
1 paso:: Descargad e instalad el entorno Arduino siguiendo las instrucciones de
http://arduino.cc/en/Main/Software
2 paso (Seleccionar
Seleccionar la placa Arduino que vamos a utilizar ):
): Conectad la placa
Arduino a un puerto USB de vuestro ordenador, entonces se instalar el nuevo
hardware y fgaros
os en qu puerto est conectada. Siempre podris comprobarlo
en el administrador de dispositivos-puertos
dispositivos
COM y LPT.
En mi caso la placa Arduino se ha instalado en el puerto COM 28

A continuacin en el men Herramientas - Tarjeta,, seleccionamos la versin


de la placa que vamos a utilizar (en mi caso veris que se trata de la placa Arduino
Uno).

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Ahora debemos seleccionar el canal el canal de comunicaciones que va a


emplear nuestro ordenador para comunicarse con la tarjeta. Pare ello en el men
Herramientas Puerto Serial,
Serial, seleccionad el puerto serie en qu est conectada la
placa.

Nota: Esto solo lo tienes que hacer


la primera vez que la conectas.

3 paso:: Para instalar Ardublock tenemos que ir primero a la pgina de


referencia: http://blog.ardublock.com.
http://blog.
Luego all ir donde pone download y
descaragr el archivo .jar,
o ir directamente al enlace descarga
(http://sourceforge.net/projects/ardublock/files/
http://sourceforge.net/projects/ardublock/files/).
Si prefieres otra opcin puedes es descargartelo
descargarte directamente en el fichero
ardublock-all.jar
desde
la
pgina
ArduBlock,
http://cloud.github.com/downloads/taweili/ardublock/ardublock
cloud.github.com/downloads/taweili/ardublock/ardublock-all.jar
all.jar
4 paso:: En carpeta en donde est instalado el IDE Arduino
uino debemos incluir el
fichero ardublock-all.jar.
all.jar.
Para asegurarnos dnde lo tenemos instalado hacemos lo siguiente: Abrimos
Arduino y verificamos
erificamos la ruta del Sketchbook, eso lo hacemos el men de Arduino Archivo ->> Preferencias clicamos y nos aparecer la ventana con
co la ubicacin
del Sketchbook. En mi caso: C:\Users\ana\Documents\Arduino
C:
.

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Ahora que ya sabemos donde est instalado, cerramos el IDE de Arduino y lo


abriremos de nuevo cuando tengamos el archivo .jar copiado.
Nos vamos a la carpeta de Arduino (a
(a la direccin que acabamos de verificar) y en ella
creamos una carpeta tools, luego dentro de sta creamos otra a la que llamamos
ArduBlockTool, y dentro de sta, otra carpeta que se llame tool. Finalmente,
dentro de tool copiamos el archivo .jar que hemos descargado.
En mi caso:

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Arrancamos de nuevo el IDE de Arduino y vamos al men de Herramientas, donde


ahora debe aparecer Ardublock.

Hacemos clic, se nos abrir una nueva pantalla de trabajo, la de Ardublock como la de
Arduino

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

3.

POR DNDE EMPEZAMOS

Ya con nuestra pantalla de Ardublock abierta vamos a ver con que nos encontramos.

Guardar
programa

Subir programa
(pasarlo a
Arduino)

Cargar un programa
Zoom al programa

Libreras y
funciones (las
piezas del puzle),
estn clasificadas
segn su funcin

10

rea de trabajo donde montaremos


nuestro puzle

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Ahora vamos a analizar un poco las libreras de Ardublock. Como veras estn
clasificadas por colores segn su funcionalidad,
funcionalidad, son muy intuitivas y sencillas de
manejar. Como ya hemos dicho van encajndose unas en otras como las piezas de un
puzle, si colocamos una funcin o pieza con otra cuya forma no encaja al igual que
ocurre en un puzle la unin no quedar bien realizada,
realizada, sin embargo si la funcin si se
corresponde con el tipo de piezas que deben encajar entre
entr s se oir un clac al
unirlas, esto es muy til para ir aprendiendo que en programacin hay ciertas reglas
que se deben cumplir.

Funciones de Control, estas


as piezas permiten
realizar:
Bucle: ejecuta la accin de forma indefinida.
Si/entonces: ejecuta otras instrucciones de
manera condicional (est tiene tres enganches) en
condicin, colocamoss la instruccin que establece
la condicin, en el primer entonces la accin que se
ejecutar si la condicin es verdadera,
verdadera y en el
segundo entonces la que la accin que se ejecutar
si la condicin es falsa.

Mientras que: al establecer una condicin se


mantiene la accin encajada en la parte inferior de
la ficha del puzle,
zle, mientras la condicin establecida
siga siendo verdadera.
Repite: En la parte superior aparecer el
nmero de veces que se repite la accin colocada
en hueco inferior de la pieza.

11

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Funciones de Pines, con ellas se lleva a cabo la


gestin de lass entradas y salidas tanto analgicas
como digitales.
Por ejemplo:

Permite leer el
estado de una entrada digital, al colocarla en al
rea de trabajo nos aparecer asociada al un
nmero 1
al clicar
sobre el nmero escogeremos el nmero del pin
que queramos
ramos leer. Lo mismo para pin analgico.

Con esta funcin podemos darle el valor alto

o
bajo a la entrada o salida elegida.

con esta funcin


gestionaremos los valores de los servos como el
ngulo inicial.

12

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Aqu encontramos fichas muy


utilizadas en los proyectos para
temporizar como por ejemplo la
funcin retardo, que detiene el
progreso del programa los
milisegundos que indiquemos.

Estos operadores permiten


realizar operaciones lgicas y
aritmticas, como por ejemplo las
funciones lgicas AND, NOT, OR

Con ellas podemos dar valores


valo
para
operar con ellos (1,2,..) o constantes
(alto, bajo, verdadero)
verdadero
a las
entradas y salidas. Fjate que sus
formas encajan con las funciones de
pines vistas anteriormente.

Estn dedicados
dicados al control de perifricos concretos, como LED,
analgicos de sonido, etc.

13

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Rels, Sensores

4.

NUESTRA PRIMERA PRCTICA: LED INTERMITENTE

Nuestro primer ejercicio ser el apagado y encendido del led rojo de la tarjeta de
experimentacin ARDUINO BASIC I/O, este led se corresponde con la salida D11. Y el
programa por lo tanto quedar como se ve en la figura. Fjate que una vez formado
nuestro puzle daremos a la tecla Upload

y automticamente nos aparecer en la


pantalla de Arduino el mensaje compilando

el sketch y en unos segundos el


programa estar
tar cargado en nuestra placa, entonces aparecer el mensaje carga

completada.
. Ahora ya puedes ver tu primer programa traducido a Arduino.

Si no dispones de la de la tarjeta de experimentacin ARDUINO


ARDUINO BASIC I/O, pues no
pasa nada, basta con que realices este sencillo
montaje en tu placa Arduino UNO:

14

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Si no usamos el pin digital 13 de Arduino para conectar el LED necesitaramos


una resistencia de unos 200 ohmios (el valor estndar ms cercano es de
d 220 ohmios),
este valor lo obtenemos con un sencillo clculo:
Un LED normal necesita de entre 5 y 20 mA para encenderse, por lo que
necesitaremos unos 15mA para que el LED luzca bien.
La alimentacin del Arduino UNO es de 5V.
5
En el LED caern 2 V
En la resistencia
esistencia deben caer unos 3 V

Por lo tanto:
5-2=3V
Aplicando la ley de Ohm (Tensin = Intensidad * Resistencia):
V=I*R
Puesto que conocemos V e I podremos calcular R:
R=V/I
Con los valores:
R = 3 / 0.015 = 200
Por lo tanto necesitaremos la
l resistencia del mercado que ms se aproxime
xime a 200 ,
que es una de 220 .

Si usamos el pin digital 13 de la placa Arduino no


usaremos una resistencia externa ya que la placa
incorpora dicha resistencia.

15

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

5.

FUNCIN REPITE:

Dentro la biblioteca de control una de las funciones que podemos encontrar es la


funcin repite. Esta funcin nos puede ser de utilidad para ahorrarnos el
e repetir un
nmero de veces determinadas rdenes en nuestros programas.

Aqu indicaremos el nmero de repeticiones.

Y aqu, indicaremos la instruccin que queremos se repita.

Este sera un ejemplo de cmo utilizar esta funcin. Pero como observars utilizar la
funcin repite as, como nica instruccin de nuestro programa no tiene mucho
much
sentido, ya que como los programas empiezan con un bucle, despus de repetir 3
veces el apagado y encendido de lo que hayamos conectado en la salida 13, por
ejemplo un LED, el programa volver a empezar, por lo que no apreciaremos esa
repeticin.
A continuacin
tinuacin vamos a realizar una prctica en la que esta funcin repite si nos ser
de utilidad.

16

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

6.

PRACTICA: SOS

La siguiente prctica consistir en realizar una seal de SOS con el led blanco de la
tarjeta de experimentacin ARDUINO BASIC I/O que se corresponde
corresponde con la salida D6.
Si no, puedes utilizar el mismo montaje del ejercicio anterior y por lo tanto el pin 11 en
lugar del 6, o utilizar la salida 13, pin 13 en ella puedes colocar directamente el LED sin
necesidad de usar una resistencia de proteccin.
protecci
Pues vamos all, ahora te toca a ti.
Hay muchas posibilidades para realizarlo por ejemplo sta sera una:

Recuerda si usas el montaje de la prctica anterior


anterior en la
pala ARDUINO UNO, en el programa cambia el 6 en la
configuracin PIN digital por un 11.

17

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

7.

PRACTICA: EL SEMAFORO

Con lo aprendido hasta ahora la siguiente prctica nos resultar


muy sencilla, pues se trata de programar un semforo.
sem
Utilizaremos
las siguientes salidas:
- Pin 11: Led rojo. - Pin 10: Led mbar - Pin 9: Led verde.

As que siguiendo la misma lgica que aplicamos en las prcticas


anteriores el programa nos quedar como observa en la imagen.

Partiendo de ste ahora puedes modificarlo t, juagando con las frecuencias,


frecuencias
aadiendo seal para peatones etc. Es tu turno.

18

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

8.

PRACTICA: GOBIERNO DEL ENCENDIDO DE UN LED (SALIDA)


MEDIANTE UN PULSADOR (ENTRADA DIGITAL)

Con esta prctica queremos gobernar el encendido y apagado


apagado de nuestro LED rojo,
colocado en salida digital 11,, PIN 11, mediante el accionamiento de un pulsador,
conectado en PIN 4, que ser nuestra entrada digital. La lgica del programa es
sencilla: si el pulsador est presionado, es decir, es igual a 1 (true), la salida digital 11
(LED rojo) estar encendido; si no, salida digital 11 (LED rojo) apagado.
El montaje del circuito sera el siguiente:

Recuerda que la resistencia hay que


colocarla entre el pulsador y tierra as
evita que +5V se conecte con GND al
cerrar el pulsador, as evitaremos un
corto, un falso 0.

19

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Y el programa lo podemos hacer de muchas maneras, yo os voy a dejar alguna, pero


seguro
guro que a vosotros se os ocurrirn otras.

Ejemplo 1: Asociando el valor de una salida al estado de una entrada, lo ms

sencillo.

El IDE Arduino quedar:


void setup()
{
pinMode( 6 , OUTPUT);
pinMode( 4 , INPUT);
}

void loop()
{
alRead( 4) );
digitalWrite( 6 , digitalRead(
}
20

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Ejemplo 2: utilizando la FUNCIN CONDICIONAL SI/ ENTONCES


Esta funcin opera la siguiente manera: establecemos una condicin a evaluar, es
decir, Arduino mirar si eso se cumple o no, si se cumple realizar lo instruccin que
colocamos primero y si no realizar la segunda orden.
orden

Aqu va la condicin a evaluar.


Aqu va la instruccin a realizar si se cumple la condicin.
Aqu va la instruccin a realizar si no se cumple la condicin.

Y as quedara el programa en Ardublock.

Que se corresponde con el siguiente cdigo:


void setup()
{
pinMode( 11 , OUTPUT);
pinMode( 4 , INPUT);
}
void loop()
{
21

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

if (digitalRead( 4))
{

digitalWrite( 11 , HIGH );
}
else
{
digitalWrite( 11 , LOW );
}
}

9.

PRCTICA: LED (SALIDA) INTERMITENTE CON CONTROL DE


FRECUENCIA MEDIANTE UN POTENCIOMTRO (ENTRADA
ANALGICA)

En esta prctica vamos a ver como se asocia una variable numrica al valor de una
entrada analgica, en nuestro
uestro caso un potencimetro ( Analog1)
Analog1) con el fin de poder
variar el retardo en el encendido y apagado de una
una salida digital (led amarillo colocado
en el PIN 10) al variar una entrada analgica, es decir al girar un potencimetro.
Comenzamos definiendo la variable f, y para ello utilizaremos la funcin:

Es aqu donde le daremos el nombre f a nuestra variable y la asociaremos al valor de


la entrada analgica 1 (el potencimetro)
Y luego en el retardo sustituiremos el valor numrico fijo,
fijo, que si recordis era de
1000ms en la primera prctica, por uno variable, f. As segn vayamos girando el
potencimetro la frecuencia de apagado y encendido del led ir variando.
Y este ser el resultado del puzle

22

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Y este sera el cdigo generado para el ID de Arduino

Y as es como quedara el esquema de conexiones


de los componentes si no usis la placa BASIC I/O.

int _ABVAR_1_f;

void setup()
{
pinMode( 10 , OUTPUT);
_ABVAR_1_f = 0;
}

void loop()
{
_ABVAR_1_f = analogRead(A1) ;
digitalWrite( 10 , HIGH );
delay( _ABVAR_1_f );
digitalWrite( 10 , LOW );
delay( _ABVAR_1_f );
}

23

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

10. PRCTICA: Conectar


ar una salida digital con un pulsador (entrada

digital) y apagarla con otra entrada digital diferente. FUNCIN WHILE


(MIENTRAS QUE)
En primer
mer lugar vamos a ver cul ser el montaje electrnico que deberamos
realizar.

Vamos a utilizar esta prctica


prctica para introducir la FUNCIN WHILE (mientras
que). Con esta funcin se establece una condicin a evaluar y una instruccin a
realizar mientras se cumpla la condicin establecida.
La lgica por lo tanto de nuestro programa ser muy sencilla: La salida
sal 11 estar
activada, es decir el LED estar luciendo al activar la entrada 4, al pulsar el pulsador 4,
y permanecer as mientras no pulsemos el pulsador conectado en la lnea 6.

24

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Y este sera el ID de Arduino.

25

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Seguro que a ti see te han ocurrido otras formas de hacer el programa, sin usar la
funcin while, por ejemplo:

Como ya sabes se pueden realizar distintos programas que lleven a cabo el mismo objetivo.

26

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

11. PRCTICA: CONTROL DE UN MOTOR

Con esta prctica vamos a llevar a cabo el cambio de giro de un motor de cc de 5V.
Para ello vamos a utilizar
ilizar dos pulsadores como entradas digitales, la 4 y la 6, y para
conectar el motor utilizaremos los pins 3 y 5, ya que como dijimos al inicio de este
manual estas entradas digitales se pueden
pueden emplear como entradas PWM, es decir,
permiten simular un comportamiento analgico enviando seales de valor variable,
vari
de
cara a modificar la velocidad de giro de un motor.

27

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

El motor girar en un sentido al pulsar 4 y al contrario al pulsar 6

Y el cdigo de ARDUINO quedar:


void setup()
{
pinMode( 3 , OUTPUT);
pinMode( 6 , INPUT);
pinMode( 4 , INPUT);
pinMode( 5 , OUTPUT);
}
void loop()
{
digitalWrite( 3 , digitalRead( 4) );
digitalWrite( 5 , digitalRead( 6) );

28

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

12. PRCTICA 8:: CONTROL DE UN SERVOMOTOR (giro 180))

Los servos motores poseen tres terminales: alimentacin, masa y seal. El terminal
de alimentacin, es normalmente rojo, y se debe conectar al pin 5V de la placa
Arduino. El terminal de masa el cual es normalmente negro debe de conectarse a el
pin de masa del la placa Arduino. El cable de seal suele
suele ser amarillo, naranja o blanco
y debe conectarse al pin 9 de la placa Arduino, y es la que recibe la seal que le indica
el ngulo que debe girar, esta seal est formada por un pulso que el circuito incluido
en el servo interpreta para girar el motor y dejarlo fijo en el ngulo indicado.

Ardublock tiene una ficha para el control de un servo en la librera PINS,

29

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Este sera un ejemplo en Ardublock de cmo utilizar esta ficha.


ficha

Cuyo cdigo ser:

30

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Si lo que quermos
uermos es hacer girar un servo de 0 a 180 continuamente,
continuamente el cdigo
Arduino ms sencillo sera utilizando la funcin for, y podra ser as:

Cdigo en Arduinio para controlar un servo que


que va de 0 a 180 en pasos de un 1:
#include <Servo.h>
Servo myservo;
rvo; // crea un objeto tipo servo para controlar el servo
int pos = 0; // variable para almacenar la posicin del servo
void setup()
{
myservo.attach(9); // liga el servo conectado en el pin 9 al objeto servo
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // va de 0 a 180 grados
{
// en pasos de 1 grado
myservo.write(pos);
// dice al servo que se posicione en la posicin indicada
por la variable 'pos'
delay(15);
// espera 15 ms para dar tiempo al servo a llegar a la nueva
posicin
}
for(pos = 180; pos>=1; pos-=1)
pos
// va de 180 a 0 grados
{
myservo.write(pos);
// dice al servo que se posicione en la posicin
posicin indicada
por la variable 'pos'
delay(15);
// espera 15 ms para dar tiempo al servo a llegar a la nueva
posicin
}
}

31

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Pero si lo queremos hacer con Ardublock nos encontramos con un pequeo


problema, que es que Ardublock no tiene una ficha para la funcin for , as que
tendremos que buscar una alternativa, yo os propongo hacerlo usando la funcin
condicional,, con lo que nuestro programa en Ardubloock quedara as:

32

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Y el IDE de Arduino quedara:

33

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

13. PRCTICA : SERVO CONTRALADO POR SEALES EXTERNAS


Un servo tamben se puede contralar por seales externas
externas como pulsadores, aqu
tenes un ejemplo de un servo controlado por tres pulsadores que harn de entradas
digitales, conectadas en los pines 4, 7 y 8. Cuando pulsemos el 4 el servo girar a 180
al pulsar el 7se situar en el centro, 90, y al pulsar el 8 volver a 0.

34

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

35

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

14. PRCTICA: SENSOR DE LUZ 1(LDR)

Este es un ejercicio muy sencillo con el que queremos activar una salida digital (un
LED) conectado en el pin 13, cuando no detecte luz, y deber apagarse cuando la LDR
detecte luz, algo similar a un alumbrado pblico que se activa cuando oscurece y se
desactiva cuando amanece.
El esquema ser el siguiente:

Usaremos el sensor de luz conectndole a la entrada analgica 2 y tomaremos un valor


umbral de 300,
00, cuando estemos por debajo se activar el LED conectado en la salida
13 que simular el alumbrado automtico, en caso contrario, el habr suficiente
iluminacin y por lo tanto el LED estar apagado.
Puedes variar el valor umbral para hacer que el LED se encienda con ms o menos
intensidad de luz.

36

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Observa el divisor de
tensin.
R=10K

A3 (entrada analgica 3)

EL l programa nos quedar as:

Ahora puedes probar a variar t los valores umbrales, si por ejemplo en este ltimo
caso cambias el 300 por 500 el LED se iluminar con ms o menos oscuridad que si
tomamos
mos un valor umbral de 300?

37

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Comprueba que ocurre si invertimos el divisor de tensin:


tensi

A3 (entrada analgica 3)

R=10K

Si queremos que el LED se siga enciendo cundo baje la luz la lgica del programa ser
ahora:

38

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

15. PRCTICA: SENSOR DE LUZ 2 (EL FOTOTRANSITOR).

El fototransistor es un dispositivo capaz de dejar pasar ms o


menos intensidad a su travs en funcin de la luz que incide sobre l, es decir a ms luz
ms corriente.

Entrada analgica 2

R= 10K

39

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

16. PRCTICA:
TICA: SENSOR IR, SENSOR DE LUZ INFRAROJA.

Se trata de un sensor de luz infrarroja formado por dos componentes, un emisor E,


alimentado a 5 V, que est
est continuamente emitiendo luz en la frecuencia de
infrarrojos. Cuando sta se refleja sobre un objeto rebota y la recibe el fototransistor
receptor R

Segn la cantidad de luz reflejada dejar pasar ms o menos


intensidad.

Nosotros lo vamos a utilizar para


para detectar una lnea negra, para
ello conectaremos un led rojo y otro verde como salidas
digitales en los pines 11, y 9. Si el IR detecta una lnea negra se
encender el led rojo, si por el contrario no la detecta o detecta

40

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

blanco, se encender el led verde.


El programa ser:

Que se corresponde con este cdigo:

41

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

17. PRCTICA: ULTRASONIDOS SR04

Midiendo distancias con un sensor de ultrasonidos


Un complemento imprescindible para muchos de robots o vehculos controlados a
distancia ess un sensor que nos permita saber la distancia libre de obstculos para
movernos. Si las distancias van a ser pequeas podemos emplear sensores de
infrarrojos, pero si queremos movernos en reas grandes y poder medir distancias en
un rango de varios metros el complemento perfecto es un sensor de ultrasonidos.
ultrasonidos
Funciona exactamente igual que un radar, de hecho es un pequeo radar. Emite un
pulso de sonido
ido a una frecuencia tan alta que es imperceptible para el odo humano y
cronometra el tiempo que el sonido tarda en llegar a un obstculo, rebotar y volver al
sensor. Como la velocidad de propagacin del sonido en el aire es un dato bien
conocido (343.2 m/s)
/s) echamos mano de una conocidsima formula (e = v * t) y
calculamos la distancia recorrida por el sonido..
El sensor ultrasnico HC-SR04
SR04 utiliza el sonar para determinar la distancia a un objeto
como los murcilagos o los delfines hacer. Ofrece una excelente
excelente precisin del alcance y
lecturas estables en un paquete fcil de usar.
Sus caractersticas son:
Fuente de

alimentacin: 5V DC
Corriente en

reposo: <2 mA

ngulo Eficaz: <15

Que van Distancia:


2 cm - 500 cm / 1 "-16 pies
Resolucin: 0,3 cm

Su conexin a la placa
Arduino se realiza as:

42

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Un cdigo sencillo para medir distancias sera:


#include <Ultrasonic.h>
Ultrasonic ultrasonic(12,13); // (Trig PIN,Echo PIN)
void setup() {
Serial.begin(9600);
}
void loop()
{
Serial.print(ultrasonic.Rang
Ranging(CM)); // CM or INC
Serial.println(" cm" );
delay(100);

Pero Ardublock tiene una ficha para este sensor:


En el pin 12 conectamos el Trig PIN,
En el pin 13 conectamos el Echo PIN,

Y un programa con Ardublock para medir distancias podra ser:

43

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Cuyo cdigo IDE es:


int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int
ardublockUltrasonicSensorCode
trigPin, int echoPin)
{
int duration;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
duration = duration / 59;
return duration;
}
int _ABVAR_1_distancia;
void setup()
{
_ABVAR_1_distancia = 0;
digitalWrite( 12 , LOW );
Serial.begin(9600);
}
void loop()
{
_ABVAR_1_distancia = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(
ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 12 , 13 ) ;
Serial.print( "distancia" );
Serial.print( _ABVAR_1_distancia );
Serial.println("");
delayMicroseconds( 1000 );

44

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Este programa funciona de la siguiente manera:


El sensor mide la distancia a la que se encuentra un objeto y cada segundo nos
presenta el resultado en el monitor serial de Arduino.
Pero, dnde est ese monitor serial?
serial
Pincha aqu

45

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Al pinchar sobre la lupa (monitor serial) se te despliega una pantalla donde se


presentan las distancias mediadas,
med
en mi caso sta:

A continuacin te propongo una prctica: realiza un programa en el que nos


aparezca en el monitor serial el mensaje:
mensaje frena que te chocas,
, cuando un objeto se
encuentre a menos de 5 cm de nuestro sensor,
sensor y si no es as quee nos diga sigue

as
que vamos bien.
La solucin podra ser:

46

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Otra propuesta:

Realiza un programa ahora para que se encienda un LED rojo cuando la


distancia de un objeto al sensor sea inferior a 5 cm y un LED verde si es superior.
En este caso vamoss a utilizar los pines 8 y 9 para conectar el sensor ultrasnico, y los
pines 13 y 12 para conectar los LED rojo y verde respectivamente, es decir, las salidas.

Y ste sera el posible programa.

Si ahora, utilizas tambin motores como salidas puedes disear un coche que gire al
detectar un obstculo, pero eso ya te lo dejo a ti.
47

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

18. PRCTICA: ROBOT MINISKYBOT (ARDUINO)


Para finalizar vamos a montar un robot MinSKyBot siguiendo las intrusiones de
Borjaper en su tutorial:

http://www.arduteka.com/2013/04/robot-miniskybot-2-como-siguelineas
http://www.arduteka.com/2013/04/robot
siguelineas-y-detectorde-obstaculos/

Aunque aqu os lo dejo copiado.

Arduino, Impresion
ultranosidos, TUTORIAL by Borja

3D, IR, MiniskyBot, Robot, Robtica,


Robtica sensor

QU VAMOS A HACER?
Vamos a ver varios
ios sketch de Arduino para que el robot ejecute las siguientes
funciones:
Seguir una lnea negra sobre un fondo blanco
Esquivar objetos que encuentre en su recorrido
Empujar objetos fuera de un rea limitada por una circunferencia negra

48

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Qu necesitamos?
En primer lugar necesitamos que alguien nos imprima en 3D las piezas del robot, si no
conocis a nadie, os podis poner en contacto con nosotros e intentaremos hacer que
no os quedis sin ellas!
El resto del material:
2 servomotores
Arduino UNO
2 led IR
2 receptores IR
4 resistencias (dos de 210 y dos de 10k)
1 sensor ultrasonidos (HC-SR04)
(HC
1 interruptor
tiras de pines
placas donde soldar los componentes.

Para el montaje del robot, podis seguir estas instrucciones creadas por los padres del
proyecto.
Caracterizacin de los servos
Una vez modificados los servos para que se comporten como
o motores que pueden
girar continuamente tenemos que identificar el valor para el cual el motor est parado,
en este video de loleando.es podis ver en detalle cmo realizarlo:

Para saber la posicin en la que est,


est, se utiliza un potencimetro que gira
simultneamente con el servo y que indica el ngulo en el que se encuentra. Con la
modificacin quitamos el potencimetro y lo sustituimos por dos resistencias iguales
con lo que la informacin que le llega al servo es
es que se encuentra siempre en la
posicin de 90, si le indicamos al servo que se coloque en una posicin mayor de 90,
por ejemplo 180, girar de forma continua en un direccin, si le indicamos al servo
que se coloque en una posicin inferior, por ejemplo
ejemplo 0, girar de forma continua en el
otro sentido. Si le indicamos 90 el servo se parar.
Como las resistencias no son perfectas y tienen cierta diferencia respecto al valor
nominal (aunque pongamos resistencias con 1% de tolerancia) se genera un cierto
error
rror respecto a la posicin central. As que 90 puede que no pare el motor y
tendremos que buscar un ngulo cercano a 90 para que el motor quede parado.
Necesitaremos identificar este dato para cada uno de los dos servos.

49

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

En el caso de los sketch indicados


indicados en este tutorial
utilizo la librera Servo.h y el mtodo writeMicroseconds para controlar
los servos.
Los valores que utilizo en los dos servos son:
#define derechoParada 1450
#define izquierdoParada 1390
#define derechoAdelante 2000
#define izquierdoAdelante
Adelante 1000
#define derechoAtras 1000
#define izquierdoAtras 2000

La posicin a 0 suele indicarse con 1000s y la posicin 180 con 2000s, al tener
orientaciones opuestas para cada servo hay que asignar valores para que cada servo
gire en un sentido diferente.
Las paradas corresponden a 1450 s y 1390 s.
Circuito IR siguelineas y sensor ultrasonidos
El siguiente paso ser soldar los emisores y receptores IR junto con sus resistencias
segn el siguiente esquema:

Tambin es necesario caracterizar estos


estos sensores para encontrar un umbral entre
blanco y negro que podamos usar en el sketch. En las pruebas que he realizado al
poner el sensor sobre fondo negro da un valor de 600 y al ponerlo sobre fondo blanco
da 30, as que he escogido como umbral 200 o 300 para que cuando la seal sea menor
de este umbral entienda que el sensor est sobre fondo blanco y corrija la trayectoria.
Tambin incluiremos una tira de 4 pines hembra para alojar el sensor de ultrasonidos.
Finalmente se han soldado los seis hilos del
del trozo cable paralelo para conectar los
sensores y la alimentacin (5v, GND, Trig, Echo, IR izquiedo, IR derecho) con la placa
Arduino.
50

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Los receptores IR estn cubiertos en la parte lateral con plstico (un pequeo trozo de
globo fino del que se usa para
para hacer figuras) para que slo reciban luz infrarroja por el
extremo, es decir la que rebota desde el suelo.
Conexin con la placa Arduino.
Usaremos el trozo de cable paralelo para conectar los sensores con la placa Arduino. El
cable va soldado a otra placa
placa en la que tambin hemos soldado 9 pines macho en un
extremo que encajarn con las entradas analgicas, ms Vin y GND y un pin que queda
entre los dos bloques de pines (en total 9 pines). En el otro extremo de la placa hemos
soldado 8 pines macho que encajarn
encajarn con las entradas digitales (de 0 a 7) de la placa
Arduino. De esta forma para conectar y desconectar la placa Arduino del robot slo
hay que sacar la placa que tiene los pines soldados.

En esta placa tambin colocamos dos tiras de tres pines machos (en
(en la paste superior)
donde conectaremos los cables de los servos. Por ltimo para conectar las lneas de
control de los servos usaremos dos cables que se conectarn directamente a los pines
8 y 12 de la placa Arduino.
Como vemos en la imagen hemos aadido
aadido un interruptor en el cable de alimentacin
que va desde las pilas a la placa para poder parar el robot.
Cdigo siguelineas
Con este cdigo el robot es capaz de seguir un recorrido marcado por una lnea negra
sobre un fondo blanco. La lnea debe ser lo suficientemente
suficientemente ancha para que los dos
sensores quepan dentro de ella.

51

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

La lgica es muy simple:


Si los sensores ven negro (estn sobre la lnea) los dos motores giran hacia
delante.
Si uno de ellos ve blanco parar el motor del otro lado con lo que el robot
girar hacia la lnea negra.
Si los dos sensores ven blanco el robot se para.
Al principio del sketch se han definido las constantes que hacen girar (o parar) a los
motores.

19. Prctica: Cdigo Escoba (Arduino)


Con este cdigo queremos que el robot busque
busque objetos cercanos (a menos de
50 cm) y cuando los encuentre los empuje fuera de un crculo limitado por una lnea
negra.

52

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Utilizamos las libreras Servo.h y Ultrasonic.h para manejar los servos


os y el sensor de
ultrasonidos respectivamente.
La lgica se basa en mantener al robot girando (slo se mueve un motor) hasta que el
sensor de distancia detecte algo a menos de 50 cm. Cuando detecta un objeto avanza
moviendo los dos motores.
Cuando los sensores
sores IR ven la lnea negra el robot retrocede y el objeto queda fuera
de la lnea negra. Es necesario quitar el objeto ya que sino el robot estar intentando
llegar al objeto y retrocediendo de forma continua.
La superficie donde estn los objetos puede estar elevada y cuando el robot los saca se
caen.

53

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

20. PRCTICA : SIGUELINEAS CON ARDUBLOCK

Si en lugar de hacerlo directamente en Arduino como hace Borja en Arduteka,


queremos hacerlo con Ardublock el programa para el SIGUELINEAS nos quedara as:

54

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

Cuyo cdigo correspondiente ser:

#include <Servo.h>
int _ABVAR_1_derechoParada;
Servo servo_pin_12;
int _ABVAR_2_izquierdaParada;
int _ABVAR_4_izquierdaAdelante;
int _ABVAR_6_irde;
int _ABVAR_5_irizq;
int _ABVAR_3_derechoAdelante;
Servo servo_pin_8;
void setup()
{
_ABVAR_4_izquierdaAdelante = 0;
_ABVAR_3_derechoAdelante = 0;
_ABVAR_5_irizq = 0;
servo_pin_8.attach(8);
_ABVAR_2_izquierdaParada = 0;
servo_pin_12.attach(12);

_ABVAR_1_derechoParada = 0;
_ABVAR_6_irde = 0;
}
void loop()
{
_ABVAR_1_derechoParada
ada = 1450 ;
_ABVAR_2_izquierdaParada = 1390 ;
_ABVAR_3_derechoAdelante = 2000 ;
_ABVAR_4_izquierdaAdelante = 1000 ;
_ABVAR_5_irizq = analogRead(A5) ;
_ABVAR_6_irde = analogRead(A4) ;
55

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

servo_pin_12.write( _ABVAR_4_izquierdaAdelante );
servo_pin_8.write( _ABVAR_3_derechoAdelante
VAR_3_derechoAdelante );
if (( ( _ABVAR_6_irde ) < ( 200 ) ))
{
servo_pin_12.write( _ABVAR_2_izquierdaParada );
}
if (( ( _ABVAR_5_irizq ) < ( 200 ) ))
{
servo_pin_8.write( _ABVAR_1_derechoParada );
}
}

Puedes compararlo con el que nos propone Borja en Arduteka.

Ahora ya os doy el relevo a vosotros: A disear vuestros propios programas!

56

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra

DOCUMENTACIN BIBLIOGRAFA - WEBGRAFA:

Arduino la tecnologa al alcance de todos de Mikel Etxebarria Isuskiza


Ardublock + Arduino tutorial de Jos Manuel Ruiz Gutirrez (Diciembre de 2011
Versin de Documento: V1.0 Jos Manuel Ruiz Gutirrez. Blog de referencia:
http://josemanuelruizgutierrez.blogspot.com/
http://josemanuelruizgutierrez.blogspot.com/33
http://www.arduino.cc/
ngela Bravo (2012). Ardublock: Entorno de programacin grfica para
Arduino. Recuperado 12 de noviembre de 2013, desde
http://solorobotica.blogspot.com.es/search?q=ardublock
Borja (2013), Robot miniskybot 2 como siguelneas y detector de obstculos.
obstculos
Recuperado
11
de
enero
de
2014
desde:
http://www.arduteka.com/2013/04/robot
http://www.arduteka.com/2013/04/robot-miniskybot-2-como-siguelineas
siguelineas-ydetector-de-obstaculos/
obstaculos/
Opiron Electronics (2013). Todo sobre Ardublock by Opiron. Recuperado el 12
de noviembre de 2013 desde : http://www.opiron.com/portfolio/tutorialhttp://www.opiron.com/portfolio/t
sobre-ardublock

Pablo Murillo(2011).
Murillo(2011 Tutorial Arduino # 0004 Sensor LDR. Recuperado 9 de
enero de 2014 desde: http://www.arduteka.com/2011/11/tutorial-arduinohttp://www.arduteka.com/2011/11/tutorial
0004-sensor-ldr/
http://www.ardublog.com/
Antony Garca Gonzlez (2013). HC-SR04:
HC
Sensor ultrasnico para Arduino.
Arduino
Recuperado desde http://panamahitek.com/hc-sr04-sensor-ultrasonico
ultrasonico-paraarduino/

57

| GRUPO DE TRABAJO PROYECTO CANTABROBOTS 3.0:


Ana Nez, Marta Gutirrez,
Gutirr Didio Sordo, Mara Guijarro y Jos Andrs Echevarra