Files
2020-07-08 13:38:02 +08:00

106 lines
2.8 KiB
C++

#include "config.h"
TTGOClass *watch;
TFT_eSPI *tft;
BMA *sensor;
void setup()
{
Serial.begin(115200);
// Get TTGOClass instance
watch = TTGOClass::getWatch();
// Initialize the hardware, the BMA423 sensor has been initialized internally
watch->begin();
// Turn on the backlight
watch->openBL();
//Receive objects for easy writing
tft = watch->tft;
sensor = watch->bma;
// Accel parameter structure
Acfg cfg;
/*!
Output data rate in Hz, Optional parameters:
- BMA4_OUTPUT_DATA_RATE_0_78HZ
- BMA4_OUTPUT_DATA_RATE_1_56HZ
- BMA4_OUTPUT_DATA_RATE_3_12HZ
- BMA4_OUTPUT_DATA_RATE_6_25HZ
- BMA4_OUTPUT_DATA_RATE_12_5HZ
- BMA4_OUTPUT_DATA_RATE_25HZ
- BMA4_OUTPUT_DATA_RATE_50HZ
- BMA4_OUTPUT_DATA_RATE_100HZ
- BMA4_OUTPUT_DATA_RATE_200HZ
- BMA4_OUTPUT_DATA_RATE_400HZ
- BMA4_OUTPUT_DATA_RATE_800HZ
- BMA4_OUTPUT_DATA_RATE_1600HZ
*/
cfg.odr = BMA4_OUTPUT_DATA_RATE_100HZ;
/*!
G-range, Optional parameters:
- BMA4_ACCEL_RANGE_2G
- BMA4_ACCEL_RANGE_4G
- BMA4_ACCEL_RANGE_8G
- BMA4_ACCEL_RANGE_16G
*/
cfg.range = BMA4_ACCEL_RANGE_2G;
/*!
Bandwidth parameter, determines filter configuration, Optional parameters:
- BMA4_ACCEL_OSR4_AVG1
- BMA4_ACCEL_OSR2_AVG2
- BMA4_ACCEL_NORMAL_AVG4
- BMA4_ACCEL_CIC_AVG8
- BMA4_ACCEL_RES_AVG16
- BMA4_ACCEL_RES_AVG32
- BMA4_ACCEL_RES_AVG64
- BMA4_ACCEL_RES_AVG128
*/
cfg.bandwidth = BMA4_ACCEL_NORMAL_AVG4;
/*! Filter performance mode , Optional parameters:
- BMA4_CIC_AVG_MODE
- BMA4_CONTINUOUS_MODE
*/
cfg.perf_mode = BMA4_CONTINUOUS_MODE;
// Configure the BMA423 accelerometer
sensor->accelConfig(cfg);
// Enable BMA423 accelerometer
sensor->enableAccel();
// You can also turn it off
// sensor->disableAccel();
// Some display settings
tft->setTextColor(random(0xFFFF));
tft->drawString("BMA423 accel", 25, 50, 4);
tft->setTextFont(4);
tft->setTextColor(TFT_WHITE, TFT_BLACK);
}
void loop()
{
Accel acc;
// Get acceleration data
bool res = sensor->getAccel(acc);
if (res == false) {
Serial.println("getAccel FAIL");
} else {
// Show the data
tft->fillRect(98, 100, 70, 85, TFT_BLACK);
tft->setCursor(80, 100);
tft->print("X:"); tft->println(acc.x);
tft->setCursor(80, 130);
tft->print("Y:"); tft->println(acc.y);
tft->setCursor(80, 160);
tft->print("Z:"); tft->println(acc.z);
}
delay(100);
}