versin feb 14 Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero 2
Aclarando las cosas.
Estara feo llamarle a esto manual de Arduino. Los manuales los escriben expertos, y yo estoy lejos de ser experto de nada, y menos de Arduino.
Lo que tienes ahora mismo delante no es ms que una recopilacin, adaptacin, traduccin etc, etc, con la que slo se pretende que no pases las horas que he pasado yo buceando en internet.
Muchos de los textos los he sacado de la pgina oficial de Arduino, otros de pginas de fabricantes o distribuidores de componentes, y en la mayora de las veces me he limitado a adaptarlos al contexto de un aula de tecnologas de ESO o Bachillerato, si eso todava existe cuando leas esto.
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero 3
Qu es esto de Arduino? Arduino es una plataforma de electrnica abierta para la creacin de prototipos basada en software y hardware flexibles y fciles de usar. Siempre cuentan que se cre para artistas, diseadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos que no en muchas ocasiones no tenemos altos conocimientos de electrnica o programacin.
Arduino es una placa que recoge informacin del entorno por medio de sensores (pulsadores, sensores de temperatura, de presencia, de luminosidad, micrfonos), conectados a sus pines (conectores) de entrada, controlando de este modo cualquier cosa que nosotros queramos conectar a los pines de salida, ya sean luces, motores y otros actuadores.
pines? No son ms que conectores. Por ejemplo una Arduino Uno tiene 14 pines digitales y seis analgicos, aunque estos ltimos se pueden configurar tambin como digitales. Ahora es cuando toca recordar que una seal analgica es aquella cuyo valor vara entre un mnimo y un mximo. Por ejemplo, la medida de la temperatura, de la intensidad de luz, etc Una seal digital es ms bsica, y su valor slo puede ser encendido (HIGH en Arduino) o apagado (LOW). Dependiendo de lo que queramos medir y de las caractersticas de nuestro sensor, usaremos una entrada digital o analgica. Adems de stos nuestra placa tiene otra serie de pines, como son: IOREF, un duplicado de +5v Reset, con el que podemos controlar un reset de nuestra placa 3,3 v, salida positiva de voltaje. 5v, salida positiva de voltaje. GND, pin de tierra, el negativo de nuestros montajes. Vin, nos permite una entrada de alimentacin externa
Cada uno de ellos se puede configurar como entrada o salida con una sencilla instruccin. Tan simple como poniendo pinMode (13, OUTPUT) estaremos configurando el pin 13 como SALIDA.
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero 4
Qu lenguaje usamos para programar? Para programar el microcontrolador en la placa Arduino en el aula usaremos el lenguaje lenguaje de programacin Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP. En educacin tambin se usa mucho el SCRATCH, concretamente una versin especfica llamada S4A scratch for Arduino- un entorno grfico muy intuitivo.
Las placas Existen infinidad de tipos de placas. Cada da salen nuevas. Por comodidad, respeto a los creadores y por ser una de las ms extendidas nosotros vamos a usar la ARDUINO UNO rev3. Las placas pueden ser hechas a mano o compradas montadas de fbrica; el software puede ser descargado de forma gratuita. Los ficheros de diseo de referencia (CAD) estn disponibles bajo una licencia abierta, as pues eres libre de adaptarlos a tus necesidades. El equipo Arduino (Arduino team) es: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, y David Mellis.
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero 5
Qu podemos hacer con Arduino?
Una de las caractersticas ms interesantes de Arduino es que es lo suficientemente intuitivo como para poder empezar a trabajar en proyectos sencillos, pero a la vez nos permite incrementar la complejidad de los mismos de manera prcticamente infinita. Con Arduino podemos automatizar cualquier proyecto en el aula, hacer robots sencillos, manejar la informacin que genera cualquier sensor. Pon proyectos de arduino en Youtube y te dars cuenta de las infinitas posibilidades de Arduino.
Por qu Arduino?
Las razones por las que utilizar Arduino pueden resumirse en:
1. Es una plataforma de Hardware y software libre.
2. Permite usarse bajo Windows, Mac OS x, o Linux.
3. No precisa de grandes conocimientos de electrnica.
4. Es econmico.
5. Existe una inmensa y creciente comunidad en internet que nos ofrece infinidad de programas, ejemplos, proyectos, foros, ayuda.
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero 6
Qu necesitamos para trabajar con Arduino?
Para empezar a trabajar con Arduino slo necesitamos una de las distintas placas Arduino que existen, un ordenador con Windows, Mac OS X, o Linux, un cable y un cable usb que los conecte. Ah, y dedicarle unas cuantas horas
1. Descarga la IDE de Arduino. Para ello visita la pgina de descargas. Ya empezamos qu es eso del IDE? El IDE es nuestro interface con el que nos comunicaremos con nuestra placa. Lo utilizaremos para crear nuestros programas, depurarlos, compilarlos para que los entienda nuestra placa, y enviarlos a la misma. Tiene un aspecto ms o menos as.
2. Conecta la placa Arduino a tu ordenador usando el cable USB. El LED verde indicador de la alimentacin (nombrado como PWR en la placa) debera quedar encendido a partir de ese momento.
3. Instala los drivers. Cuando conectas la placa, Windows debera inicializar la instalacin de los drivers (siempre y cuando no hayas utilizado ese ordenador con una placa Arduino anteriormente). Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero 7
En Windows Vista y Windows 7, los drivers deberan descargarse e instalarse automticamente. En Windows XP, se abrir el dilogo de instalacin de Nuevo Hardware: Cuando te pregunten: Puede Windows conectarse a Windows Update para buscar el software? selecciona No, no esta vez. Haz click en Siguiente. Selecciona Instalar desde una lista o localizacin especfica (Avanzado) haz click en Siguiente. Asegrate que Buscar los mejores drivers en estas localizaciones est seleccionado; deselecciona Buscar en medios removibles; selecciona Incluye esta localizacin en la bsqueda y navega al directorio drivers/FTDI USB Drivers dentro de la carpeta de Arduino que has descomprimido previamente. (La versin ms reciente de los drivers se puede encontrar en la pgina web del fabricante del chip FTDI.) Haz click en Siguiente. El asistente de instalacin buscar los drivers y te anunciar que encontr un "USB Serial Converter" (se traduce por Conversor USB-Serie). Haz click en Finalizar. El asistente de instalacin de hardware volver a iniciarse. Repite los mismos pasos que antes y selecciona la misma carpeta de instalacin de los drivers. Esta vez el sistema encontrar un "USB Serial Port" (o Puerto USB-Serie). Puedes comprobar que los drivers se han instalado correctamente abriendo la carpeta del Administrador del Dispositivos, en el grupo Dispositivos del panel de control del sistema. Busca "USB Serial Port" (o Puerto USB-Serie) en la seccin de puertos; esa es tu placa Arduino.
Abrimos nuestro IDE. Lo primero que tenemos que hacer es una sencilla configuracin que supone elegir nuestra placa y el puerto a la que la tenemos conectada. Para ello vamos al men HERRAMIENTAS del que nos interesan dos pestaas, la pestaa TARJETA, en la que despus de desplegarla elegiremos la nuestra, y la pestaa PUERTO SERIAL, en la que seleccionaremos el puerto al que tenemos nuestra placa. Si no sabemos cul es, lo comprobaremos en la pantalla que vemos en la imagen de arriba.
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero
Nuestra primera prctica con ARDUINO.
Vamos a cargar nuestro primer programa con Arduino. Lo encontraremos en /ejemplos/basics/blink
El programa enciende intermitentemente un LED conectado directamente a la placa de Arduino. No necesitaremos protoboard en esta ocasin.
La estructura de todos los programas Arduino es igual.
// Enciende un LED un segundo y apgalo otro segundo repetidamente.
/* Aqu van comentarios iniciales del autor. Todo lo que vaya detrs desea barra asterisco no participa en el programa, por tanto no es cargado en la placa. Debemos cerrarlo con un */
/* parpadeo
*/ void setup() { // poniendo una doble barra podemos incluir explicaciones. En este caso arrancamos el setup de nuestro programa, es decir, las condiciones previas que servirn para todo el programa y que slo se cargarn una vez
pinMode (13, OUTPUT); // definimos el pin 13 como SALIDA. Siempre hay que decirle a nuestra placa si un pin lo hemos definido como OUTPUT o INPUT. siempre debemos terminar la instruccin con un ; !!! } // como abrimos llaves para definir el setup, debemos cerrarlas!!
// a partir de aqu creamos el bloque LOOP, el "alma" del programa. Este bloque se reproducir una y otra vez mientras no digamos lo contrario
void loop() { digitalWrite(13, HIGH); // manda una seal HIGH (encendido, +5v) digital al pin 13. El pin 13 es el nico de nuestra placa arduino que lleva una resistencia integrada de forma que podemos insertar un LED directamente. No utilices otro pin, ya que mandars 5v al LED y te lo cargars. delay(1000); // delay significa "espera". Con delay 1000 esperaremos 1000 milisegundos! cuidado! digitalWrite(13, LOW); // manda una seal LOW (apagado) digital al pin 13 delay(1000); // vuelve a esperar un segundo
// a partir de aqu, mientras no le digamos lo contrario nuestro programa se ejecutar infinitamente, porque el bucle no recibe ninguna orden de stop } // igual que antes, toda llave abierta hay que cerrarla. Fin del programa. Prubame
A partir de aqu es sencillo manipular el sketch a nuestro gusto. 1. Cambia el intervalo de tiempo a 0,25 seg 2. Cambia slo el de apagado. 3. Haz secuencias llamativas.
Vamos a montar lo mismo en una protoboard. Esto nos permitir incluir ms elementos en nuestra prctica. Recuerda que en una protoboard, los pines van conectados internamente as:
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero !
Para usar los leds los montaremos con una resistencia en serie de entre 220 y 270. Algo as
Las salidas digitales 7, 8 y 9 nos darn el +5v, mientras que cerraremos cada circuito con el pin GND de nuestra placa Arduino.
A partir de aqu ya debes ser capaz de controlar los led. Te echo una mano al principio, pero no te acostumbres. Intenta entender el sketch, ahora llevar menos explicaciones.
/* parpadeo de tres leds */
void setup() //definimos parmetros iniciales
pinMode (7, OUTPUT); // definimos los pines 7, 8 y 9 como SALIDAS pinMode (8, OUTPUT); pinMode (9, OUTPUT); }
void loop() { digitalWrite(7, HIGH); // mandamos a los pines 7, 8 y 9 la seal digital digitalWrite(8, HIGH); HIGH,encendido digitalWrite(9, HIGH); delay(1000); // esperamos 1000 milisegundos, siii, un segundo...
digitalWrite(7, LOW); // mandamos a los pines 7, 8 y 9 la seal digital digitalWrite(8, LOW); LOW, apagado digitalWrite(9, LOW); delay(1000); // volvemos a esperar un segundo, y ejecutamos de nuevo el loop } // importante, cerramos el bucle
has entendido qu hace cada instruccin? Perfecto! Si es as y has sido capaz de encender y apagar los tres leds, ahora toca jugar. Puedes hacer combinaciones infinitas con los leds encendidos o apagados y con los intervalos de tiempo.
1. Prueba a simular un semforo. 2. Haz las luces del coche fantstico. 3. Monta ms leds y haz combinaciones llamativas. No te olvides de las resistencias!
Entradas.
Al encender un led estamos usando SALIDAS, es decir, nuestra placa est provocando algo en el exterior. Mediante ellas podemos encender y apagar un led, controlar el giro de un motor, escribir en una pantalla, activar un zumbador, y todo lo que se te ocurra. Arduino nos permite adems configurar los pines como ENTRADAS. De est manera lo que estaremos haciendo es obtener informacin del entorno. La forma ms elemental de interactuar con l es mediante un pulsador. Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "#
Sera un error comparar esto que acabamos de decir con un circuito elctrico elemental mediante el cual encendemos un led al activar un pulsador. Sin caer en fantasmadas, nuestro proceso es mucho ms complejo. A diferencia de ese circuito, en el que el pulsador es un simple grifo que deja pasar o no electrones capaces de encender a su paso un led, en nuestro proceso sucede: 1. Leemos el valor de una entrada. Esta puede ser: a. DIGITAL: esperamos valores de encendido/apagado, en nuestro lenguaje HIGH/LOW. Sera el caso por ejemplo del pulsador. b. ANALGICA. El valor medido vara entre un valor cero y un mximo, normalmente 255. Podra ser el valor que obtenemos al medir la luz con un LDR. 2. En funcin del valor que obtenemos, ordenamos una accin. No ves la diferencia? . Hemos elegido la forma de entrada y salida ms sencillas, pero a partir de aqu podemos complicarnos la vida todo lo que queramos. Vamos a montar la prctica. Usaremos el sketch que viene en ejemplos/digital llamado BUTTON. Lo cargamos y aparece en nuestro IDE as: */ Botn. Enciende y apaga un LED conectado al pin 13 cuando apretamos un pulsador conectado al pin 2 */ const int buttonPin = 2; // indica el pin del pulsador const int ledPin = 13; // indica el pin del led int buttonState = 0; //al poner solo int, el estado del botn, buttonState, ser una variable con valor incicial 0.
void setup() { pinMode(ledPin, OUTPUT); // pin del led como SALIDA pinMode(butttonPin, INPUT); // pin del botn como ENTRADA } void loop() buttonState = digitalRead(buttonPin); // lee el valor de la variable estado del botn if (buttonState == HIGH) { // SI la variable digital, es HIGH...: digitalWrite(ledPin, HIGH); // enciende el pin } else { // en otro caso...: digitalWrite(ledPin, LOW); // apaga el LED } } fcil? Seguro que si. El esquema es del montaje es el siguiente: Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero ""
Ahora para sacarle partido a nuestros avances, podramos cambiar tanto las entradas como las salidas. En lugar de poner un sencillo pulsador vamos a poner ahora un SENSOR DE LUZ. Para ello usaremos un LDR, Light Dependent Resistor, que para los que nos llevamos regular con el ingls no es ms que una resistencia cuyo valor vara con la luz que incide sobre ella. Con poca luz, su resistencia es muy alta, y va bajando conforme lo iluminamos
Midiendo la luz.
Esta vez no queremos obtener valores digitales SI/NO, sino que queremos medir el valor de la luz que llega. Por eso usaremos entradas ANALGICAS. Las podemos encontrar en nuestra placa como A0, A1 El esquema del montaje ser muy parecido al montaje bsico del pulsador (que para eso lo hemos explicado)
Como ves, la principal diferencia es que conectamos el LDR a un pin analgico. Adems vamos a hacer otra cosa interesante con este nuevo sketch. Vamos a visualizar los valores que obtengamos del sensor en nuestro ordenador a travs del puerto USB. Para ello usaremos el MONITOR SERIAL del men HERRAMIENTAS de nuestro IDE. Si, es bastante feo, pero es el que hay. Las instrucciones bsicas que debemos conocer del monitor son: Serial.begin(9600) inicia la comunicacin con el monitor a 9600 bits/seg Serial.print(Hola Mundo!) muestra una lnea con Hola mundo Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "2
Serial.println(Valor) muestra en la misma lnea el valor de una variable Con esto nos apaamos..., de momento. Vamos con el ejemplo:
// Midiendo la cantidad de luz con un LDR
int LDR_pin = 0; // vamos a leer los valores del pin 0
int LDR_val = 0; // definimos la VARIABLE LDR_val y le damos el valor inicial = 0
void setup() {
Serial.begin(9600); // iniciamos el monitor serial.
void loop()
{ LDR_val = analogRead(LDR_pin); // leemos el valor que da el LDR.
Serial.print("LDR = "); // Imprimimos el texto LRD= en una lnea del monitor
Serial.println(LDR_val); // en la misma lnea, a continuacin, el valor ledo por el sensor
Genial, ya sabemos presentar en nuestro ordenador datos medidos con nuestra placa arduino. Ahora, adems de leerlos y presentarlos, vamos a procesarlos. Lo inmediato que se nos ocurre a todos es que, a partir de un determinado valor de lectura, hagamos algo. Por ejemplo podramos encender automticamente un led cuando el valor de la luz sea inferior al que nosotros fijemos. Usando el mismo ejemplo anterior, vamos a aadir unas lneas de cdigo (en verde). Slo comentaremos las lneas aadidas. // Encendido automtico de un LED en funcin de la luz
int LED_pin=13; //conectamos el LED en el pin 13 int LDR_pin = 0; int LDR_val = 0;
void setup() {
pinMode(LED_pin,OUTPUT); // LED del pin configurado como SALIDA Serial .begin(9600); }
if (LDR_val>=20) // Si hay luz, valor mayor de 20: { digitalWrite(LED_pin, LOW); // Apago el LED } else if (LDR_val<20) // Si no hay luz, si su valor es menor que 20 { digitalWrite(LED_pin, HIGH); // Encendemos el LED delay(1000); } }
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "3
El sensor de temperatura. Si hemos puesto un sensor de luz y nos ha funcionado, lo mismo podemos hacer con uno de temperatura. Tambin est compuesto por una resistencia variable que variar su valor en funcin de la temperatura. Tambin podremos monitorizar los valores, procesar los datos Todo eso corre de tu cuenta A otra cosa!
Libreras. Las libreras son pequeos programas que nos permiten usar fcilmente elementos complejos que conectamos a nuestra placa. Arduino ya cuenta con muchas de ellas. Las puedes encontrar en el directorio libraries, y aparecen en el menu ejemplos. Cuando queramos conectar algo ms xtico que una LDR, como un sensor complejo, una pantalla lcd o una controladora de motores, probablemente tengamos que instalar tambin una librera para controlarlo. El procedimiento es sencillo. Lo primero es obtener la biblioteca del componente. Si lo hemos adquirido en una tienda seria, y hay muchas, normalmente lo podremos descargar desde la hoja de descripcin del producto, junto con la datasheet del mismo. Tambin las podemos descargar de Github o de Arduino Playground. Una vez descargado el archivo zip, lo descomprimimos en la carpeta libraries de nuestro Arduino, nos aseguramos que la carpeta contenga los caracteres correctos y reiniciamos el IDE. Cuando ahora mi programa llame al principio a la librera que hemos instalado con la instruccin #include, veremos que esta llamada aparece en naranja, seal de que la ha reconocido correctamente. #include <Wire.h> ya te dije que estaba fcil
Sensores de tres y cuatro pines. Hasta el momento hemos trabajado con sensores con dos patillas en los que lo que se meda en la mayora de los casos era variaciones de resistencia. Los sensores de 3 patillas cuentan con dos, Vcc y GND, que se encargan de alimentar el sensor y otra S que recibe lo que conocemos por seal. Si el sensor tiene cuatro patillas, una de ellas se encarga de la emisin de seal y la otra de la recepcin. Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "4
El esquema general de este tipo de sensores es el siguiente: Con cuatro patillas:
Para los de tres patillas,
Con resistencia
Estas resistencias llamadas pull-down y pull-up estn conectadas a GND o a Vcc y su misin es entre otras hacer que nuestro micro no confunda una entrada con un cero o un uno lgico, con lo que nos aseguramos un correcto tratamiento de la lectura.
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "5
Sensores de presencia, humedad, sonido Una vez que ya sabemos cmo conectar los sensores de tres y cuatro patillas. Recuerda instalar la librera si es necesario. Un ejemplo de un detector de presencia podra ser este int ledPin = 13; // pin donde conectamos el LED int inputPin=2; // pin digital del sensor PIR int movimiento = LOW; // variable movimiento. Empieza como LOW int val = 0; // variable del pin. Empieza como cero int calibrationTime=30; // valor que consultamos en la datasheet del sensor void setup() { pinMode(ledPin, OUTPUT); // definimos pinLED, y decimos que es una salida pinMode(inputPin, INPUT); // definimos inputPin, u decimos que es una entrada Serial.begin(9600); // activamos el monitor serial Serial.print("calibrando... "); for(int i = 0; i < calibrationTime; i++){ Serial.print("."); digitalWrite(ledPin, HIGH); // creamos un parpadeo de LED durante el calibrado delay(50); digitalWrite(ledPin, LOW); delay(1000); } Serial.println(" Sensor Calibrado"); // ya hemos calibrado (hemos llegado a 30 seg) delay(50); }
void loop(){ val = digitalRead(inputPin); // leemos si hay movimiento if (val == HIGH) { // si lo hay digitalWrite(ledPin, HIGH); // encendemos el LED if (movimiento == LOW) {
Serial.println("Movimiento detectado!"); // slo imprimimos en caso de cambio movimiento = HIGH; } } else { Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "6
digitalWrite(ledPin, LOW); // apagamos el LED if (movimiento == HIGH){ Serial.println("No hay movimiento!"); movimiento = LOW; } } }
Controlando motores con el TB6612FNG SI todo marcha bien, ya sabemos gestionar y procesar las entradas de nuestro proyecto. Adems, hemos visualizado sus valores en el monitor y hemos gestionado salidas simples como leds o zumbadores. Sin embargo, en la mayora de los proyectos que hagamos en el taller, tarde o temprano aparecer un elemento que nos gusta ms: los motores. Con ellos abrimos puertas, accionamos norias, elevamos ascensores. Sera una pasada que nuestra placa Arduino pudiera manejarlos, no? Pues la respuesta es obvia, Yes, you can!. Vamos a ver cmo lo podemos hacer. Como ya hemos dicho, las salidas de nuestra placa nos proporcionan una intensidad baja. Esa intensidad se queda corta a la hora de accionar muchos elementos, como por ejemplo nuestros querisdos motores de cc siii, corriente continua, tema 4 de Tercero ESO...-. Podemos amplificar fcilmente esta seal por medio de un transistor, pero vamos a aprender a usar un driver que nos ofrece ms posibilidades. Se trata del TB6612FNG. El driver TB6612FNG nos permite controlar dos motores basndose en un doble puente-H. Con l podemos fijar el sentido de giro e incluso gracias a una salida tipo PWM ajustar la velocidad de giro. Recuerda que las salidas PWM son aquellas que delante del su nmero tienen el smbolo ~. El aspecto que presenta el fabricado por POLOLU es el siguiente:
A pesar de su aspecto, la conexin es sencilla. Como siempre, lo primero que deberamos hacer es ir al datasheet del componente. All encontraremos todos los datos que nos hacen falta. Como se te nota poco motivado, vamos a ir conectando cables y vers que no era tan complicado. Empezando por la izquierda: Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "7
GND y VCC: es la alimentacin de micro. Podemos sacarla de un GND y del +5V de la Arduino, o de otro sitio siempre que est entre 2.5 y 13v. AO1 y AO2: aqu conectaremos los dos bornes del motor A. BO1 y BO2: o, de output, salida, b del motor y 1 y 2 de cada una de ellas. Salidas para el motor B. Vmot y GND: alimentacin externa para los motores, bateras, fuente de alimentacin
Ya llevamos 8 pines y no tenemos bajas, seguimos con la parte derecha: PWMA: controla la velocidad por medio de una salida digital con PWM (modulacin por ancho de pulsos) del motor A. Recuerda que tiene que tener el smbolo ~ delante. AIN2 y AIN1: para controlar el sentido de giro de un motor necesitamos dos salidas digitales de la placa. Usaremos dos cualquiera para el motor A. STBY, standby: ponindolo en LOW conseguimos parar los motores. Lo conectaremos a otra salida digital. BIN1 y BIN2, in, entrada, b, del motor B, 1 y 2, cada una de las dos. Las conectaremos a dos salidas digitales de la placa. PWMB: control de velocidad del motor B. 0 parado, 255 velocidad mxima.
Ya lo tenemos conectado. Vamos con el cdigo. //CONTROLANDO MOTORES CC CON UN DRIVER 6612 //motor A conectado a A01y A02 //motor B conectado a B01 y B02 int STBY = 10; // definimos el pin de standby //para el motor A int PWMA = 3; // control de velocidad int AIN1 = 9; // direccin int AIN2 = 8; // direccin // para el motor B int PWMB = 5; // control de velocidad int BIN1 = 11; // direccin int BIN2 = 12; // direccin void setup(){ pinMode(STBY, OUTPUT); // definimos esos pines como salidas pinMode(PWMA, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT); }
void loop(){ Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "
mover(1, 255, 1); // acciona el motor 1, velocidad mxima, adelante mover(2, 255, 1); // acciona el motor 2, velocidad mxima, adelante delay(1000); // durante un segundo stop(); // para los motores delay(1000); // espera 1 segundo mover(1, 128, 0); // acciona el motor 1, velocidad media , atrs mover(2, 128, 0); // acciona el motor 2, velocidad media , atrs delay(1000); stop(); delay(1000); } void mover(int motor, int velocidad, int direccion){ //Vamos a definir la funcin mover, que va a acciona un motor, fijar su velocidad y el sentido de giro. Definimos: //motor: llamaremos 1 al motor A, y 2 al motor B //velocidad: desde 0 a 255 //direccin: 0 para el giro en sentido horario, 1 sentido antihorario digitalWrite(STBY, HIGH); //deshabilitar standby para mover boolean inPin1 = LOW; // creamos la variable booleana (solo puede ser HIGH/LOW) inpin1 boolean inPin2 = HIGH; // y le asignamos el valor LOW. A inPin2 le damos el valor HIGH if(direccion == 1){ inPin1 = HIGH; inPin2 = LOW; } if(motor == 1){ digitalWrite(AIN1, inPin1); digitalWrite(AIN2, inPin2); analogWrite(PWMA, velocidad); }else{ digitalWrite(BIN1, inPin1); digitalWrite(BIN2, inPin2); analogWrite(PWMB, velocidad); } } void stop(){ //ahora si, accionamos el standby digitalWrite(STBY, LOW); }
Arduino en el aula de tecnologas. Wladimir Lpez de Zamora Herrero "!
Lo que nosotros tendremos que hacer ser variar el loop y poner las condiciones que a nosotros nos interese. El esquema con el mismo componente pero de Sparkfun es el siguiente:
Creo que con estas nociones puedes hacer prcticamente todo en el taller de tecnologas. Se trata ahora de que sepas combinar, modificar, utilizar toda la informacin que aqu se ha recopilado. Disfruta!