This is the current code, it includes the other moduel that im connecting too but i only care about the bluetooth currently.
//BLE Libraries and Functions
#include <Arduino.h>
#include <SPI.h>
#include "Adafruit_BLE.h"
#include "Adafruit_BluefruitLE_SPI.h"
#include "Adafruit_BluefruitLE_UART.h"
#include "BluefruitConfig.h"
#define FACTORYRESET_ENABLE 1
#define MINIMUM_FIRMWARE_VERSION "0.6.6"
#define MODE_LED_BEHAVIOUR "MODE"
Adafruit_BluefruitLE_UART ble(Serial1, BLUEFRUIT_UART_MODE_PIN);
bool ble_connection_status = false;
void error(const __FlashStringHelper*err) {
Serial.println(err);
while (1);
}
//Gradient Libraries and Functions
#include<Wire.h>
const int MPU_addr=0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
int minVal=265;
int maxVal=402;
double x;
double y;
double z;
int count = 0;
void setup() {
Serial.begin(115200);
//BLE
Serial.println(F("Initialising the Bluefruit LE module: "));
if ( !ble.begin(VERBOSE_MODE) )
{
error(F("Couldn't find Bluefruit, make sure it's in CoMmanD mode & check wiring?"));
}
Serial.println( F("BLE Active. If using BLE please connect device.") );
Serial.println();
ble.verbose(false);
//Gradient
Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
}
bool getUserInput(char buffer[], uint8_t maxSize)
{
TimeoutTimer timeout(100);
memset(buffer, 0, maxSize);
while( (!Serial.available()) && !timeout.expired() ) { delay(1); }
if ( timeout.expired() ) return false;
delay(2);
uint8_t count=0;
do
{
count += Serial.readBytes(buffer+count, maxSize);
} while( (count < maxSize) && (Serial.available()) );
return true;
}
bool connection_status(){
if(ble.isConnected() && !ble_connection_status)
{
Serial.println("BLE Connected");
ble_connection_status = true;
}
if(!ble.isConnected() && ble_connection_status)
{
Serial.println("BLE Disconnected");
ble_connection_status = false;
}
}
void BLE_Comms(){
// Check for user input
char inputs[BUFSIZE+1];
if ( getUserInput(inputs, BUFSIZE) )
{
// Send characters to Bluefruit
Serial.print("[Send] ");
Serial.println(inputs);
ble.print("AT+BLEUARTTX=");
ble.println(inputs);
// check response stastus
if (! ble.waitForOK() ) {
Serial.println(F("Failed to send?"));
}
}
// Check for incoming characters from Bluefruit
ble.println("AT+BLEUARTRX");
ble.readline();
if (strcmp(ble.buffer, "OK") == 0) {
// no data
return;
}
// Some data was found, its in the buffer
Serial.println(ble.buffer);
ble.waitForOK();
}
void Gradient(){
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr,14,true);
AcX=Wire.read()<<8|Wire.read();
AcY=Wire.read()<<8|Wire.read();
AcZ=Wire.read()<<8|Wire.read();
Tmp = Wire.read()<<8 | Wire.read();
int xAng = map(AcX,minVal,maxVal,-90,90);
int yAng = map(AcY,minVal,maxVal,-90,90);
int zAng = map(AcZ,minVal,maxVal,-90,90);
x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI);
y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI);
z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI);
if(x > 90 & x < 270){
x = 0;
}
else if(x > 270){
x = 360 - x;
}
if(y > 90 & y < 270){
y = 0;
}
else if(y > 270){
y = -(360 - y);
}
byte Temperature = (((Tmp/340.00+50.53)*(9/5))+32);
byte X_BLE = x;
byte Y_BLE = y;
char inputs_2[BUFSIZE+1];
itoa(Temperature,inputs_2,10);
if(count == 10){
count = 0;
}
if(count == 0){
ble.print("AT+BLEUARTTX=");
ble.print("Temperature = ");
ble.println(Temperature);
ble.waitForOK();
delay(200);
}
ble.print("AT+BLEUARTTX=");
ble.print("X Angle = ");
ble.println(X_BLE);
ble.waitForOK();
delay(200);
ble.print("AT+BLEUARTTX=");
ble.print("Y Angle = ");
ble.println(Y_BLE);
ble.waitForOK();
delay(200);
count++;
}
void loop() {
connection_status();
Gradient();
BLE_Comms();
}