// Definimos a las líneas a las que se encuentran
// conectados los puentes H
#define M1A 9
#define M1B 10
#define M1C 11
#define M1D 12
#define M2A 3
#define M2B 4
#define M2C 5
#define M2D 6
// Buffer para almacenar los textos de control
#define BUFFSIZE 255
void setup() {
//Configuramos todos los pines de control como output
pinMode(M1A, OUTPUT);
pinMode(M1B, OUTPUT);
pinMode(M1C, OUTPUT);
pinMode(M1D, OUTPUT);
pinMode(M2A, OUTPUT);
pinMode(M2B, OUTPUT);
pinMode(M2C, OUTPUT);
pinMode(M2D, OUTPUT);
// Iniciamos el serial al que está conectado el módulo bluetooth
Serial.begin(9600);
}
// FORWARD
void go_forward() {
digitalWrite(M1A,LOW);
digitalWrite(M1B,HIGH);
digitalWrite(M1C,HIGH);
digitalWrite(M1D,LOW);
}
// REVERSE
void go_reverse() {
digitalWrite(M1A,HIGH);
digitalWrite(M1B,LOW);
digitalWrite(M1C,LOW);
digitalWrite(M1D,HIGH);
}
// STOP
void stop_motor() {
digitalWrite(M1A,LOW);
digitalWrite(M1B,LOW);
digitalWrite(M1C,LOW);
digitalWrite(M1D,LOW);
}
// RIGHT
void turn_right() {
digitalWrite(M2A,HIGH);
digitalWrite(M2B,LOW);
digitalWrite(M2C,LOW);
digitalWrite(M2D,HIGH);
}
// LEFT
void turn_left() {
digitalWrite(M2A,LOW);
digitalWrite(M2B,HIGH);
digitalWrite(M2C,HIGH);
digitalWrite(M2D,LOW);
}
// CENTER
void center_wheels() {
digitalWrite(M2A,LOW);
digitalWrite(M2B,LOW);
digitalWrite(M2C,LOW);
digitalWrite(M2D,LOW);
}
//Código para manejo del buffer:
char buffer[BUFFSIZE];
int i = 0;
void flush_buffer() {
Serial.write((const uint8_t*)buffer,i);
for(int j=0;j<=i;j++) {
buffer[j] = 0;
}
i = 0;
}
void append_buffer(char c) {
if(i<BUFFSIZE) {
buffer[i++] = c;
} else {
flush_buffer();
}
}
//Código fuente del loop principal:
void loop() {
while(Serial.available()>0) {
char c = Serial.read();
append_buffer(c);
Serial.write(c);
if(c==\'\\r\'||c==\'\\n\') {
if(strstr(buffer,"FORWARD")!=0) {
go_forward();
}
if(strstr(buffer,"REVERSE")!=0) {
go_reverse();
}
if(strstr(buffer,"STOP")!=0) {
stop_motor();
}
if(strstr(buffer,"LEFT")!=0) {
turn_left();
}
if(strstr(buffer,"RIGHT")!=0) {
turn_right();
}
if(strstr(buffer,"CENTER")!=0) {
center_wheels();
}
flush_buffer();
Serial.write("\\r\\n");
}
}
}