An example program for Rohm SensorShield-EVK-001 running with Mbed OS 5.
Dependencies: BM1422AGMV rohm-rpr0521 rohm-sensor-hal rohm-bh1790glc-driver BH1749NUC KX224-1053 BM1383AGLV RegisterWriter
Getting Started with Rohm SensorShield-EVK-001
This example demonstrates how to use the SensorShield-EVK-001 component with multiple sensors. those measured values, which received through a serial connection from a mbed board, are printed out in a terminal software window.
Setup
The SensorShield-EVK-001 is plugged on top of a mbed board and a serial connection should be set up between the mbed board and PC with the following parameters:
- baud rate: 115200
- data: 8 bit
- parity: none
- stop: 1bit
- flow control: none
Terminal parameters
Measured Data Output
Diff: Source/main.cpp
- Revision:
- 5:f0dac0711070
- Parent:
- 4:e1f9ba2da8af
- Child:
- 6:b38a0cbc1b3f
--- a/Source/main.cpp Fri Feb 22 11:45:06 2019 +0900 +++ b/Source/main.cpp Wed Feb 27 04:43:57 2019 +0000 @@ -1,4 +1,4 @@ -/* Rohm SensorShield-EVK-xxx Example +/* Rohm SensorShield-EVK-001 Example * Copyright (c) 2019 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -22,92 +22,88 @@ #include "rohm-rpr0521/rohm-rpr0521/rpr0521.h" #include "rohm-rpr0521/rohm-rpr0521/rpr0521_driver.h" #include "rohm-sensor-hal/rohm-sensor-hal/I2CCommon.h" +#include "rohm-bh1790glc-driver/bh1790glc.h" + +BM1383AGLV pressure(I2C_SDA, I2C_SCL); +BM1422AGMV magnetometer(I2C_SDA, I2C_SCL); +KX224 accelerometer(I2C_SDA, I2C_SCL); #if BH1790GLC_CONNECTED == 1 -#include "rohm-bh1790glc-driver/bh1790glc.h" +RegisterWriter i2c_rw_bh(I2C_SDA, I2C_SCL); +BH1790GLC heartrate(i2c_rw_bh); #endif -BM1383AGLV Pressure(I2C_SDA, I2C_SCL); -BM1422AGMV Magnetometer(I2C_SDA, I2C_SCL); -KX224 Accelerometer(I2C_SDA, I2C_SCL); -#if BH1790GLC_CONNECTED == 1 -RegisterWriter i2c_rw_bh(I2C_SDA, I2C_SCL); -BH1790GLC HeartRate(i2c_rw_bh); -#endif #ifdef TARGET_K66F #warning A2 pin is disabled on THIS BOARD, please use A0 pin for BD1020HFV!! #endif -AnalogIn Temperature(A0); - - -Serial pc(USBTX, USBRX); +AnalogIn temperature(A0); // BD1020HFV int main() { float axis_ac[3], temp1_bd1020hfv, temp2_bd1020hfv ; bool err_rpr0521; - int err_bh1790, err_KX224; + int ret; uint16_t bh1790_data[2], rpr0521_data[3]; - pc.printf("\r\nExample program for using following Rohm sensor libraries\r\n"); - pc.printf("\n - BM1383AGLV: Pressure/Temperature sensor\r\n"); - pc.printf("\r - BM1422AGMV: 3 axis magnetic sensor\r\n"); - pc.printf("\r - KX224-1053: 3 axis accelerometer\r\n"); + printf("\r\nExample program for using following Rohm sensor libraries\r\n"); + printf(" - BM1383AGLV: Pressure/Temperature sensor\r\n"); + printf(" - BM1422AGMV: 3 axis magnetic sensor\r\n"); + printf(" - KX224-1053: 3 axis accelerometer\r\n"); #if BH1790GLC_CONNECTED == 1 - pc.printf("\r - BH1790GLC: optical sensor for heart rate monitor\r\n"); + printf(" - BH1790GLC: optical sensor for heart rate monitor\r\n"); #endif - pc.printf("\r - RPR-0521RS: Light & Proximity Sensor\r\n"); - pc.printf("\r - BD1020HFV: Temperature Sensor, Formula values should be calibrated before use.\r\n"); + printf(" - RPR-0521RS: Light & Proximity Sensor\r\n"); + printf(" - BD1020HFV: Temperature Sensor, Formula values should be calibrated before use.\r\n"); //init KX224-1053 - err_KX224=Accelerometer.initialize(); - if (err_KX224!=0){ - pc.printf("\r\nKX224-1053 : Failed initialization \n"); + ret = accelerometer.initialize(); + if (ret != 0) { + printf("\r\nKX224-1053 : Failed initialization \n"); } #if BH1790GLC_CONNECTED == 1 - do{ //init BH1790GLC - err_bh1790 = HeartRate.set_default_on(); + do { //init BH1790GLC + ret = heartrate.set_default_on(); wait_ms(300); - } while (err_bh1790); + } while (ret); #endif //init RPR-0521RS I2CCommonBegin(); rpr0521_wait_until_found(); - pc.printf("\nRPR-0521RS Sensor found.\r\n"); + printf("\nRPR-0521RS Sensor found.\r\n"); rpr0521_initial_setup(); - while(1) { - pc.printf("\r++++++++++++++++++\r"); - pc.printf("\r\nBM1383AGLV : pressure=%7.2f, temperature=%5.3f\r\n", Pressure.getPressure(), Pressure.getTemperature()); - Magnetometer.get_val(&axis_ac[0]); - pc.printf("\r\nBM1422AGMV : X=%7.2f, Y=%7.2f, Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]); - Accelerometer.get_val(&axis_ac[0]); - pc.printf("\r\nKX224-1053 : X=%7.2f, Y=%7.2f, Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]); + while (1) { + printf("\r++++++++++++++++++\r"); + printf("BM1383AGLV : pressure=%7.2f, temperature=%5.3f\r\n", pressure.getPressure(), pressure.getTemperature()); + magnetometer.get_val(&axis_ac[0]); + printf("BM1422AGMV : X=%7.2f, Y=%7.2f, Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]); + accelerometer.get_val(&axis_ac[0]); + printf("KX224-1053 : X=%7.2f, Y=%7.2f, Z=%7.2f\r\n", axis_ac[0], axis_ac[1], axis_ac[2]); #if BH1790GLC_CONNECTED == 1 - err_bh1790 = HeartRate.getresults(&bh1790_data[0]); - if(err_bh1790) { - pc.printf("\r\nBH1790GLC : Failed reading value from BH1790GLC\r\n"); + ret = heartrate.getresults(&bh1790_data[0]); + if (ret) { + printf("BH1790GLC : Failed reading value from BH1790GLC\r\n"); } else { - pc.printf("\r\nBH1790GLC : value= %d, \t%d\n\r", bh1790_data[1], bh1790_data[0]); + printf("BH1790GLC : value= %d, \t%d\n\r", bh1790_data[1], bh1790_data[0]); } #endif err_rpr0521 = rpr0521_read_data(&rpr0521_data[0]); - if(err_rpr0521) { - pc.printf("\r\nRPR-0521RS : Failed reading value from RPR-0521RS\r\n"); + if (err_rpr0521) { + printf("RPR-0521RS : Failed reading value from RPR-0521RS\r\n"); } else { - pc.printf("\r\nRPR-0521RS : PS= %4u, Als0= %4u, Als1= %4u\r\n", rpr0521_data[0], rpr0521_data[1], rpr0521_data[2]); + printf("RPR-0521RS : PS= %4u, Als0= %4u, Als1= %4u\r\n", rpr0521_data[0], rpr0521_data[1], rpr0521_data[2]); } - //Input voltage 0-3.3V == 0.0-1.0f - //-40'C == 1.87V - // 0'C == 1.546V - //192'C == 0V (out of scale) - //1.87V / 232'C = 0.008060V/'C - temp1_bd1020hfv = -(1000 * (Temperature * 3.3f) - 1546) / 8.2; - temp2_bd1020hfv = 192 - ( Temperature * 3.3f / 0.008060 ); - pc.printf("\r\nBD1020HFV : formula1= %5.3f, formula2= %5.3f\r\n", temp1_bd1020hfv, temp2_bd1020hfv); + // Input voltage 0-3.3V == 0.0-1.0f + // -40'C == 1.87V + // 0'C == 1.546V + // 192'C == 0V (out of scale) + // 1.87V / 232'C = 0.008060V/'C + temp1_bd1020hfv = -(1000 * (temperature * 3.3f) - 1546) / 8.2; + temp2_bd1020hfv = 192 - ( temperature * 3.3f / 0.008060 ); + printf("BD1020HFV : formula1= %5.3f, formula2= %5.3f\r\n", temp1_bd1020hfv, temp2_bd1020hfv); wait(3); } }