0% encontró este documento útil (0 votos)
37 vistas6 páginas

Control de Motores por Bluetooth en Arduino

El documento contiene un código para controlar un robot mediante Bluetooth, utilizando un Arduino. Se definen pines para motores, luces y bocina, y se implementan funciones para avanzar, retroceder, girar y detener el robot según comandos recibidos. Además, se incluye la capacidad de ajustar la velocidad de los motores y controlar las luces y la bocina.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas6 páginas

Control de Motores por Bluetooth en Arduino

El documento contiene un código para controlar un robot mediante Bluetooth, utilizando un Arduino. Se definen pines para motores, luces y bocina, y se implementan funciones para avanzar, retroceder, girar y detener el robot según comandos recibidos. Además, se incluye la capacidad de ajustar la velocidad de los motores y controlar las luces y la bocina.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

// Pines de los motores

const int mIzqA = 4; // Motor izquierdo adelante


const int mIzqB = 5; // Motor izquierdo atrás
const int mDerA = 6; // Motor derecho adelante
const int mDerB = 7; // Motor derecho atrás

// Variable para recibir comandos Bluetooth


char comandoBluetooth;

void setup() {
// Iniciar comunicación serial para Bluetooth
[Link](9600);

// Configurar pines de motores como salida


pinMode(mIzqA, OUTPUT);
pinMode(mIzqB, OUTPUT);
pinMode(mDerA, OUTPUT);
pinMode(mDerB, OUTPUT);
}

void loop() {
// Leer comando de Bluetooth si está disponible
if ([Link]() > 0) {
comandoBluetooth = [Link]();

if (comandoBluetooth == 'F') { // Avanzar


avanzar();
}
else if (comandoBluetooth == 'B') { // Retroceder
retroceder();
}
else if (comandoBluetooth == 'L') { // Girar a la izquierda
izquierda();
}
else if (comandoBluetooth == 'R') { // Girar a la derecha
derecha();
}
else if (comandoBluetooth == 'S') { // Detener
detener();
}
else {
detener(); // Detener si el comando no es válido
}
}
}

// Funciones de movimiento
void avanzar() {
digitalWrite(mIzqA, HIGH);
digitalWrite(mIzqB, LOW);
digitalWrite(mDerA, HIGH);
digitalWrite(mDerB, LOW);
}

void retroceder() {
digitalWrite(mIzqA, LOW);
digitalWrite(mIzqB, HIGH);
digitalWrite(mDerA, LOW);
digitalWrite(mDerB, HIGH);
}

void izquierda() {
digitalWrite(mIzqA, LOW);
digitalWrite(mIzqB, LOW);
digitalWrite(mDerA, HIGH);
digitalWrite(mDerB, LOW);
}

void derecha() {
digitalWrite(mIzqA, HIGH);
digitalWrite(mIzqB, LOW);
digitalWrite(mDerA, LOW);
digitalWrite(mDerB, LOW);
}

void detener() {
digitalWrite(mIzqA, LOW);
digitalWrite(mIzqB, LOW);
digitalWrite(mDerA, LOW);
digitalWrite(mDerB, LOW);
}

Opcion B
// Incluimos la librería
#include <SoftwareSerial.h>

// Instanciamos objeto SoftwareSerial para controlar el Bluetooth


SoftwareSerial hc06(2, 3);

// Definición de los pines para el control de la velocidad


int VelocidadMotorIzquierdo = 9;
int VelocidadMotorDerecho = 10;

// Definición de los pines de control de giro de los motores In1, In2, In3 e In4
int MotorIzquierdoA = 4;
int MotorIzquierdoB = 5;
int MotorDerechoC = 6;
int MotorDerechoD = 7;

// Definición de los pines de las luces y de la bocina


int LuzCarroFrontal1 = 11;
int LuzCarroFrontal2 = 12;
int LuzCarroTrasera1 = 13;
int Bocina = 8;

// Definición de la velocidad inicial de los motores


int velocidadMotor = 80;

// Variable para capturar el comando que llega desde la app


String cmd = "";

void setup() {
// Monitor Serial
[Link](9600);

// Puerto Serial Bluetooth


[Link](9600);

// Modo de pines de las luces


pinMode(LuzCarroFrontal1, OUTPUT);
pinMode(LuzCarroFrontal2, OUTPUT);
pinMode(LuzCarroTrasera1, OUTPUT);

// Modo del pin de la bocina


pinMode(Bocina, OUTPUT);

// Establecemos modo de los pines del control de motores


pinMode(MotorIzquierdoA, OUTPUT);
pinMode(MotorIzquierdoB, OUTPUT);
pinMode(MotorDerechoC, OUTPUT);
pinMode(MotorDerechoD, OUTPUT);
pinMode(VelocidadMotorIzquierdo, OUTPUT);
pinMode(VelocidadMotorDerecho, OUTPUT);

// Configuramos velocidad de los dos motores


analogWrite(VelocidadMotorIzquierdo, velocidadMotor);
analogWrite(VelocidadMotorDerecho, velocidadMotor);
}

void loop() {
// Leemos los datos recibidos
while ([Link]() > 0) {
cmd += (char)[Link]();
}

// Programamos cada una de las acciones a realizar según el comando recibido


if (cmd != "") {
cmd = cmd[0];
if (cmd == "S") {
detenerCarro();
} else if (cmd == "F") {
avanzarCarro();
} else if (cmd == "B") {
retrocederCarro();
} else if (cmd == "L") {
girarIzquierda();
} else if (cmd == "R") {
girarDerecha();
} else if (cmd == "G") {
avanzarIzquierda();
} else if (cmd == "I") {
avanzarDerecha();
} else if (cmd == "H") {
retrocederIzquierda();
} else if (cmd == "J") {
retrocederDerecha();
} else if (cmd == "W") {
digitalWrite(LuzCarroFrontal1, HIGH);
digitalWrite(LuzCarroFrontal2, HIGH);
} else if (cmd == "w") {
digitalWrite(LuzCarroFrontal1, LOW);
digitalWrite(LuzCarroFrontal2, LOW);
} else if (cmd == "U") {
digitalWrite(LuzCarroTrasera1, HIGH);
} else if (cmd == "u") {
digitalWrite(LuzCarroTrasera1, LOW);
} else if (cmd == "X") {
digitalWrite(LuzCarroTrasera1, HIGH);
digitalWrite(LuzCarroFrontal1, HIGH);
digitalWrite(LuzCarroFrontal2, HIGH);
} else if (cmd == "x") {
digitalWrite(LuzCarroTrasera1, LOW);
digitalWrite(LuzCarroFrontal1, LOW);
digitalWrite(LuzCarroFrontal2, LOW);
} else if (cmd == "V") {
digitalWrite(Bocina, HIGH);
} else if (cmd == "v") {
digitalWrite(Bocina, LOW);
} else if (cmd == "0") {
velocidadMotor = 80;
} else if (cmd == "1") {
velocidadMotor = 90;
} else if (cmd == "2") {
velocidadMotor = 100;
} else if (cmd == "3") {
velocidadMotor = 110;
} else if (cmd == "4") {
velocidadMotor = 120;
} else if (cmd == "5") {
velocidadMotor = 130;
} else if (cmd == "6") {
velocidadMotor = 140;
} else if (cmd == "7") {
velocidadMotor = 150;
} else if (cmd == "8") {
velocidadMotor = 160;
} else if (cmd == "9") {
velocidadMotor = 170;
} else if (cmd == "q") {
velocidadMotor = 180;
}

analogWrite(VelocidadMotorIzquierdo, velocidadMotor);
analogWrite(VelocidadMotorDerecho, velocidadMotor);
cmd = ""; // Esperamos el siguiente comando
}
}

void detenerCarro() {
digitalWrite(MotorIzquierdoA, LOW);
digitalWrite(MotorIzquierdoB, LOW);
digitalWrite(MotorDerechoC, LOW);
digitalWrite(MotorDerechoD, LOW);
}

void girarDerecha() {
digitalWrite(MotorIzquierdoA, HIGH);
digitalWrite(MotorIzquierdoB, LOW);
digitalWrite(MotorDerechoC, LOW);
digitalWrite(MotorDerechoD, LOW);
}

void girarIzquierda() {
digitalWrite(MotorIzquierdoA, LOW);
digitalWrite(MotorIzquierdoB, LOW);
digitalWrite(MotorDerechoC, LOW);
digitalWrite(MotorDerechoD, HIGH);
}

void avanzarCarro() {
digitalWrite(MotorIzquierdoA, HIGH);
digitalWrite(MotorIzquierdoB, LOW);
digitalWrite(MotorDerechoC, LOW);
digitalWrite(MotorDerechoD, HIGH);
}

void retrocederCarro() {
digitalWrite(MotorIzquierdoA, LOW);
digitalWrite(MotorIzquierdoB, HIGH);
digitalWrite(MotorDerechoC, HIGH);
digitalWrite(MotorDerechoD, LOW);
}

void avanzarIzquierda() {
analogWrite(VelocidadMotorDerecho, velocidadMotor + 60);
avanzarCarro();
delay(20);
analogWrite(VelocidadMotorDerecho, velocidadMotor);
}

void avanzarDerecha() {
analogWrite(VelocidadMotorIzquierdo, velocidadMotor + 60);
avanzarCarro();
delay(20);
analogWrite(VelocidadMotorIzquierdo, velocidadMotor);
}

void retrocederIzquierda() {
analogWrite(VelocidadMotorDerecho, velocidadMotor + 60);
retrocederCarro();
delay(20);
analogWrite(VelocidadMotorDerecho, velocidadMotor);
}

void retrocederDerecha() {
analogWrite(VelocidadMotorIzquierdo, velocidadMotor + 60);
retrocederCarro();
delay(20);
analogWrite(VelocidadMotorIzquierdo, velocidadMotor);
}

También podría gustarte