Вы находитесь на странице: 1из 44

MINIROBOTICA DE

COMPETENCIA: TINYBOT
TINYBOT
El robot TinyBot cuenta con las siguientes modalidades:
Seguidor de lnea: robot que sigue una pista indicada por una lnea en el
suelo.
Seguidor de luz: robot que detecta una fuente de luz y se dirige hacia
ella.
Minusumo: robot de competencia tipo sumobot con el objetivo de sacar
a un contrincante de un crculo.
Futbolero: robot deportivo a control remoto que utiliza un servomotor
para patear una pelota y hacer goles como los grandes.
Va Celular: controla el robot desde una aplicacin Bluetooth con
Android.

Chass Llantas
Pala
Tarjeta de
control
Sensore
s
Cables de
conexin
Botn
Play!
Adaptador
Nunchuck
Mdulo
Bluetoot
h
Microcontrolado
r Arduino Nano
Puente
H
Indicado
r de
carga
Pines
de
conexi
n
PINES DE CONEXIN
Sensor de lnea 1: A0 D14
Sensor de lnea 2: A1 D15
Sensor de luz 1: A2
Sensor de luz 2: A3
Sensor de distancia: D7
LED 1: D10
LED 2: D11
Buzzer: D12
Servo: D9
M1D: D2
M1V: D3
M2D: D4
M2V: D5
Sensores
de lnea
Sensor de
distancia
Sensor de
luz
Buzzer
LED
Motorreducto
r
Batera
LiPo
Servomot
or
SESIN 2: PROGRAMACIN EN ARDUINO
Caractersticas de la tarjeta Arduino Nano:
Microcontrolador ATmega328 o ATmega168.
Voltaje de alimentacin: 7 a 12V.
14 pines digitales I/O (6 salidas PWM 8 bits).
8 entradas analgicas (10 bits).
40 mA.
32 KB Memoria Flash en ATmega328 o 16 KB en Atmega 168.
Velocidad de reloj 16MHz.


INSTALACIN DEL DRIVER
Figura. Botn Verificar.
Figura. Botn Cargar.
ESTRUCTURA FUNDAMENTAL
void setup()
{

Instrucciones;
}
void loop()
{

Instrucciones;
}

CONFIGURACIN DE ENTRADAS Y
SALIDAS
pinMode(pin, OUTPUT);
// configura pin como salida

pinMode(pin, INPUT);
// configura el pin como entrada

ESCRITURA DIGITAL
digitalWrite(pin, HIGH);
// deposita en el 'pin' un valor HIGH (alto o 1)

digitalWrite(pin, LOW);
// deposita en el 'pin' un valor LOW (bajo o
0)

MANEJO DE TIEMPOS
delay(1000);
// espera 1 segundo

delayMicroseconds(100
0);
// espera 1 milisegundo

EJEMPLO 1
En este ejemplo se utiliza un pin digital de salida para mantener encendido un diodo
LED un tiempo de 1 segundo en seguida el diodo LED se apaga durante un periodo de
1 segundo y as sucesivamente.

void setup()
{
pinMode(10, OUTPUT); // Se establece como una salida digital al pin de la
// tarjeta Arduino nmero 10.
}

void loop() {
digitalWrite(10, HIGH); // En el pin de la tarjeta Arduino nmero 10
// se escribe un valor 'ALTO' (valor 1 digital).

delay(1000); // Se hace una pausa o espera de un segundo (1000
// milisegundos), durante este tiempo el pin 10
permanece
// con el valor en 'ALTO' (1 digital).

digitalWrite(10, LOW); // Ahora en el mismo pin de la tarjeta Arduino nmero
10
// se escribe un valor 'BAJO' (valor 0 digital).

delay(1000); // Nuevamente se hace una pausa o espera de 1
segundo
// (1000 milisegundos), durante este tiempo el pin 10
// permanece con el valor en 'BAJO' (0 digital).
}

EJEMPLO 2
En este ejemplo se utiliza dos pines digitales de salida y mientras un
diodo LED se enciende por un periodo de 0.5 segundos el otro
permanece apagado el mismo periodo de tiempo, y viceversa.
PROYECTO 1:
Utilizar los pines de control del puente H para hacer una rutina de
movimiento:
Medio segundo hacia adelante.
Paro.
Medio segundo hacia atrs.
Giro en un sentido.
Giro en sentido contrario.

M1D: D2
M1V: D3
M2D: D4
M2V: D5
ENTRADAS DIGITALES
digitalRead(pin).

valor = digitalRead(Pin);
// la variable valor es igual
// al estado ledo en Pin

ESTRUCTURAS DE CONTROL
CONDICIONALES
Sentencia If(condicional).

ESTRUCTURAS DE CONTROL
CONDICIONALES
== Igual a
!= No igual a Diferente de
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que


if (valor ?? valor)
{
ejecuta Instrucciones;
}

// ?? representa cualquier operador
de comparacin.

ESTRUCTURA DE PROGRAMACIN IF ELSE
Sentencia If(condicional)... Else.

if (inputPin == HIGH)
{
instruccionesA;
}
else
{
instruccionesB;
}

EJEMPLO 3: LECTURA DEL SENSOR DE
DISTANCIA - CONDICIONAL IF
En este ejemplo se utiliza el sensor de distancia como entrada digital
para leer su valor, tambin se utiliza los pines de salida digital para
mover el TinyBot dependiendo el estado del sensor utilizando el
condicional IF.
NUNCHU
CK
NUNCHUCK
Controlador a distancia inalmbrico (5m) por
radiofrecuencia (2.4 Ghz), es un dispositivo
esclavo del bus I2C
Elementos del Nunchuck
Acelermetro de 3 ejes LIS3L02AL dentro del
Nunchuck
Cuenta con un convertidor A-D de 10 bits
Un Joystick analgico
Mando con Botones C y Z

ACELERMETRO
Se utiliza para determinar la posicin de un cuerpo (del mando en este caso),
midiendo la aceleracin y conociendo la posicin inicial y velocidad con la que
se desplaza, podemos calcular la posicin final (lo calcula el LIS3L02AL).
USANDO EL NUNCHUCK
Se controla con solo 2 pines de nuestro Arduino, su alimentacin y GND, se conecta mediante
el bus I2C y funciona a 3,3V.
Donde Clock sera el pin SCL, y Data el pin SDA, del bus
I2C correspondientes a los pines analgicos A5 y A4 del
Arduino NANO respectivamente.
PROTOCOLO DEL BUS I2C
El I2C (Inter Integrated Circuits) es un bus de comunicaciones serial sncrono de dos lneas,
permite la comunicacin entre mltiples dispositivos, todos conectados paralelamente a las
dos lneas. Las transferencias de datos siempre se realizan entre dos dispositivos a la vez y en
una relacin maestro esclavo.
Los dispositivos Maestros son normalmente: Microcontroladores
Esclavos pueden ser memorias, conversores DAC y ADC, controladores de LCD,
sensores de todos los tipos, etc.
PROTOCOLO DEL BUS I2C
El dispositivo maestro (microcontrolador) es quien siempre tiene la iniciativa de la
comunicacin: el maestro genera la seal de reloj y controla cuando se transmiten
o reciben los datos.
Puede haber varios esclavos en la red I2C, pero el maestro solo se comunica con
uno a la vez. Por eso cada dispositivo esclavo debe ser identificado por una
direccin nica.


Especificaciones Software y
Hardware del bus I2C:

http://www.nxp.com/documents/oth
er/UM10204_v5.pdf
NUNCHU
CK
LIBRERIAS:
Libreria I2C:
#include <Wire.h>
Libreria WiiNunchuck:
#include <ArduinoNunchuk.h>

DEFINICIONES IMPORTANTES:
#define BAUDRATE 9600
ArduinoNunchuk nunchuk = ArduinoNunchuk();
NUNCHU
CK
void setup()
{
Serial.begin(BAUDRATE); //Iniciamos comunicacin serial
nunchuk.init(); //Iniciamos WiiNunchuck
}
void loop ()
{
nunchuk.update(); //Actualizamos los valores
}
EJEMPLO
1
Lectura del Joystick y botones Nunchuck:
En este ejercicio mostraremos mediante el puerto serial de nuestro IDE Arduino los
valores del Joystick y botones C y Z:
nunchuk.analogX
nunchuk.analogY
nunchuk.cButton
nunchuk.zButton
EJEMPLO
2
Lectura del Joystick, botones y acelermetro del Nunchuck:
En este ejercicio mostraremos mediante el puerto serial de nuestro IDE Arduino los
valores del Joystick, botones C y Z y lecturas analgicas del acelermetro de nuestro
Nunchuck.

nunchuk.analogX nunchuk.accelX
nunchuk.analogY nunchuk.accelY
nunchuk.cButton nunchuk.accelZ
nunchuk.czButton
EJERCICI
O 1
Ejercicio IF con botones C y Z
Mediante nuestro control de mando, cumplir las siguientes condiciones:
1. Cuando se presione el boton C prender el led 1,
2. Cuando se presione el boton Z prender el led 2,
3. Cuando se presionen simultneamente el boton C y Z activar el Buzzer
nunchuk.cButton nunchuk.czButton
pinMode(pin, (OUTPUT o INPUT)); digitalWrite(pin, (HIGH o
LOW))
if (Condicin ) *Operadores boleanos && ||
{ Instrucciones; *Condiciones <, >, ==, =!
}

PINES
TINYBOT
Motor1 Direccin - Digital 2
Motor1 Velocidad - Digital 3
Motor2 Direccin - Digital 4
Motor2 Velocidad - Digital 5
Sensor de lnea 1 - Analgico
0
Sensor de Lnea 2 - Anallico
1

Sensor de Luz 1 - Analgico 2
Sensor de Luz 2 - Analgico 3
Sensor de distancia - Digital 7
Led 1 - Digital 10
Led 2 - Digital 11
Servomotor - Digital 9
Buzzer - D12
EJERCICI
O 2
Ejercicio IF con lectura Joystick Nunchuck
Mediante nuestro control de mando, cumplir las siguientes condiciones:
1. Cuando la lectura analgica Y se encuentre > 250 el Tinybot tiene que avanzar
hacia adelante
2. Cuando la lectura analgica Y se encuentre < 10 el Tinybot tiene que avanzar
hacia atrs,

EJERCICI
O 3
Ejercicio IF con lectura Joystick Nunchuck
Mediante nuestro control de mando, cumplir las siguientes condiciones:
1. Cuando la lectura analgica Y se encuentre > 250 el Tinybot tiene que avanzar
hacia adelante
2. Cuando la lectura analgica Y se encuentre < 10 el Tinybot tiene que avanzar
hacia atrs,
3. Cuando la lectura analgica X se encuentre > 250 el Tinybot tiene que girar hacia
la derecha,
4. Cuando la lectura analgica X se encuentre < 10 el Tinybot tiene que girar hacia
la izquierda.

Вам также может понравиться