/*
NOMBRE DE PROGRAMA: Coche Arduino controlado por bluetooth, con módulo HC05 y motor shield
L293D
DESCRIPCIÓN: Este proceso nos permite controlar un coche 4x4 (cuatro motores independientes,
uno para cada rueda), con el microprocesador UNO R3, el motorshield L293D y el módulo bluetooth HC-
05.
Para comunicar con el módulo bluetooth y poder controlar el coche con nuestro móvil,
usaremos la app Android "BLUETOOTH RC CONTROLLER".
¡IMPORTANTE! Antes de subir el código, tienes que instalar la librería "Adafruit Motor Shield"
Tienes instrucciones precisas en: [Link]
Aunque básicamente la instalación se hace siguiendo estos pasos:
ARDUINO IDE -> Ir a MENÚ SKETCH / INCLUIR BIBLIOTECA / GESTIONAR BIBLIOTECAS
En la ventana que se abre busca "ADAFRUIT MOTOR SHIELD" e instala la librería si no está instalada
(puedes aprovechar e instalar todas las librerías de Adafruit)
¡ATENCIÓN! DESCONECTA LA ALIMENTACIÓN DEL MÓDULO BLUETOOTH HC-05, ANTES DE CONECTAR
AL PC
EL MICROCONTROLADOR ARDUINO UNO R3 PARA SUBIRLE EL CÓDIGO.
Canal de YouTube del autor: [Link]
LICENCIA: YOUTUBE COMMONS. Sólo se permite copiar y cambiar el código, para uso personal.
NO ESTÁ PERMITIDA SU DISTRIBUCIÓN EN AMBIENTES PROFESIONALES O COMERCIALES.
*/
#include <AFMotor.h>
#include <SoftwareSerial.h>
SoftwareSerial bluetoothSerial(9, 10); // RX, TX
//Pines iniciales de los motores
AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);
char Variable;
void setup()
[Link](9600); //Establecemos los baudios para el módulo bluetooth.
void loop() {
if ([Link]() > 0) {
Variable = [Link]();
Stop(); //inicializo con motores detenidos
switch (Variable) {
case 'F':
adelante();
break;
case 'B':
atras();
break;
case 'L':
izquierda();
break;
case 'R':
derecha();
break;
void adelante()
[Link](255); //Asigno maxima velocidad al motor 1
[Link](FORWARD); //Hago girar el motor 1 hacia delante
[Link](255); //Asigno maxima velocidad al motor 2
[Link](FORWARD); //Hago girar el motor 2 hacia delante
[Link](255); //Asigno maxima velocidad al motor 3
[Link](FORWARD); //Hago girar el motor 3 hacia delante
[Link](255); //Asigno maxima velocidad al motor 4
[Link](FORWARD); //Hago girar el motor 4 hacia delante
void atras()
[Link](255); //Asigno maxima velocidad al motor 1
[Link](BACKWARD); //Hago girar el motor 1 hacia atras
[Link](255); //Asigno maxima velocidad al motor 2
[Link](BACKWARD); //Hago girar el motor 2 hacia atras
[Link](255); //Asigno maxima velocidad al motor 3
[Link](BACKWARD); //Hago girar el motor 3 hacia atras
[Link](255); //Asigno maxima velocidad al motor 4
[Link](BACKWARD); //Hago girar el motor 4 hacia atras
void izquierda()
[Link](255); //Asigno maxima velocidad al motor 1
[Link](FORWARD); //Hago girar el motor 1 hacia atras
[Link](255); //Asigno maxima velocidad al motor 2
[Link](BACKWARD); //Hago girar el motor 2 hacia atras
[Link](255); //Asigno maxima velocidad al motor 3
[Link](BACKWARD); //Hago girar el motor 3 hacia delante
[Link](255); //Asigno maxima velocidad al motor 4
[Link](FORWARD); //Hago girar el motor 4 hacia delante
void derecha()
[Link](255); //Asigno maxima velocidad al motor 1
[Link](BACKWARD); //Hago girar el motor 1 hacia delante
[Link](255); //Asigno maxima velocidad al motor 2
[Link](FORWARD); //Hago girar el motor 2 hacia delante
[Link](255); //Asigno maxima velocidad al motor 3
[Link](FORWARD); //Hago girar el motor 3 hacia atras
[Link](255); //Asigno maxima velocidad al motor 4
[Link](BACKWARD); //Hago girar el motor 4 hacia atras
void Stop()
{
[Link](0); //Asigno minima velocidad al motor 1
[Link](RELEASE); //Paro el motor 1 cuando dejo de pulsar el boton
[Link](0); //Asigno minima velocidad al motor 2
[Link](RELEASE); //Paro el motor 2 cuando dejo de pulsar el boton
[Link](0); //Asigno minima velocidad al motor 3
[Link](RELEASE); //Paro el motor 3 cuando dejo de pulsar el boton
[Link](0); //Asigno minima velocidad al motor 4
[Link](RELEASE); //Paro el motor 4 cuando dejo de pulsar el boton