Example application how to use some of the sensors based on Hani-IoT board. Using TMP06 sensor for temperature, FXPQ3115 for air pressure and ADXL345 for acceleration.
Dependencies: TMP06 FXPQ3115 ADXL345_I2C
main.cpp
- Committer:
- Pawel Zarembski
- Date:
- 2020-03-17
- Revision:
- 2:a08feb9db81b
- Parent:
- 0:01fccb06cd7c
File content as of revision 2:a08feb9db81b:
#include "mbed.h" #include <ADXL345_I2C.h> #include <TMP06.h> #include <FXPQ3115.h> #define LOW 0 #define HIGH 1 #define SUCCESS 0 #define ERROR 1 // Accelerometer ADXL345_I2C acc_sensor(P0_13, P0_14); // I2C_0 pins DigitalOut cs_pin(P0_21); // Need to be high during communication // Temperature TMP06 temp_sensor(P0_1); float temperature; // Pressure FXPQ3115 pres_sensor(P0_13, P0_14); /* Accelerometer methods */ int setup_i2c_acc() { cs_pin = HIGH; printf("Device ID is: 0x%02x\n", acc_sensor.getDeviceID()); thread_sleep_for(10); if (acc_sensor.setPowerControl(0x00)) { printf("didn't intitialize power control\n"); return ERROR; } thread_sleep_for(10); // Full resolution, +/-16g, 4mg/LSB if(acc_sensor.setDataFormatControl(0x0B)){ printf("didn't set data format\n"); return ERROR; } thread_sleep_for(10); // 3.2kHz data rate if(acc_sensor.setDataRate(ADXL345_3200HZ)){ printf("didn't set data rate\n"); return ERROR; } thread_sleep_for(10); // Measurement mode if(acc_sensor.setPowerControl(MeasurementMode)) { printf("didn't set the power control to measurement\n"); return ERROR; } thread_sleep_for(10); cs_pin = LOW; return SUCCESS; } void i2c_acc_print_xyz(void) { int readings[3] = {0, 0, 0}; cs_pin = HIGH; acc_sensor.getOutput(readings); cs_pin = LOW; printf("Accelerometer: x:%.02f y:%.02f z:%.02f\r\n", (int16_t)readings[0]*0.004, (int16_t)readings[1]*0.004, (int16_t)readings[2]*0.004); } int main() { if (setup_i2c_acc() != SUCCESS) { printf("Error while initializing accelerometer\r\n"); return ERROR; } if (pres_sensor.sensor_init() == SUCCESS) { printf("Pressure sensor is up!\r\n"); } else { printf("Error while initializing barometer\r\n"); return ERROR; } while (true) { /* Read Accelerometer */ i2c_acc_print_xyz(); /* Read Temperature */ if (temp_sensor.read(&temperature) == SUCCESS) { printf("Temperature: %.01f C\n", temperature); } /* Read Pressure */ if (pres_sensor.read_oneshotMode_bar() == SUCCESS) { printf("Pressure in Pascals: %d hPa\n", pres_sensor.print_pressure()/100); } printf("\n"); thread_sleep_for(5000); } }