Demo application of reading 6 different sensors and outputting values on UART. This demo can be used with Rohm tileshield using tiles for BH1726, BD1020, RPR0521, BH1745, ML8511 and BD7411. Developed and tested using Renesas GR-Peach -board.

Dependencies:   rohm-bh1726 rohm-bh1745 rohm-rpr0521 rohm-sensor-hal

Fork of rohm-bd7411g-hello by Rohm

Committer:
MikkoZ
Date:
Tue Sep 20 12:11:45 2016 +0000
Revision:
13:69b1b8cadb78
Parent:
12:18c2160813c6
Initial version of 6sensor-demo.; ; Tested with GR-Peach and Rohm tileshield.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikkoZ 13:69b1b8cadb78 1 /* Copyright 2016 Rohm Semiconductor
MikkoZ 13:69b1b8cadb78 2
MikkoZ 13:69b1b8cadb78 3 Licensed under the Apache License, Version 2.0 (the "License");
MikkoZ 13:69b1b8cadb78 4 you may not use this file except in compliance with the License.
MikkoZ 13:69b1b8cadb78 5 You may obtain a copy of the License at
MikkoZ 13:69b1b8cadb78 6
MikkoZ 13:69b1b8cadb78 7 http://www.apache.org/licenses/LICENSE-2.0
Jonathan Austin 0:2757d7abb7d9 8
MikkoZ 13:69b1b8cadb78 9 Unless required by applicable law or agreed to in writing, software
MikkoZ 13:69b1b8cadb78 10 distributed under the License is distributed on an "AS IS" BASIS,
MikkoZ 13:69b1b8cadb78 11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
MikkoZ 13:69b1b8cadb78 12 See the License for the specific language governing permissions and
MikkoZ 13:69b1b8cadb78 13 limitations under the License.
MikkoZ 13:69b1b8cadb78 14 */
MikkoZ 13:69b1b8cadb78 15
MikkoZ 13:69b1b8cadb78 16 #include "rohm-sensor-hal/rohm-sensor-hal/rohm_hal.h" //mbed.h, types, DEBUG_print*
MikkoZ 13:69b1b8cadb78 17 #include "rohm-sensor-hal/rohm-sensor-hal/I2CCommon.h"
MikkoZ 13:69b1b8cadb78 18
MikkoZ 13:69b1b8cadb78 19 #include "rohm-bh1726/rohm-bh1726/bh1726_driver.h"
MikkoZ 13:69b1b8cadb78 20 #include "rohm-bh1726/rohm-bh1726/bh1726.h"
MikkoZ 13:69b1b8cadb78 21 #include "rohm-rpr0521/rohm-rpr0521/rpr0521_driver.h"
MikkoZ 13:69b1b8cadb78 22 #include "rohm-rpr0521/rohm-rpr0521/rpr0521.h"
MikkoZ 13:69b1b8cadb78 23 #include "rohm-bh1745/rohm-bh1745/bh1745_driver.h"
MikkoZ 13:69b1b8cadb78 24 #include "rohm-bh1745/rohm-bh1745/bh1745.h"
MikkoZ 13:69b1b8cadb78 25
MikkoZ 13:69b1b8cadb78 26
MikkoZ 13:69b1b8cadb78 27 Serial pc(USBTX, USBRX);
Jonathan Austin 0:2757d7abb7d9 28 DigitalOut led1(LED1);
MikkoZ 12:18c2160813c6 29 DigitalIn hall_sensor(USER_BUTTON0);
MikkoZ 13:69b1b8cadb78 30 AnalogIn ml8511_input(A0);
MikkoZ 13:69b1b8cadb78 31 AnalogIn bd1020_input(A2);
MikkoZ 13:69b1b8cadb78 32
MikkoZ 13:69b1b8cadb78 33
MikkoZ 13:69b1b8cadb78 34 void bh1726_print_one_value(){
MikkoZ 13:69b1b8cadb78 35 bool error;
MikkoZ 13:69b1b8cadb78 36 uint16_t data[2]; //2 channels of 16-bit data
MikkoZ 13:69b1b8cadb78 37
MikkoZ 13:69b1b8cadb78 38 error = bh1726_read_data(&data[0]);
MikkoZ 13:69b1b8cadb78 39 if (!error) {
MikkoZ 13:69b1b8cadb78 40 pc.printf("BH1726 ALS Data0[%4u], Data1[%4u]\n\r", data[0], data[1]);
MikkoZ 13:69b1b8cadb78 41 }
MikkoZ 13:69b1b8cadb78 42 else {
MikkoZ 13:69b1b8cadb78 43 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 44 }
MikkoZ 13:69b1b8cadb78 45 return;
MikkoZ 13:69b1b8cadb78 46 }
MikkoZ 13:69b1b8cadb78 47
MikkoZ 13:69b1b8cadb78 48
MikkoZ 13:69b1b8cadb78 49 void bd1020_print_one_value(){
MikkoZ 13:69b1b8cadb78 50 float temperature;
MikkoZ 13:69b1b8cadb78 51
MikkoZ 13:69b1b8cadb78 52 temperature = -(1000 * (bd1020_input * 3.3f) - 1546) / 8.2;
MikkoZ 13:69b1b8cadb78 53 pc.printf("BD1020 Temperature=%5.3f\r\n", temperature);
MikkoZ 13:69b1b8cadb78 54 return;
MikkoZ 13:69b1b8cadb78 55 }
MikkoZ 13:69b1b8cadb78 56
MikkoZ 13:69b1b8cadb78 57
MikkoZ 13:69b1b8cadb78 58 void rpr0521_print_one_value(){
MikkoZ 13:69b1b8cadb78 59 bool error;
MikkoZ 13:69b1b8cadb78 60 uint16_t data[3];
MikkoZ 13:69b1b8cadb78 61
MikkoZ 13:69b1b8cadb78 62 error = rpr0521_read_data(&data[0]);
MikkoZ 13:69b1b8cadb78 63 if (!error) {
MikkoZ 13:69b1b8cadb78 64 pc.printf("RPR0521 PS[%4u], Als0[%4u], Als1[%4u]\n\r", data[0], data[1], data[2]);
MikkoZ 13:69b1b8cadb78 65 }
MikkoZ 13:69b1b8cadb78 66 else {
MikkoZ 13:69b1b8cadb78 67 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 68 }
MikkoZ 13:69b1b8cadb78 69 }
MikkoZ 13:69b1b8cadb78 70
MikkoZ 13:69b1b8cadb78 71
MikkoZ 13:69b1b8cadb78 72 void bh1745_print_one_value(){
MikkoZ 13:69b1b8cadb78 73 bool error;
MikkoZ 13:69b1b8cadb78 74 uint16_t data[4]; //4 channels of 16-bit data
MikkoZ 13:69b1b8cadb78 75
MikkoZ 13:69b1b8cadb78 76 error = bh1745_read_data(&data[0]);
MikkoZ 13:69b1b8cadb78 77 if (!error) {
MikkoZ 13:69b1b8cadb78 78 pc.printf("BH1745 Red[%4u], Green[%4u], Blue[%4u], Clear[%4u]\n\r", data[0], data[1], data[2], data[3]);
MikkoZ 13:69b1b8cadb78 79 }
MikkoZ 13:69b1b8cadb78 80 else {
MikkoZ 13:69b1b8cadb78 81 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 82 }
MikkoZ 13:69b1b8cadb78 83 }
MikkoZ 13:69b1b8cadb78 84
MikkoZ 13:69b1b8cadb78 85
MikkoZ 13:69b1b8cadb78 86 void ml8511_print_one_value(){
MikkoZ 13:69b1b8cadb78 87 float uvraw, uv;
MikkoZ 13:69b1b8cadb78 88 #define MIN (0.300)
MikkoZ 13:69b1b8cadb78 89 #define MAX (0.900)
MikkoZ 13:69b1b8cadb78 90 #define UVONMAX 15
MikkoZ 13:69b1b8cadb78 91 uvraw = ml8511_input;
MikkoZ 13:69b1b8cadb78 92 uv = ( (UVONMAX/(MAX-MIN)) * (uvraw - MIN) );
MikkoZ 13:69b1b8cadb78 93 pc.printf("ML8511 UV Intensity %2.2fmW/cm^2 (raw[%2.3f])\r\n", uv, uvraw);
MikkoZ 13:69b1b8cadb78 94 }
MikkoZ 13:69b1b8cadb78 95
MikkoZ 13:69b1b8cadb78 96
MikkoZ 13:69b1b8cadb78 97 void bd7411_print_one_value(){
MikkoZ 13:69b1b8cadb78 98 if (!hall_sensor){
MikkoZ 13:69b1b8cadb78 99 pc.printf("BD7411 Magnet detected.\n\r");
MikkoZ 13:69b1b8cadb78 100 }
MikkoZ 13:69b1b8cadb78 101 else{
MikkoZ 13:69b1b8cadb78 102 pc.printf("BD7411 No magnet.\n\r");
MikkoZ 13:69b1b8cadb78 103 }
MikkoZ 13:69b1b8cadb78 104 led1 = hall_sensor;
MikkoZ 13:69b1b8cadb78 105 }
MikkoZ 13:69b1b8cadb78 106
Jonathan Austin 0:2757d7abb7d9 107
Jonathan Austin 1:846c97078558 108 // main() runs in its own thread in the OS
Jonathan Austin 1:846c97078558 109 // (note the calls to Thread::wait below for delays)
Jonathan Austin 0:2757d7abb7d9 110 int main() {
MikkoZ 12:18c2160813c6 111 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 112 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 113 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 114 pc.printf("6 sensor test on Rohm tileshield with 6 tiles.\r\n");
MikkoZ 13:69b1b8cadb78 115 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 116
MikkoZ 13:69b1b8cadb78 117 I2CCommonBegin();
MikkoZ 13:69b1b8cadb78 118
MikkoZ 13:69b1b8cadb78 119 bh1726_wait_until_found();
MikkoZ 13:69b1b8cadb78 120 pc.printf("BH1726 Sensor found.\n\r");
MikkoZ 13:69b1b8cadb78 121 bh1726_initial_setup();
MikkoZ 13:69b1b8cadb78 122
MikkoZ 13:69b1b8cadb78 123 pc.printf("BD1020 Analog sensor assumed to be connected.\n\r");
MikkoZ 13:69b1b8cadb78 124
MikkoZ 13:69b1b8cadb78 125 rpr0521_wait_until_found();
MikkoZ 13:69b1b8cadb78 126 pc.printf("RPR0521 Sensor found.\n\r");
MikkoZ 13:69b1b8cadb78 127 rpr0521_initial_setup();
MikkoZ 13:69b1b8cadb78 128
MikkoZ 13:69b1b8cadb78 129 bh1745_wait_until_found();
MikkoZ 13:69b1b8cadb78 130 pc.printf("BH1745 Sensor found.\n\r");
MikkoZ 13:69b1b8cadb78 131 bh1745_initial_setup();
MikkoZ 13:69b1b8cadb78 132
MikkoZ 13:69b1b8cadb78 133 pc.printf("ML8511 Analog sensor assumed to be connected.\n\r");
MikkoZ 13:69b1b8cadb78 134 pc.printf("BD7411 Digital sensor assumed to be connected.\n\r");
MikkoZ 13:69b1b8cadb78 135
MikkoZ 13:69b1b8cadb78 136 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 137 pc.printf("\n\r");
MikkoZ 13:69b1b8cadb78 138
MikkoZ 12:18c2160813c6 139
Jonathan Austin 0:2757d7abb7d9 140 while (true) {
MikkoZ 13:69b1b8cadb78 141 bh1726_print_one_value();
MikkoZ 13:69b1b8cadb78 142 bd1020_print_one_value();
MikkoZ 13:69b1b8cadb78 143 rpr0521_print_one_value();
MikkoZ 13:69b1b8cadb78 144 bh1745_print_one_value();
MikkoZ 13:69b1b8cadb78 145 ml8511_print_one_value();
MikkoZ 13:69b1b8cadb78 146 bd7411_print_one_value();
MikkoZ 13:69b1b8cadb78 147
MikkoZ 13:69b1b8cadb78 148 Thread::wait(200);
Jonathan Austin 0:2757d7abb7d9 149 }
Jonathan Austin 0:2757d7abb7d9 150 }
Jonathan Austin 1:846c97078558 151