Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <Wire.h>
#include <Adafruit_MPL3115A2.h>
#include <bluefruit.h>
// BLE Service
BLEDis bledis;
BLEUart bleuart;
BLEBas blebas;
Adafruit_MPL3115A2 baro = Adafruit_MPL3115A2();
void setup(void) {
Serial.begin(115200);
delay(2000);
Serial.println(sizeof(float));
Serial.println("Hello!");
bleSetup();
if (! baro.begin()) {
Serial.println("Couldnt find sensor");
return;
}
}
void bleSetup() {
Bluefruit.configPrphBandwidth(BANDWIDTH_MAX);
Bluefruit.begin();
Bluefruit.setTxPower(4);
Bluefruit.setName("MPL3115A2");
Bluefruit.setConnectCallback(connect_callback);
Bluefruit.setDisconnectCallback(disconnect_callback);
bledis.setManufacturer("MIT Media Lab");
bledis.setModel("V2.0");
bledis.begin();
// Configure and Start BLE Uart Service
bleuart.begin();
Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addTxPower();
Bluefruit.Advertising.addService(bleuart);
Bluefruit.ScanResponse.addName();
Bluefruit.Advertising.restartOnDisconnect(true);
Bluefruit.Advertising.setInterval(32, 244);
Bluefruit.Advertising.setFastTimeout(30);
Bluefruit.Advertising.start(0);
}
void connect_callback(uint16_t conn_handle) {
char central_name[32] = { 0 };
Bluefruit.Gap.getPeerName(conn_handle, central_name, sizeof(central_name));
Serial.print("Connected to ");
Serial.println(central_name);
}
void disconnect_callback(uint16_t conn_handle, uint8_t reason) {
(void) conn_handle;
(void) reason;
Serial.println();
Serial.println("Disconnected");
}
float pascals, altm, tempC;
void sendData(){
int numVals = 3;
float vals[numVals];
vals[0] = pascals;
vals[1] = altm;
vals[2] = tempC;
int cnt = numVals * 4 ;
uint8_t buf[cnt];
for (int _i=0; _i<numVals; _i++)
memcpy(&buf[_i*sizeof(float)], &vals[_i], sizeof(float));
bleuart.write( buf, cnt );
}
void loop(void) {
pascals = baro.getPressure();
Serial.print(pascals/3377);
Serial.println(" Inches (Hg)");
altm = baro.getAltitude();
Serial.print(altm);
Serial.println(" meters");
tempC = baro.getTemperature();
Serial.print(tempC);
Serial.println("*C");
sendData();
delay(100);
}