El monitor serie controla Arduino Motor Shield; ¿Por qué Bluetooth no lo hizo?

0

Tengo Arduino Mega 2560, Ladyada Motor Shield v1.0, el módulo Bluetooth HC-07 y la aplicación de terminal Bluetooth para Android. Combiné Motor Shield en Arduino Mega. Obtengo el punto M + (5V) / GND para ejecutar mi módulo Bluetooth HC-07 para proporcionar energía. RxD de Bluetooth = Tx1 de Arduino (18. Pin), y TxD de Bluetooth = Rx1 de Arduino (19. Pin). Conecté Arduino Mega a la PC a través del cable USB para dar energía. Hay un motor de CC conectado en el lado M1 del Motor Shield.

La conexión de mi Bluetooth, la conexión de mi Arduino y la aplicación de Android están listas para usar. Pero, solo controlo mi motor de CC desde el "Monitor Serial" de mi PC. Aunque, quiero controlar a través de Bluetooth, solo pude controlar a través de PC. ¿Dónde estoy fallando?

Mi código de Arduino es:

#include <AFMotor.h>
#include <SoftwareSerial.h>  
SoftwareSerial bluetooth(19, 18);

char val;  // Variable to receive data from the serial port
// DC motor on M1
AF_DCMotor motor(1);
// DC motor on M2
AF_DCMotor motor2(2);
int i;
void setup() {
  Serial.begin(115200);   
  bluetooth.begin(115200);  
  // turn on motor #1
  motor.setSpeed(200);
  motor.run(RELEASE);
  // turn on motor #2
  motor2.setSpeed(200);
  motor2.run(RELEASE);
}
// Move FORWARD
void go_forward(){
  motor.run(FORWARD);
  motor2.run(FORWARD);
 for (i=0; i<255; i++) {
    motor.setSpeed(i);
    motor2.setSpeed(i);  
  }
}
// Move REVERSE
void go_reverse(){

  motor.run(BACKWARD);
  motor2.run(BACKWARD);

  for (i=0; i<255; i++) {
    motor.setSpeed(i); 
    motor2.setSpeed(i);
   }
  }
// Move LEFT
void stop_go_forward(){
 motor.run(RELEASE);
motor2.run(RELEASE); 
}
void go_left(){

  motor.run(FORWARD);
  for (i=0; i<255; i++) {
    motor.setSpeed(i); 
   }
  }
  // Move RIGHT
void go_right(){

  motor2.run(FORWARD);
  for (i=0; i<255; i++) {
    motor2.setSpeed(i);
   }
  } 

// Read serial port and perform command
void performCommand() {
  if (Serial.available()) {
    val = Serial.read();
     }

  //Bluetooth kontrol kısmı
   if(bluetooth.available()) {
    val = (bluetooth.read());
Serial.print(val);
  }
     if (val == '1') { // Forward
      go_forward();
    } else if (val == '2') { // Reverse
      go_reverse();
    } else if (val == '3') { // Stop Forward
      stop_go_forward();
    } else if (val == '4') { // Right
      go_right();
    } else if (val == '5') { // Left
      go_left();
    }
}
void loop() {
  performCommand();
}

/* KOMUTLAR 
  1  -  ileri
  2  -  geri
  4  -  sağ
  5  -  sol
  3  -  dur
*/
    
pregunta Bay

1 respuesta

1

El problema habitual que tengo con estos dongles bluetooth es configurarlos a la misma velocidad de transmisión y el encuadre que utiliza mi Arduino. ¿Se puede cargar un programa Hello simple y luego, con el dongle conectado a los pines serie del hardware, poder leer lo que transmite? Una vez que funcione de esa manera, intente que funcione en la serie del software.

Una peculiaridad de estos dispositivos es que no hay manera de restablecerlo a un estado conocido; se reactiva configurado como lo dejaste por última vez. Y, por supuesto, nunca recuerdo cómo lo usé por última vez. :( Virtuabotix, un proveedor de estos dispositivos, tiene un programa para configurarlo probando todas las velocidades en baudios hasta que obtenga una respuesta reconocible, y luego configurándolo según su elección de velocidad en baudios y PIN (para el emparejamiento). Puede que tengas que extender su mesa de baudios; solo va a 57600 baudios.

    
respondido por el JRobert

Lea otras preguntas en las etiquetas