#include <SoftwareSerial.h>
//Conectar el pin TX del modulo BT al pin 2
//y el pin RX del modulo BT al PIN 3
#define PINBTTX 2
#define PINBTRX 3
SoftwareSerial modulobt(PINBTTX, PINBTRX);
//Pines del modulo L298N
#define PINMOTOR1A 8
#define PINMOTOR1B 9
#define PINMOTOR2A 10
#define PINMOTOR2B 11
#define PINMOTOR1PWM 5
#define PINMOTOR2PWM 6
#define VELOCIDADMIN 0
#define VELOCIDADMAX 255
char BT = "S";
int velocidad = 255;
int selvelocidad = 10;
void setup() {
Serial.begin(9600);
modulobt.begin(9600);
pinMode(PINMOTOR1A, OUTPUT);
pinMode(PINMOTOR1B, OUTPUT);
pinMode(PINMOTOR2A, OUTPUT);
pinMode(PINMOTOR2B, OUTPUT);
pinMode(PINMOTOR1PWM, OUTPUT);
pinMode(PINMOTOR2PWM, OUTPUT);
analogWrite(PINMOTOR1PWM, 255);
analogWrite(PINMOTOR2PWM, 255);
frenar();
}
void loop() {
/*
if (Serial.available() > 0) {
BT = Serial.read();
}
*/
if (modulobt.available() > 0) {
BT = modulobt.read();
Serial.print("Comando Recibido: ");
Serial.println(BT);
}
switch (BT) {
case 'F':
acelerar();
break;
case 'B':
reversa();
break;
case 'L':
izquierda();
break;
case 'R':
derecha();
break;
case 'S':
frenar();
break;
case '0':
selvelocidad = 0;
ajustarvelocidad();
break;
case '1':
selvelocidad = 1;
ajustarvelocidad();
break;
case '2':
selvelocidad = 2;
ajustarvelocidad();
break;
case '3':
selvelocidad = 3;
ajustarvelocidad();
break;
case '4':
selvelocidad = 4;
ajustarvelocidad();
break;
case '5':
selvelocidad = 5;
ajustarvelocidad();
break;
case '6':
selvelocidad = 6;
ajustarvelocidad();
break;
case '7':
selvelocidad = 7;
ajustarvelocidad();
break;
case '8':
selvelocidad = 8;
ajustarvelocidad();
break;
case '9':
selvelocidad = 9;
ajustarvelocidad();
break;
case 'q':
selvelocidad = 10;
ajustarvelocidad();
break;
}
delay(100);
}
void acelerar() {
digitalWrite(PINMOTOR1A, HIGH);
digitalWrite(PINMOTOR1B, LOW);
digitalWrite(PINMOTOR2A, HIGH);
digitalWrite(PINMOTOR2B, LOW);
}
void reversa() {
digitalWrite(PINMOTOR1A, LOW);
digitalWrite(PINMOTOR1B, HIGH);
digitalWrite(PINMOTOR2A, LOW);
digitalWrite(PINMOTOR2B, HIGH);
}
void izquierda() {
digitalWrite(PINMOTOR1A, HIGH);
digitalWrite(PINMOTOR1B, LOW);
digitalWrite(PINMOTOR2A, LOW);
digitalWrite(PINMOTOR2B, HIGH);
}
void derecha() {
digitalWrite(PINMOTOR1A, LOW);
digitalWrite(PINMOTOR1B, HIGH);
digitalWrite(PINMOTOR2A, HIGH);
digitalWrite(PINMOTOR2B, LOW);
}
void frenar() {
digitalWrite(PINMOTOR1A, LOW);
digitalWrite(PINMOTOR1B, LOW);
digitalWrite(PINMOTOR2A, LOW);
digitalWrite(PINMOTOR2B, LOW);
}
void ajustarvelocidad() {
selvelocidad = constrain(selvelocidad, 0, 10);
velocidad = map(selvelocidad, 0, 10, VELOCIDADMIN, VELOCIDADMAX);
Serial.print("PWM a: ");
Serial.println(velocidad);
analogWrite(PINMOTOR1PWM, velocidad);
analogWrite(PINMOTOR2PWM, velocidad);
}