programación con arduino · iniciación a la programación con arduino vamos a calibrar el servo,...

47
Programación con Arduino Jornadas de Robótica 2015 Curso de Impresión 3D y Hardware libre

Upload: lamkhuong

Post on 29-Sep-2018

249 views

Category:

Documents


1 download

TRANSCRIPT

Programación con Arduino

Jornadas de Robótica 2015

Curso de Impresión 3D y Hardware libre

Índice: 0. Instalación Software 1. Presentando la tarjeta Arduino UNO /ZUMBT 2. Bitbloq 3. Alternativas:

a. Instalables b. WEB

4. Presentación del IDE Arduino 5. Inicio a la programación con Arduino:

a. Salidas Digitales b. Entradas Digitales

6. Robot Seguidor de lineas

0. Instalación Software

• Hace falta instalar: – IDE de arduino: Descargar de

http://arduino.cc/en/Main/Software e instalar ( “si” a todo)

– Google Chrome: Descargar de google

0. Instalación IDE Arduino Descargar y darle a “si” a todo.

0. Google Chrome

• Instalar el google Chrome

1.-Presentación de Arduino UNO

Pines de Entrada y

Salida Digital

Pines de Entrada

Analógica

Conector USB al PC

Conector de

alimentación

Selector de tensión

de la placa

G=GND= Masa=0V

V= 5V

Sx=x: Pin x

2.-Bitbloq Se accede con la dirección: http://bitbloq.bq.com/ desde: Google Chrome

2. Bitbloq

• Antes de nada, instalamos el serial uploader

2.-Bitbloq

Se puede acceder • Sin usuario (Todo lo que hagamos

habrá que guardarlo en local)

• Con usuario (Todo lo que hagamos

se guarda en la nube)

El usuario puede ser: - Gmail - Facebook - Registrarnos en bq

2.-Bitbloq

La Web App puede que te pida instalar una extensión para seguir “CodeBender.cc”.

La descargas y reinicias

el navegador El resultado es el que

ves.

2.-Bitbloq

Hay dos partes o pantallas diferentes:

● Pantalla Bloques ● Pantalla Código

En la pantalla de los Bloques se elabora el programa con elementos preconfigurados.

2.-Bitbloq

Las opciones que hay son:

● Octopus ● zum ● Servo ● LCD block ● Controlar ● Lógica ● Matemáticas ● Texto ● comunicaciones ● Pin functions ● Varialbes ● Funciones

2.-Bitbloq

Las opciones que hay son:

● bq ● Servo ● Controlar ● Lógica ● Matemáticas ● Texto ● Avanzado ● Variables ● Funciones

2.-Bitbloq

Las opciones que hay son:

● bq ● Servo ● Controlar ● Lógica ● Matemáticas ● Texto ● Avanzado ● Variables ● Funciones

2.-Bitbloq

Las opciones que hay son:

● bq ● Servo ● Controlar ● Lógica ● Matemáticas ● Texto ● Avanzado ● Variables ● Funciones

2.-Bitbloq

Hay dos partes o pantallas diferentes:

● Pantalla Bloques ● Pantalla Código

En la pantalla Código se traduce lo elaborado en la pantalla de Bloques en el lenguaje de “Arduino”, pudiéndose emplear en el IDE.

3.-Alternativas

Hay muchísimas, pero las más usuales: ● Instalables:

o Processing o S4A (Scratch for Arduino)

● WEB: o 123D.circuits.io (Simulador) o Blockly Demo (origen de Bitbloq)

3.-Alternativas instalables

Processing: Open Source del MIT. De donde proviene el IDE de Arduino. Se puede comunicar vía USB con la tarjeta cargando a esta un firmware.

Puedes descargártelo en: http://processing.org/

3.-Alternativas instalables

Processing (II): puedes compilar (crear la aplicación ejecutable) en:

● JAVA: para ejecutar en cualquier PC.

● JavaScript: para incrustar en una WEB.

● APK Android: para correr en un dispositivo Android.

3.-Alternativas instalables

S4A (Scratch for Arduino): creada por españoles en Cataluña.

Tiene su origen en Scratch (del MIT) y permite conectar una tarjeta Arduino UNO vía USB cargando en ella un firmware. Está en:

http://s4a.cat/

3.-Alternativas WEB

123D.circuits.io (Simulador): es una WEBApp comercial, no es Open Source,

pero tiene cuenta gratuita con limitaciones.

http://123d.circuits.io/ Si no tienes tarjeta, es una buena solución para probar programas.

3.-Alternativas WEB

Blockly Demo: (origen de Bitbloq) verás el parecido en Inglés. A través de

Internet puedes acceder a esta versión Demostración, puesto que te puedes bajar un paquete que crea un servidor WEB con la aplicación, de manera que puedes crear nuevos bloques.

http://www.gasolin.idv.tw/public/blockly/demos/blocklyduino/index.html

4.-Presentación del IDE de Arduino

Al pulsar en el icono arranca el IDE de Arduino que funciona sobre la máquina virtual de JAVA.

El lenguaje empleado para generar las programas es “C” simplificado, coloquialmente “Arduino”.

Está pensado para aprender rápido.

Verificar el

programa Cargar el

programa en

la tarjeta

Abrir

Guardar

Nuevo Fichero

4.-Presentación del IDE de Arduino

Abre el monitor del puerto serie,

podemos observar la comunicación por USB entre el PC y la tarjeta UNO.

5.-Iniciación a la programación con Arduino

Para aprender a programar, emplearemos lo que se denomina “Code-On line” que consiste en que:

● el instructor va ir haciendo los programas a la vez que los explica.

● el alumno va copiando los programas y atendiendo a las explicaciones.

Más tarde, el profesor os planteará una serie de mejoras o retos para que lo modifiquéis.

Para aprender a programar para un Ordenador en cualquier lenguaje, la primera aplicación suele ser “Hola mundo”.

En Arduino, el primer programa es el “Blink”, que consiste en

hacer parpadear un LED (Diodo Emisor de Luz) que está cerca de la patilla D13 y que se activa con esta.

Vamos pues… a trabajar con Salidas Digitales

5.-Iniciación a la programación con Arduino

5.-Iniciación a la programación con Arduino En bloques:

En código:

5.Iniciación a la programación con Arduino

En bloques: Analicemos lo que hemos puesto:

1. Conectamos el módulo del LED

en el Pin D13 de la placa.

2. Le indico a Arduino que lo

encienda

3. Espero 1000ms, es decir, 1 s

4. Le indico a Arduino que lo

enchufado en el pin13 se

apague

5. Espero 1000ms, es decir, 1 s

6. Vuelve al punto 1 porque llego al

final del programa

5.-Iniciación a la programación con Arduino

En bloques: Su traducción en código:

5.-Iniciación a la programación con Arduino

Explicación:

Todo programa Arduino tiene, por lo menos

dos funciones:

● setup(): lo que hay entre las llaves “{“

“}” sólo se ejecuta una vez al

encenderse la placa. Se emplea,

generalmente, para configurar las

conexiones.

● loop(): lo que hay entre las llaves “{“

“}” vuelve a ejecutarse cada vez que

llega a su fin.

Código:

5.-Iniciación a la programación con Arduino

Explicación del código:

● pinMode(nº de pin,modo): configura el

pin como entrada o salida.

● digitalWrite(nº de pin, valor digital):

coloca ese pin a:

○ 5V si es HIGH

○ 0V si es LOW

● delay(milisegundos): indica al

procesador que se espere el tiempo

expresado en milisegundos .

Este código se puede copiar y pegar,

después, en el IDE de Arduino para su

carga en la tarjeta UNO.

Código:

5.-Iniciación a la programación con Arduino

- Para cargar en el arduino: - 1º Conecta el cable usb al arduino - 2º Configura el bitbloq serial - 3º Dale al icono programar

5.-Iniciación a la programación con Arduino

Otra manera más avanzada: 1. Composición por bloques con Bitbloq 2. Copia del código al IDE Arduino 3. Modificado del código 4. Carga del programa en la tarjeta UNO

5.-Iniciación a la programación con Arduino

Entradas Digitales: Como entrada digital, vamos a emplear:

● los sensores de infrarrojos de la cabeza del robot “renacuajo” y

● el botón pulsador. Estos elementos nos ofrecen a la tarjeta o 0V (LOW) o 5V (HIGH)

5.-Iniciación a la programación con Arduino

Entradas Digitales: Como entrada digital, vamos a emplear:

● los sensores de infrarrojos o LOW -> detecta negro o HIGH -> detecta blanco

● el botón pulsador. o LOW ->pulsado o HIGH ->sin pulsar

5.-Iniciación a la programación con Arduino

Ejercicio: 1. Diseña un programa con un pulsador (pin 10)

que encienda el LED del (pin 13) cuando lo pulses.

¿Qué pasa?¿Te falta conocer algo?

5.-Iniciación a la programación con Arduino

Ejercicio: Si has hecho esto: Siempre se enciende el LED

porque no has puesto que el resto del tiempo debe estar apagado

5.-Iniciación a la programación con Arduino Para añadir un caso “else” (es decir si no se cumple el pulsador entonces hacer otra cosa)

Se enciende el led cuando se pulsa????? Que está pasando???: Pulsador en lógica negativa

5.-Iniciación a la programación en Arduino

• Movimiento motores – Motor izquierdo pin 9 – Motor derecho pin 6

Hacer un programita que pulsando el pulsador haga que el robot vaya recto.

¿Que sentido deben seguir los

motores para que el robot vaya

recto, hacia atrás, izquierda o

derecha?

5. Iniciación a la programación con Arduino

Vamos a calibrar el servo, o que es lo mismo, si seleccionamos detener en ambos servos el robot no deberia moverse. Si se mueve hay que desmontar el servo y ajustar el tornillo de calibracion (explicado en las transparencias del primer día)

#include <Servo.h> Servo servo_6; Servo servo_9; void setup(){ servo_6.attach(6);} servo_9.attach(9);} void loop(){ servo_6.write(90); servo_9.write(90); }

Bloque

Código

6. Robot seguidor de líneas

• Localización por medio de landmarks

– Utilizaremos dos sensores de infrarrojos para seguir líneas negras colocadas en el suelo, como utilizan los robots guiados en la industria (aunque con otro tipo de líneas)

Seguidor Renacuajo

6. Robot seguidor de líneas(básico)

• El robot seguidor de líneas. Procedimiento:

– Si ambos sensores leen blanco: Sigo en línea recta

– Si el sensor derecho detecta negro: giro un poco a la derecha

– Si el sensor izquierdo detecta negro: Sigo un poco a la izquierda

– Si ambos detectan negro… puede ser que sea una bifurcación! Ya veremos

– Si después de negro ambos detectan blanco…estoy perdido!

6. Robot seguidor de líneas(básico) M

_Iz

q:

Pin

9

M_

De

r: P

in 6

IR_

Izq:

P

in 3

IR_

De

r:

Pin

2

Si sensor derecho negro

entonces mover

Rueda Izquierda (sentido

antihorario)

Si sensor izquiedo negro

entonces mover

Rueda Derecha (sentido

horario)

6. Robot seguidor de líneas • Problema: velocidad del servo. • Solución 1: Utilizar el bloque servo de posición y ponerle

manualmente el valor

• Solución 2: copiar el código al IDE de arduino y aumentar o

disminuir el valor de velocidad del servo • Solución 3: LA VUESTRA

COMPETICIÓN Características del circuito:

Posible Circuito:

- Aparece un obstáculo en la última bifurcación (en la rama contraria a la indicada por la

señal)

- Las ramas a seguir en las bifurcaciones se definen aleatoriamente cuando el robot

comienza el recorrido.