JornadasRobotica2015_Programación con Ar[...]

Programación con
Arduino
Jornadas de Robótica 2015
Curso de Impresión 3D y Hardware libre
Índice:
0.
1.
2.
3.
Instalación Software
Presentando la tarjeta Arduino UNO /ZUMBT
Bitbloq
Alternativas:
a.
b.
Instalables
WEB
4. Presentación del IDE Arduino
5. Inicio a la programación con Arduino:
a.
b.
6.
Salidas Digitales
Entradas Digitales
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
Conector USB al PC
Selector de tensión
de la placa
Conector de
alimentación
G=GND= Masa=0V
V= 5V
Sx=x: Pin x
Pines de Entrada
Analógica
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
o
Processing
S4A (Scratch for Arduino)
● WEB:
o
o
123D.circuits.io (Simulador)
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.
Guardar
Verificar el
programa
Nuevo Fichero
Cargar el
programa en
la tarjeta
Abrir
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.
5.-Iniciación a la programación con Arduino
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
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
o
LOW -> detecta negro
HIGH -> detecta blanco
● el botón pulsador.
o
o
LOW ->pulsado
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
¿Que sentido deben seguir los
motores para que el robot vaya
recto, hacia atrás, izquierda o
derecha?
Hacer un programita que pulsando el pulsador haga que
el robot vaya recto.
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)
Bloque
Código
#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);
}
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!
Pin 2
IR_Der:
M_Der: Pin 6
M_Izq: Pin 9
IR_Izq: Pin 3
6. Robot seguidor de líneas(básico)
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:
- Las ramas a seguir en las bifurcaciones se definen aleatoriamente cuando el robot
comienza el recorrido.
- Aparece un obstáculo en la última bifurcación (en la rama contraria a la indicada por la
señal)