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

/media/uploads/edamame22/img_5218.jpg

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

/media/uploads/edamame22/serial_port_setup.png /media/uploads/edamame22/terminal_setup.png

Measured Data Output

/media/uploads/edamame22/data_output_2.png

Revision:
2:d022d883a31f
Parent:
0:a9aeed8cd62e
Child:
3:d119901a65bd
--- a/Source/main.cpp	Mon Feb 18 16:46:05 2019 +0900
+++ b/Source/main.cpp	Tue Feb 19 16:08:49 2019 +0900
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
+#include "mbed.h"
 #include "BM1383AGLV.h"
 #include "BM1422AGMV.h"
 #include "KX224.h"
@@ -22,24 +22,20 @@
 #include "rohm-rpr0521/rohm-rpr0521/rpr0521_driver.h"
 #include "rohm-sensor-hal/rohm-sensor-hal/I2CCommon.h"
 
-
-
-void clearFlo(float * data, int length);
-void clearUint(uint16_t * data, int length);
-BM1383AGLV _bm1383aglv(I2C_SDA, I2C_SCL);
-BM1422AGMV _bm1422agmv(I2C_SDA, I2C_SCL);
-KX224 _kx224_1053(I2C_SDA, I2C_SCL);
+BM1383AGLV bm1383aglv(I2C_SDA, I2C_SCL);
+BM1422AGMV bm1422agmv(I2C_SDA, I2C_SCL);
+KX224 kx224_1053(I2C_SDA, I2C_SCL);
 RegisterWriter i2c_rw_bh(I2C_SDA, I2C_SCL);
-BH1790GLC _bh1790glc(i2c_rw_bh);
-AnalogIn _bd1020hfv(A2);
+BH1790GLC bh1790glc(i2c_rw_bh);
+AnalogIn bd1020hfv(A2);
 
 Serial pc(USBTX, USBRX);
 
 int main() {
-	float axis_ac[3], temp1_bd1020hfv, temp2_bd1020hfv ;
-	bool err_rpr0521;
-	int err_bh1790, err_KX224;
-	uint16_t _bh1790[2], _rpr0521[3];
+    float axis_ac[3], temp1_bd1020hfv, temp2_bd1020hfv ;
+    bool err_rpr0521;
+    int err_bh1790, err_KX224;
+    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\n");
@@ -49,13 +45,13 @@
     pc.printf("\r      - RPR-0521RS: Light & Proximity Sensor\n");
     pc.printf("\r      - BD1020HFV:  Temperature Sensor, Formula values should be calibrated before use.\n");
     //init KX224-1053
-    err_KX224=_kx224_1053.initialize();
+    err_KX224=kx224_1053.initialize();
     if (err_KX224!=0){
-      pc.printf("\r\n_kx224_1053  :   Failed initialization \r\n");
+        pc.printf("\r\nkx224_1053  :   Failed initialization \r\n");
     }
 
     do{ //init BH1790GLC
-    	err_bh1790 = _bh1790glc.set_default_on();
+        err_bh1790 = bh1790glc.set_default_on();
         wait_ms(300);
     } while (err_bh1790);
 
@@ -66,61 +62,36 @@
     rpr0521_initial_setup();
 
     while(1) {
-    	pc.printf("\r++++++++++++++++++\r");
-         pc.printf("\r\n_bm1383aglv  :   pressure=%7.2f,  temperature=%5.3f\r\n", _bm1383aglv.getPressure(), _bm1383aglv.getTemperature());
-         clearFlo(&axis_ac[0],3);
-         _bm1422agmv.get_val(&axis_ac[0]);
-         pc.printf("\r\n_bm1422agmv  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\n\r", axis_ac[0], axis_ac[1], axis_ac[2]);
-         clearFlo(&axis_ac[0],3);
-         _kx224_1053.get_val(&axis_ac[0]);
-       	 pc.printf("\r\n_kx224_1053  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\n\r", axis_ac[0], axis_ac[1], axis_ac[2]);
-         clearUint(&_bh1790[0], 2);
-         err_bh1790 = _bh1790glc.getresults(&_bh1790[0]);
-         if(err_bh1790) {
-        	 pc.printf("\r\nBH1790GLC    :   Failed reading value from BH1790GLC\r\n");
-         } else
-         {
-        	 pc.printf("\r\nBH1790GLC    :   value= %d, \t%d\n\r", _bh1790[1], _bh1790[0]);
-         }
-         clearUint(&_rpr0521[0], 3);
-         err_rpr0521 = rpr0521_read_data(&_rpr0521[0]);
-         if(err_rpr0521) {
-        	 pc.printf("\r\nRPR-0521RS   :   Failed reading value from RPR-0521RS\r\n");
-         } else
-         {
-        	 pc.printf("\r\nRPR-0521RS   :   PS= %4u,    Als0= %4u,    Als1= %4u\r\n", _rpr0521[0], _rpr0521[1], _rpr0521[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 * (_bd1020hfv * 3.3f) - 1546) / 8.2;
-         temp2_bd1020hfv = 192 - ( _bd1020hfv * 3.3f / 0.008060 );
-         pc.printf("\r\nBD1020HFV    :   formula1= %5.3f,     formula2= %5.3f\r\n", temp1_bd1020hfv, temp2_bd1020hfv);
-         wait(3);
+        pc.printf("\r++++++++++++++++++\r");
+        pc.printf("\r\nbm1383aglv  :   pressure=%7.2f,  temperature=%5.3f\r\n", bm1383aglv.getPressure(), bm1383aglv.getTemperature());
+        memset(&axis_ac[0], 0, sizeof(axis_ac));
+        bm1422agmv.get_val(&axis_ac[0]);
+        pc.printf("\r\nbm1422agmv  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\n\r", axis_ac[0], axis_ac[1], axis_ac[2]);
+        memset(&axis_ac[0], 0, sizeof(axis_ac));
+        kx224_1053.get_val(&axis_ac[0]);
+       	pc.printf("\r\nkx224_1053  :   X=%7.2f,    Y=%7.2f,    Z=%7.2f\n\r", axis_ac[0], axis_ac[1], axis_ac[2]);
+       	memset(&bh1790_data[0], 0, sizeof(bh1790_data));
+        err_bh1790 = bh1790glc.getresults(&bh1790_data[0]);
+        if(err_bh1790) {
+            pc.printf("\r\nBH1790GLC   :   Failed reading value from BH1790GLC\r\n");
+        } else {
+            pc.printf("\r\nBH1790GLC   :   value= %d, \t%d\n\r", bh1790_data[1], bh1790_data[0]);
+        }
+        memset(&rpr0521_data[0], 0, sizeof(rpr0521_data));
+        err_rpr0521 = rpr0521_read_data(&rpr0521_data[0]);
+        if(err_rpr0521) {
+            pc.printf("\r\nRPR-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]);
+        }
+        //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 * (bd1020hfv * 3.3f) - 1546) / 8.2;
+        temp2_bd1020hfv = 192 - ( bd1020hfv * 3.3f / 0.008060 );
+        pc.printf("\r\nBD1020HFV   :   formula1= %5.3f,     formula2= %5.3f\r\n", temp1_bd1020hfv, temp2_bd1020hfv);
+        wait(3);
     }
 }
-
-void clearFlo(float * data, int length)
-{
-	if(data==NULL) {
-		pc.printf("\r\nFailed in clearFlo, data ptr is NULL!!\r\n");
-	}else
-	{
-		for(int i=0; i<length; i++)
-			*(data+i) = 0.0f;
-	}
-}
-
-void clearUint(uint16_t * data, int length)
-{
-	if(data==NULL) {
-		pc.printf("\r\nFailed in clearUint, data ptr is NULL!!\r\n");
-	}else
-	{
-		for(int i=0; i<length; i++)
-			*(data+i) = 0;
-	}
-}
-