Código de exemplo para o Joystick Bluetooth 2.1

Código fonte de exemplo para utilizar o Joystick Bluetooth com o módulo bluetooth HC-05 e com o Arduino




/* ***************************************************************************
  Joystick Bluetooth - Código de exemplo para arduino
  Autor: Marcelo Borges dos Santos
  e-mail: mbsborges@gmail.com
  blog: http://mbsborges.blogspot.com.br

  Ultima alteração: 12 de maio de 2015 às 15:08
******************************************************************************/
//Biblioteca
#include <SoftwareSerial.h>
//Pinos para a virtual serial (RX, TX)
SoftwareSerial Bluetooth(2, 3);
//Saída PWM
int dimmer = 5;
//Pino para leitura da tensão da bateria
int bateria = A0;
//String para armazenar a leitura dos dados
String readString = "";
//variável para receber os caracteres vindos da serial
byte byteRead;

void setup() {
  Bluetooth.begin(9600);
  Serial.begin(9600);
  //Pino de saída
  pinMode(dimmer, OUTPUT);
  //Mensagem de inicialização
  Serial.println("Mbsborges - Joystick Bluetooth");
  Serial.println("http://mbsborges.blogspot.com.br/");
}

void loop() {
  //Verificando se tem algum byte disponível na serial
  while (Bluetooth.available() > 0) {
    //lendo byte disponível
    byteRead = Bluetooth.read();
    //Verificando se é fim de linha
    if (byteRead == '\n') {
      Serial.println("\nOk!");
      //Imprimindo a mensagem completa
      Serial.println(readString);
      //Tratamento dos dados para a execução dos comandos recebidos
      tratamentoDados();
      //Limpando String de leitura
      readString = "";
    }
    else {
      //Covertendo os bytes recebidos em caracteres e os concatenando
      readString += char(byteRead);
      //Imprimindo caractere recebido
      Serial.print (char(byteRead));
    }
  }
}

void tratamentoDados() {
  if (readString.indexOf("level") == 0) {
    //teste com numeros randômicos
    //int randNumber = random(0, 101);
    //Coneversão da leitura da porta analógica A0 para valores dentro da escala de 0-100
    int randNumber = map(analogRead(bateria), 0, 1023, 0, 100);
    //exibição do valor a ser enviado para o aplicativo
    Serial.println(randNumber);
    //Enviando o valor para o aplicativo
    //Formato da mensagem: _bat=number=bat
    //number é um numero inteiro e varia de 0-100
    Bluetooth.print("_bat=" + String(randNumber) + "=bat");
  }
  if (readString.indexOf("slider=") == 0) {
    //Obter valor do slider
    readString = readString.substring(readString.indexOf("slider=") + 7, readString.indexOf("=slider"));
    //Imprimindo valor do slider
    Serial.println(readString);
    //Ajustando a intensidade do led de acordo com o valor lido do slider
    analogWrite(dimmer, map(readString.toInt(), 0, 100, 0, 255));
  }
  else if (readString.indexOf("up") == 0) {
    Serial.println("UP");
  }
  else if (readString.indexOf("down") == 0) {
    Serial.println("DOWN");
  }
  else if (readString.indexOf("left") == 0) {
    Serial.println("LEFT");
  }
  else if (readString.indexOf("right") == 0) {
    Serial.println("RIGHT");
  }
  else if (readString.indexOf("stop") == 0) {
    Serial.println("STOP");
  }
  else if (readString.indexOf("cmd1") == 0) {
    Serial.println("CMD1");
  }
  else if (readString.indexOf("cmd2") == 0) {
    Serial.println("CMD2");
  }
  else if (readString.indexOf("cmd3") == 0) {
    Serial.println("CMD3");
  }
  else if (readString.indexOf("cmd4") == 0) {
    Serial.println("CMD4");
  }
  else if (readString.indexOf("cmd5") == 0) {
    Serial.println("CMD5");
  }
  else if (readString.indexOf("cmd6") == 0) {
    Serial.println("CMD6");
  }
}

Comentários

  1. Sir can this app be used on servo motors? i have a project that needs to control camera panning/tilting using servos. I was wondering if this will work?
  2. sim, é possível. para utilizar apenas um slider para controlar a câmera usando pan/tilt você deve customizar o código fonte que vai ser enviado para seu arduino ou outro microcontrolador de sua preferência
    -----
    Yes, it is possible. To use only a slider to control the camera using pan / tilt you must customize the source code that will be sent to your arduino or other microcontroller of your preference
  3. sir this app cam be use to keymapping gamepad for a game like mobilelegendbangbang,
  4. @Akim m.a.t
    Hello, at this time it is not possible to use this application for Keymapping, this application is only intended for use in electronic projects

Archive

Formulário de contato

Enviar