Skip to content

7 Control mediante Bluetooth

Pedro Ruiz edited this page Jun 22, 2019 · 1 revision

7 - Control mediante Bluetooth

Escornabot en su versión con cpu 2.12 tiene la posibilidad de comunicarse por bluetooth. Para ello se ha diseñado un procedimiento para capturar un carácter enviado desde un dispositivo móvil, y en función del mismo podemos decirle a nuestro escornabot la función a realizar. El procedimiento es el siguiente:

  • objetoEscornabot.blueT(): devuelve el valor numérico correspondiente a el carácter enviado por bluetooth a escornabot.

En nuestro caso hemos diseñado un programa (ejemplo 4a) que en función del carácter enviado desde la aplicación “Arduino Bluetooth controller” realizamos una acción u otra. Si se envía el carácter:

  • ‘A’: se mueve hacia delante (avanza).
  • ‘R’: se mueve hacia atrás (retrocede).
  • ‘D’: gira hacia la derecha.
  • ‘I’: gira hacia la izquierda.
  • ‘C’: gira sobre si mismo.
  • ‘5’: activa o desactiva el zumbador. Según su estado anterior.
#include <escornabot.h>

escornabot mirobot;
boolean buzz = false;

void setup() {
  Serial.begin (9600);
}

void loop() {
  //prueba de librería

  if (mirobot.blueT() == 'A') {
    mirobot.driveD (10, 15);
  }
  else if (mirobot.blueT() == 'R') {
    mirobot.driveD (-10, 15);
  }
  else if (mirobot.blueT() == 'D') {
    mirobot.turnA (45, 15);
  }
  else if (mirobot.blueT() == 'I') {
    mirobot.turnA (-45, 15);
  }
  else if (mirobot.blueT() == 'C') {
    mirobot.turnA (360, 15);
  }
  else if (mirobot.blueT() == '5') {
    buzz = ¡buzz;
    if (buzz == true) {
      mirobot.buzzON();
    }
    else {
      mirobot.buzzOFF();
    }
  }
}

En este segundo caso hemos diseñado un programa (ejemplo 4b) que en función del carácter enviado desde la aplicación “Arduino Bluetooth controller” realizamos una acción u otra. Si se envía el carácter:

  • ‘A’: se mueve hacia delante (avanza).
  • ‘R’: se mueve hacia atrás (retrocede).
  • ‘D’: gira hacia la derecha.
  • ‘I’: gira hacia la izquierda.
  • ‘1’: enciende o apaga el led 1 (delantero), en función de como estuviese anteriormente.
  • ‘2’: enciende o apaga el led 2 (izquierda), en función de como estuviese anteriormente.
  • ‘3’: enciende o apaga el led 3 (trasero), en función de como estuviese anteriormente.
  • ‘4’: enciende o apaga el led 4 (derecha), en función de como estuviese anteriormente.
  • ‘5’: enciende o apaga el zumbador, en función de como estuviese anteriormente.
#include <escornabot.h>

escornabot mirobot;
boolean led1 = false;
boolean led2 = false;
boolean led3 = false;
boolean led4 = false;
boolean buzz = false;

void setup() {
  Serial.begin (9600);
}

void loop() {
  //prueba de librería

    switch (mirobot.blueT()) {//en función del caracter emitido por bluetooth hace varias acciones
    case 'A':
      mirobot.drive (0.25, 12);
      break;
    case 'R':
      mirobot.drive (-0.25, 12);
      break;
    case 'D':
      mirobot.turn (0.125, 12);
      break;
    case 'I':
      mirobot.turn (-0.125, 12);
      break;
    case '1':
      /*led1 = !led1;
      if (led1) {
        mirobot.ledON(forward);
      }
      else {
        mirobot.ledOFF(forward);
      }*/
      invierteLed(forward);
      break;
    case '2':
      led2 = !led2;
      if (led2) {
        mirobot.ledON(left);
      }
      else {
        mirobot.ledOFF(left);
      }
      break;
    case '3':
      led3 = !led3;
      if (led3) {
        mirobot.ledON(backward);
      }
      else {
        mirobot.ledOFF(backward);
      }
      break;
    case '4':
      led4 = !led4;
      if (led4) {
        mirobot.ledON(right);
      }
      else {
        mirobot.ledOFF(right);
      }
      break;
    case '5':
      buzz = !buzz;
      if (buzz) {
        mirobot.buzzON();
      }
      else {
        mirobot.buzzOFF();
      }
      break;
      //default:
      // statements
  }

}

void invierteLed(int i){
  if (mirobot.ledState(i)) {
    mirobot.ledOFF(i);
  } else {
    mirobot.ledON(i);
  }
}

Previamente en la aplicación “Arduino bluetooth controller” tenemos que editar el carácter que enviará cada botón, esto lo hacemos en la configuración de la aplicación.