Programación con Arduino · Programación con Arduino Jornadas de Robótica 2016 Curso de...

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

Transcript of Programación con Arduino · Programación con Arduino Jornadas de Robótica 2016 Curso de...

Programación con Arduino

Jornadas de Robótica 2016

Curso de Impresión 3D y Hardware libre

Índice:0. Instalación Software1. Presentando la tarjeta Arduino UNO /ZUMBT2. Bitbloq3. Alternativas:

a. Instalablesb. WEB

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

a. Salidas Digitalesb. Entradas Digitales

6. Robot Seguidor de lineas

0. Instalación Software

• Hace falta instalar:Google Chrome: Descargar de google

• Es recomendable instalar:IDE de arduino: Descargar de http://arduino.cc/en/Main/Software e instalar ( “si” a todo)

0. Instalación IDE ArduinoDescargar 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.-BitbloqSe accede con la dirección: http://bitbloq.bq.com/desde: Google Chrome

Podemos entrar

como invitado

O con una cuenta

2. Bitbloq

• Mejor tener una cuenta (así se guardan nuestros programas)

El usuario puede ser:

- Gmail

- Facebook

- Registrarnos en

bq

2.-Bitbloq

Hay dos partes o pantallas diferentes:

● Pantalla HARDWARE

● Pantalla CÓDIGO

2.-Bitbloq

En la pantalla Hardware conectamos los dispositivos a la placa de arduino tal como los tenemos conectados en nuestro robot

Primero elegimos la placa que tiene nuestro robot

2.-Bitbloq

Luego podemos conectar los componentes pines correspondientes

En arduino los pines son los puertos Digitales o Analogicos que podemos controlar, como por ejemplo Leds, motores, pulsadores, sensores….

2.-Bitbloq-ejemplo led

Vamos a conectar un led, que es una salida digital, por ejemplo al pin 3

En el robot real hacemos lo mismo. !!Mucho cuidado, conectar los cables siguiendo los colores!!!

TODAS LAS CONEXIONES CON EL ROBOT APAGADO Y DESCONECTADO

Negro= Masa

Rojo= +5v

Amarillo= Señal entrada o salida (para un LED será una salida)

2.-Bitbloq-ejemplo led

En la pantalla software es donde programamos nuestro robot.

Un programa está compuesto por 3 partes: Inicialización de variables, configuración, bucle principal

En la parte derecha tenemos todos los elementos que podemos añadir al programa

2.-Bitbloq-ejemplo led

En software nos vamos a “componentes”. Vemos que tenemos la opción de encender/apagar el led (¡si hubieramos añadido más componentes a la placa tendriamos más opciones!)

Arrastramos sobre bucle principal

2.-Bitbloq-ejemplo led

Conectamos el cable USB al robot

Pinchamos sobre el botón de su subir el programa

Bitbloq detectará la placa y programará tu robot( La primera vez que lo hagas te instalará un programa que se llama web2board)

¿SE ENCIENDE EL LED???

2. Bitbloq-ejemplo led

• Lo anterior era programación por bloques (muy sencillo).

• Eso se traduce a código (más complicado, pero más potente)

2.Bitbloq-ejemplo-led-parpadeo

• Ahora vamos a hacer que parpadee. Para ello lo encenderemos y aparemos dejando un tiempo intermedio

• Utilizaremos un bloque de espera (delay)

2.Bitbloq-ejemplo-led-parpadeo

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:

/*** Included libraries ***/

/*** Global variables and function

definition ***/

int led_0 = 3;

/*** Setup ***/

void setup()

{

pinMode(led_0, OUTPUT);

}

/*** Loop ***/ void loop()

{

digitalWrite(led_0, HIGH);

delay(1000);

digitalWrite(led_0, LOW);

delay(1000);

}

2. Bitbloq-ejemplo led+botón

• Ahora vamos a estudiar entradas digitales

• Utilizaremos un botón. Cuando se pulsa la entrada digital es 1 (o verdadero) y cuando se suelta la entrada digital es 0 (o falso)

• Conectaremos al pin 4 el botón

2. Bibloq- Ejemplo led+pulsador

• En programación se usan las “estructuras de control”. Sirven para crear condiciones, del ejemplo: SI botón=pulsado ENTONCES encender led

• Esta estructura es IF---THEN (en programación se suele escribir en inglés)

• Hay otras estructuras como:– While (mietras se cumpla una

condición hacer algo).– FOR (repetir algo un número

de veces)

2-Bitbloq-led+botón

• Añadimos la lógica necesaria:

¿Se apaga y se enciende el

led cuando pulsamos el

botón?

2. Bitbloq-led+boton

• Con el programa anterior se quedaba encendido… faltaba programar que cuando el botón no estuviera pulsado se apagara

• Esta secuencia de control es: SI tal ENTONCES esto, SINO esto_otro

• (en inglés IF…THEN…ELSE…)

2.Bitbloq-led+botón

• El código es:

2.Bitbloq-Motores

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

2. Bitbloq-Motores

• Hacemos que el robot siga recto

• ¿Cómo será para girar y para ir hacia atrás?

2. Bitbloq-Motores

• Si con el bloque “parar” no paran, hay que calibrar los motores (ajustar tornillito lateral)

Seguidor Renacuajo

2. Bitbloq- Robot sigue 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)

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

_Iz

q:

Pin

9

M_

Der:

Pin

6

IR_

Izq:

P

in 3

IR_

De

r:

Pin

2Si sensor derecho negro

entonces mover

Rueda Izquierda (sentido

antihorario)

Si sensor izquierdo negro

entonces mover

Rueda Derecha (sentido

horario)

2.Bitbloq- Robot sigue líneas

2.Bitbloq- Robot sigue líneas

2. 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

3.-Alternativas

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

o Processingo 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 probarprogramas.

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

programaCargar 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

Otra manera más avanzada:1. Composición por bloques con Bitbloq2. Copia del código al IDE Arduino3. Modificado del código4. Carga del programa en la tarjeta UNO

COMPETICIÓNCaracterí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.