You are on page 1of 69

Curso Arduino

Iniciativa Focus
Miguel ngel Torres de la Cmara

http://openmechatronics.wordpress.com/iniciativa-focus-uma/

ndice

Introduccin
Qu es Arduino?
Cmo se programa Arduino?
Primer programa en Arduino
Manejo de leds
Manejo de los pulsadores
Aprender a usar los servomotores
Manejo del mando de la wii
Trucar un servomotor
Manejo de motores
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Quines somos?

Iniciativa Focus (Formacin Cultura y Solidaridad)


Buscamos difundir el conocimiento libre

En la universidad de Mlaga: http://openmechatronics.wordpress.


com/iniciativa-focus-uma/
A nivel mundial en:
http://iniciativafocus.org/

Agradecimientos a: Juan Antonio Infantes y a scar Ramrez :)

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Introduccin a los
microcontroladores

Es un circuito integrado programable, capaz de ejecutar las rdenes


grabadas en su memoria.
Bajo consumo
Podemos manejar multitud de actuadores, sensores...

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Introduccin a los
microcontroladores

Cmo se programan?
Entornos de desarrollo a medida para cada micro
Precios caros
Placas de desarrollo caras.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Solucin => Arduino

Arduino se presenta como la solucin para iniciarse al mundo de la


electrnica/robtica con un bajo coste.
Utiliza Software y Hardware libre, con lo que igual nos sirve para un diseo
pequeo que para un sistema que va a controlar algo importante.
Tiene una comunidad muy grande desarrollando libreras, lo que la hacen
un buen punto de partida.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Arduino

Est compuesto de:

Entorno de desarrollo (software)

Placa de desarrollo

Microcontrolador

Circuitera necesara para acceder rpidamente a las E/S

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Entorno de Arduino

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Arduino

Microcontrolador ATmega328
Voltaje de operacin: 5V
Voltaje (recomendado): 7-12V
Voltaje (limite): 6-20V
Pines digitales I/O: 14
(6 PWM)
Pines Analgicos: 6
Intensidad por I/O Pin: 40 mA
Intensidad del pin 3.3V: 50 mA
Memoria flash: 32 KB
SRAM: 2 KB
EEPROM 1 KB
Velocidad Reloj: 16 MHz
Montaje superficial o dual in
line

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Focusduino

5 Botones:
1 Reset
1 digital(pin 2)
3 analgicos(pin analogico 0)
Control de 2 Motores
Entradas de 2 Servos
Pines conector nunchuck (I2C)
5 Leds superficie controlables
6 PWM en los puertos 3,5,6,9,10 y 11
6 entradas analgicas

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Extensiones para Arduino

Comunicaciones:

Placa Bluetooth
Zigbee
Ethernet
Wifi
RS 232

Sensores: luz, temperatura, movimiento, sonido, ultrasonido, IR...

Actuadores: control de motores, controlador servos...


Pantallas...

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Qu podemos hacer con


Arduino?
Controlar nuestra casa:
opendomotica.wordpress.com (Juan Antonio Infantes)
Cualquier proyecto de robtica:
openmechatronics.wordpress.com (Miguel ngel Torres)
Todo lo que se nos ocurra:
arduino.cc (Comunidad Arduino)

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
Funciones principales de Arduino:
void setup()
Define las condiciones iniciales del microcontrolador, es decir
especifica que pines se van a utilizar y con qu fin (Entrada o Salida).
Tambin se usa para inicializar las conexiones, por ejemplo para la
comunicacin serial, o bluetooth por ejemplo.

void loop()

Define la lgica del programa que queremos ejecutar (main).

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
Constantes:

INPUT: Entrada

OUTPUT: Salida

HIGH: Valor digital alto (5 v)

LOW: Valor digital bajo (0 v)

true: Verdadero

false: Falso

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
Variables:

boolean

char

byte

int

double

long

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
Secuencias:

if

if...else

for

switch case

while

do... while

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
Funciones:

Digitales:

pinMode()

digitalWrite()

digitalRead()

Analgicas

analogRead()

analogWrite()

Time

delay()

delayMicroseconds()

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
pinMode():
Se utiliza para definir si el puerto (pin) va a ser utilizado para entrada de datos
(INPUT) o salida (OUTPUT).
Va dentro del setup, ya que no podremos utilizar un pin hasta que no est
indicado si es de entrada o de salida.
Ejemplo:
short int led = 13;
void setup(){
pinMode(led,OUTPUT);
}
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Programacin de Arduino
digitalWrite():
Se utiliza para sacar un valor lgico por un pin, es decir,
poner a valor alto (HIGH) o bajo (LOW) un pin.
Ejemplo:
short int Led = 13;
--if (alarma==true){
digitalWrite(Led,HIGH);
}else{
digitalWrite(Led,LOW);
}

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin de Arduino
digitalRead():
Devuelve un valor lgico leido desde un pin, es decir, leemos un valor HIGH
(5V) o un valor LOW (0V).
Ejemplo:
short int Led = 13;
int Alarma = 12;
int val = 0;
--val = digitalRead(Alarma);
if (val){
digitalWrite(Led,HIGH);
}else{
digitalWrite(Led,LOW);
}
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Programacin de Arduino
analogRead():
Funcin para leer valores analgicos por los pines correspondientes.
Ejemplo:
void loop(){
int valor = analogRead(0); //La variable valor corresponde a la entrada analogica 0
if(valor > 250){
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
}
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Ejemplo
//Encender el led 13.
void setup(){
pinMode(13, OUTPUT); // Vamos a usar el pin 13 en modo salida
}

void loop(){
digitalWrite(13, HIGH); //Configura el pin digital 13 a 1 (high)
}

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Manejo de leds

Tenemos 5 led en la placa que podemos controlar de la siguiente forma:


Led 10 -> Pin digital 10
Led 9 -> Pin digital 9
Led 6 -> Pin digital 6
Led 5 -> Pin digital 5
Led L -> Pin digital 13

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Nuestro primer programa

Siguiendo la estructura explicada anteriormente:

void setup(){
pinMode(13, OUTPUT); // Vamos a usar el pin 13 en modo salida
}

void loop(){
digitalWrite(13, HIGH); //Configura el pin digital 13 a 1 (high = encendido)
}

Hacer parpadear el LED 6 con una frecuencia de 1.5 segundos


Sabiendo que la funcin retardo es: delay("tiempo en milisegundos")

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Segundo programa

Hacer parpadear todos los leds de forma desfasada (una feria!)

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Serial Monitor

Para ver desde el ordenador qu est pasando en Arduino podemos


mostrar a travs del Monitor Serial una variable, un estado, un texto...
Para inicializar el Serial debemos configurarlo en void setup()
void setup(){
Serial.begin(9600); // Inicializa el Serial y establece la velocidad a 9600 baud
}

Para comunicarnos con el ordenador siempre vamos a usar 9600 baud de


velocidad, para otros dispositivos depender de las especificaciones.
Baud = bits por segundo

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Serial Monitor II

Una vez inicializado podremos leer o escribir:

int lectura; // Declaramos la variable para almacenar el nmero que


leemos
void setup(){
Serial.begin(9600); // Inicializa el Serial y establece la velocidad a 9600 baud
}
void loop(){
Serial.print("Bienvenidos al curso. ") //Imprime "Bienvenidos al curso"
lectura = Serial.read(); //Almacena en lectura un entero leido
Serial.println(lectura); //Imprime el valor de lectura y hace retorno de carro
}

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programa 3.
1.

Mostrar por puerto serie el valor analgico de pulsar cada uno de los
pulsadores conectados al puerto 0 analgico.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Pulsadores

Nuestra placa tiene 5 pulsadores:


1 Reset (esencial en todos los prototipos
autnomos)
1 Pulsador digital (correspondiente al pin digital 2 si
lo pulsamos manda un 1 sino un 0.
3 Pulsadores Analgicos correspondiente al pin
analgico 0 (dependiendo cul pulsemos dejaremos
pasar ms o menos, desde 0 a 1023)

Podemos usar los pulsadores para interactuar con la


placa.
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Pulsadores II

Cmo usar los pulsadores analgicos?


Funcin para saber si est pulsado el pulsador 2.

boolean pulsado(int pulsador){


int valor = analogRead(0); //Lectura analgica del pin 0
if(pulsador == 2 && (valor < 280 && valor > 10)){
return true;
}
return false;
}

void loop {
int pulsador2 = 2;
if (pulsado(pulsador2)) //Si est pulsado el pulsador 2 devolver true.
Serial.println("Se ha pulsado el pulsador 2");
}

Completar la funcin para los pulsadores 3 y 4


Curso Arduino Iniciativa Focus
3 -> (280, 500) 4-> (500, 1023)

Miguel ngel Torres

Funcin pulsadores
Funcin completa para pulsadores analgicos
Seguira este formato:
/* if(pulsado(pulsador5){
} */

boolean pulsado(int pulsador){


int valor = analogRead(0); //Lectura analgica del pin 0
if(pulsador == 1 && (valor < 280 && valor > 10)){
return true;
}else if(pulsador == 2 && (valor > 280 && valor < 500)){
return true;
}else if(pulsador == 3 && (valor > 500)){
return true;
}
else {
return false;
Curso Arduino Iniciativa Focus
}}
Miguel ngel Torres

Programa 5

Ahora que ya sabemos manejar los pulsadores podemos hacer programas


ms interactivos.

Programar la placa para que mientras est pulsado el pulsador analgico


se encienda un led:
pulsador 1 -> led 5
pulsador 2 -> led 6
pulsador 3 -> led 9
pulsador digital -> led 10

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Comunicacin
Existen muchas formas de comunicar dos arduinos, o una red entera, lo
podemos hacer mediante Zigbee, I2C, RS232, Bluetooth...
Pero existe una forma muy rudimentaria pero que no necesita ningn
controlador de comunicacin. Simplemente enviando una seal cuadrada (1 y
0) podemos comunicar dos placas estableciendo nuestro propio protocolo.
Por ejemplo, recibo 1 durante 200 ms despus 0 durante 50 ms entonces eso
significa que debo encender el led 10.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programa 4 (un poco ms complejo)


Comunicar vuestro Arduino con el de un compaero, establecer para ello un
emisor (el Arduino que va a enviar la seal) y un receptor (Arduino que leer la
seal establecida).
Esta ser la seal: si pulso el pulsador 2 envo HIGH durante 200 ms despus
0 durante 50 ms entonces eso significa que debo encender el led 10.
4.a -> Programa en el arduino emisor, enva a travs del pin 8 la seal si se
pulsa el pulsador 2.
4.b -> Programa en el arduino receptor, recibe a travs del pin 4 la seal y
enciende el LED 10 si la seal es la esperada.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Resumen

Dos funciones principales void setup() y void loop()


Declaramos lo que vamos a usar en void setup: pinMode(led5, OUTPUT);
Control de los pines digitales:
digitalWrite(npin, HIGH);
digitalWrite(npin, LOW);

Podemos mostrar por pantalla variables o lo que queramos:


Serial.begin(9600);
Serial.read();
Serial.println(variable);

Lecturas analgicas para los pulsadores por ejemplo:


variable_lectura = analogRead(pinanalogico);

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Servomotores
Reductora

Motor DC

Controlador
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Servomotores II

El servo tiene 3 cables:


Marrn -> GND
Rojo -> 5v
Amarillo -> Seal

Se controla mediante PWM


(modulacin por ancho de pulso).
Variando la anchura del pulso se
puede controlar el sentido de giro y
la posicin.

Tiene un campo de giro de 180


Lo podemos convertir en un motor
de movimiento continuo con
mucha fuerza.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Nuestro servomor

Tiene 1.6 kg de torque mximo.


Tiene un tamao reducido.
Es barato: 7 en cooking-hacks.
com: http://www.cooking-hacks.
com/index.
php/shop/robotics/servos/mini-servomystery-9g-1-3-kg-torque.html

Tiene un campo de giro de 180

Lo podemos conectar a nuestro


Focusduino

Lo controlamos mediante la librera


Servo.h

Lo podemos convertir en un motor


DC con
mucha fuerza.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Conexin con Arduino


Podremos conectarlo a las dos
entradas que
existen en nuesta placa.
Comprobaremos en primer
lugar que se corresponda la pata de
GND con el
cable marrn.

Podremos conectar 2 servos.


El servo1 se corresponde con el pin
digital 3.
El servo2 se corresponde con el pin
digital 11.
En un arduino convencional lo
conectaremos
a cualquier pin digital con PWM (~)
Para programarlo usaremos la
librera:
<Servo.h>

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Programacin servos
#include <Servo.h> //Librera
Servo s1; //Declaramos servo 1
Servo s2; //Declaramos servo 2
int pos1 = 0; // Posicion servo 1 (0/180)
void setup()
{
s1.attach(3); // s1 se controla con el pin 3 en nuestra
placa
s2.attach(11); // s2 se controla con el pin 11 en
nuestra placa
}

void loop() {
s1.write(pos1);
posicion indicada
}

// coloca el servo en la
Curso Arduino Iniciativa Focus
Miguel ngel Torres

Problema 6
Ahora que ya sabemos cmo controlar la posicin de los servos, hacer un
programa que haga moverse el servo1 desde 0 hasta 180 y vuelta (de 10 en
10 grados cada 200 ms), y el servo2 igual pero desfasado 180.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Problema 6 b
Controlar la posicin de los servos mediante los pulsadores:
Si se pulsa el pulsador 1 -> servo s1 -> 0
Si se pulsa el pulsador 2 -> servo s1 -> 90
Si se pulsa el pulsador 3 -> servo s1 -> 180

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Nunchuck

Acelermetro
Joystick
2 botones

Podremos conectarlo a nuestro arduino


y leer todos los datos.
Para ello necesitaremos el adaptador.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Conexin nunchuck
Para conectar el nunchuck con nuestro focusduino es tan fcil como conectar
la clavija en el adaptador que hemos preparado, prestando especial atencin
en que coincida siempre GND con GND del adaptador (tiene que quedar hacia
fuera)
Quienes tengan un Arduino convencional tendrn que hacer uso de la
protoboard.

Librera nunchuck
Para leer los valores del mando necesitaremos hacer uso de la librera
WiiNchuck. La podris descargar desde la pgina del curso:
openmechatronics.wordpress.com/iniciativa-focus-uma/

Para poder usar la librera WiiNchuck hay que incluirla en la ruta ~/libraries/ de
nuestra carpeta de Arduino y reiniciar el programa de Arduino.

Librera nunchuck
Utilidades de la librera WiiNChuck.h:

void begin()
void update()
int JoyX()
int JoyY()
int AccelX()
int AccelY()
int AccelZ()
bool CButton()
bool ZButton()

Librera nunchuck
Para pintar los datos por serie:

void Print_All()
void Print_Space()
void Print_JoyX()
void Print_JoyY()
void Print_AccelX()
void Print_AccelZ()
void Print_CButton()
void Print_ZButton()

Librera nunchuck

void begin()

Con este mtodo inicializamos el nunchuck para empezar a enviar.


Siempre se coloca en la parte de configuracin.
Ej.:
WiiNChuck chuck; //chuck va a ser nuestro mando
void setup(){
chuck.begin(); //empieza a enviar
}

Librera nunchuck

void update()

Con este mtodo actualizamos los valores recibidos desde el nunchuck.


Siempre se coloca en la parte de ejecucin.
Ej.:
WiiNChuck chuck;
void setup(){
chuck.begin();
}
void loop(){
chuck.update();
}

Librera nunchuck
Estructura bsica para utilizar la libreria:
#include <WiiNChuck.h>
#include <Wire.h> //esta librera est incluida y nos permite comunicarnos por el
puerto I2C
WiiNChuck chuck;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
//utilizacin del nunchuck
}

Librera nunchuck

int JoyX():

Este metodo nos devuelve el valor leido del eje X del joystick.
Se usa despues de usar el metodo update().
Ej.:
WiiNChuck chuck;
int ejeX;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
ejeX=chuck.JoyX();
}

Librera nunchuck

int JoyY():

Este metodo nos devuelve el valor leido del eje Y del joystick.
Se usa despues de usar el metodo update().
Ej.:
WiiNChuck chuck;
int ejeY;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
ejeY=chuck.JoyY();
}

Librera nunchuck

int AccelX():

Este metodo nos devuelve el valor leido del eje X del acelermetro.
Se usa despues de usar el metodo update().
Ej.:
WiiNChuck chuck;
int accelX;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
accelX=chuck.AccelX();
}

Librera nunchuck

int AccelY():

Este metodo nos devuelve el valor leido del eje Y del acelermetro.
Se usa despues de usar el metodo update().
Ej.:
WiiNChuck chuck;
int accelY;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
accelY=chuck.AccelY();
}

Librera nunchuck

int AccelZ():

Este metodo nos devuelve el valor leido del eje Z del acelermetro.
Se usa despues de usar el metodo update().
Ej.:
WiiNChuck chuck;
int accelZ;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
accelZ=chuck.AccelZ();
}

Librera nunchuck

bool CButton():

Este metodo nos devuelve el valor leido del botn C, 1 si est pulsado y 0 si est
suelto
Se usa despues de usar el metodo update().
Ej.:
WiiNChuck chuck;
int botC;
void setup(){
Wire.begin();
chuck.begin();
}
void loop(){
chuck.update();
botC=chuck.CButton();
}

Librera nunchuck
void Print_All()
Todas las funciones que empiezan por Print usan el protocolo Serie para mostrar
los valores.

Ej.:
void setup(){
Wire.begin();
chuck.begin();
Serial.begin(9600);
}
void loop(){
chuck.Print_All();
}

Ejercicios nunchuck

1.- Mostrar y apuntar los valores mximos y minimos de nuestro nunchuck


mostrando los valores por Serie.

2.- Encender un led diferente con cada botn pulsado.

3.-Mover los 2 servo motores con el joystick uno conectado al eje X y otro al eje
Y

Trucar un servomotor
1.
2.
3.

4.

5.
6.
7.
8.

Debemos quitarle los 4 tornillos inferiores


Sacamos la tapa superior.
Extraemos el primer rodamiento que
podemos sacar, el que genera el ltimo
movimiento.
En el rodamiento encontramos un saliente
que hace de tope, lo eliminamos con un
cter o una tenaza, limamos la zona para
que est totalmente lisa,
Ya tenemos eliminada la parte mecnica
ahora, slo falta la electrnica.
Sacamos la placa controladora y a su vez
el potencimetro.
Cortamos los cables, y soldamos el negro
y el rojo a las patillas del motor.
Volvemos a ensamblarlo todo, y listo!

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Control de Motores

Los motores cambian su velocidad segn el voltaje que se les


suministre.
Los motores cambian su sentido invirtiendo su polaridad.
Para mover un motor en un sentido hay que meter en un pin un valor
bajo (LOW) y en el otro un valor alto (HIGH).
Para cambiar la velocidad del motor se usa las entradas
correspondientes con la funcin analogWrite(pin,num), pudiendo
cambiar el numero entre 0 y 255.

Para nuestros servos es necesario ms de 50 para empezar a moverse

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Control de Motor 1

Controlar la direccin de giro (pines 5 y 6)

int m11=5, m12=6; //motor1direccin1 = pindig5 <-> motor1direccin2 = pindig6


void setup(){
pinMode(m11,OUTPUT);
pinMode(m12,OUTPUT);
}
void loop(){
digitalWrite(m11,LOW);
digitalWrite(m12,HIGH);
delay(1000); //avanza hacia delante 1 seg
digitalWrite(m11,HIGH);
digitalWrite(m12,LOW);
delay(2000); //avanza hacia atrs 2 seg
}

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Control de Motor 1

Controlar la velocidad de giro (pines 5 y 6)

int m11=5, m12=6; //motor1direccin1 = pindig5 <-> motor1direccin2 = pindig6


int vel = 150; //configura la velocidad del motor
void setup(){
pinMode(m11,OUTPUT);
pinMode(m12,OUTPUT);
}
void loop(){
digitalWrite(m11,LOW);
analogWrite(m12, vel); //Avanza a velocidad = vel
delay(1000); //avanza hacia delante 1 seg
analogWrite(m11, vel); //Retrocede a velocidad = vel
digitalWrite(m12,LOW);
delay(2000); //avanza hacia atrs 2 seg
Curso Arduino Iniciativa Focus
}
Miguel ngel Torres

Control de Motor 2

Controlar la direccin de giro (pines 9 y 10)

int m21=9, m22=10; //motor2direccin1 = pindig9 <-> motor2direccin2 =


pindig10
void setup(){
pinMode(m21,OUTPUT);
pinMode(m22,OUTPUT);
}
void loop(){
digitalWrite(m21,LOW);
digitalWrite(m22,HIGH);
delay(1000); //avanza hacia delante 1 seg
digitalWrite(m21,HIGH);
digitalWrite(m22,LOW);
delay(2000); //avanza hacia atrs 2 seg
Curso Arduino Iniciativa Focus
}
Miguel ngel Torres

Control de Motor 2

Controlar la velocidad de giro (pines 9 y 10)

int m21=9, m22=10; //motor2direccin1 = pindig9 <-> motor2direccin2 =


pindig10
int vel = 190; //configura la velocidad del motor
void setup(){
pinMode(m21,OUTPUT);
pinMode(m22,OUTPUT);
}
void loop(){
digitalWrite(m21,LOW);
analogWrite(m22, vel); //Avanza a velocidad = vel
delay(1000); //avanza hacia delante 1 seg
analogWrite(m21, vel); //Retrocede a velocidad = vel
digitalWrite(m22,LOW);
Curso Arduino Iniciativa Focus
delay(2000); //avanza hacia atrs 2 seg
Miguel ngel Torres

Control de Motor 2

Controlar la velocidad de giro (pines 9 y 10)

int m21=9, m22=10; //motor2direccin1 = pindig9 <-> motor2direccin2 =


pindig10
int vel = 190; //configura la velocidad del motor
void setup(){
pinMode(m21,OUTPUT);
pinMode(m22,OUTPUT);
}
void loop(){
digitalWrite(m21,LOW);
analogWrite(m22, vel); //Avanza a velocidad = vel
delay(1000); //avanza hacia delante 1 seg
analogWrite(m21, vel); //Retrocede a velocidad = vel
digitalWrite(m22,LOW);
Curso Arduino Iniciativa Focus
delay(2000); //avanza hacia atrs 2 seg
Miguel ngel Torres

Ejercicio Motores
1.
2.

3.

Mover el motor 1 hacia adelante y el 2 hacia atrs, cuando se pulsa el botn


digital se cambian los sentido.
Hacer avanzar el motor 1 a velocidad baja (80) mientras est pulsado el
pulsador 1, si est pulsado el pulsador 2 cambiar a velocidad 150 y si est
pulsado el 3 avanzar a mxima velocidad (255).
Controlar con el acelermetro Y del nunchuck que avance o retrocedan los
dos motores, y con el acelermetro X que avance el motor derecho o
izquierdo.

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Montaje del robot

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Referencias

Curso Arduino Iniciativa Focus ao 2010 (Juan Antonio y scar)


www.arduino.cc
openmechatronics.wordpress.com

Curso Arduino Iniciativa Focus


Miguel ngel Torres

Gracias!
Todos los ejercicios, libreras, esta presentacin y muchos ms proyectos con
arduino estarn en la pgina:
openmechatronics.wordpress.com

Desde Iniciativa Focus: Miguel ngel Torres de la Cmara

Curso Arduino Iniciativa Focus


Miguel ngel Torres

You might also like