Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of YYY_DragonflyHelloWorld by
Revision 4:8be5ec736893, committed 2015-09-24
- Comitter:
- sk84life85
- Date:
- Thu Sep 24 21:50:52 2015 +0000
- Parent:
- 3:e2e8d92e5fcd
- Commit message:
- Modified basic code to configure BH1745 registers and read back what has been written.
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Sep 23 23:02:58 2015 +0000
+++ b/main.cpp Thu Sep 24 21:50:52 2015 +0000
@@ -2,12 +2,13 @@
#define RPR0521_MODE_CONT_CONTENT (0xC6u) // Temperature Register
#define RPR0521_MODE_CONT (0x41u) // Configuration Register
-#define BH1745_SAD (0x38u) // LM75 address
+#define BH1745_SAD (0x38u) // BH1745 address
+#define BH1745_SYSTEM_CONTROL (0x40u)
#define BH1745_MODE_CONTROL1 (0x41u)
#define BH1745_MODE_CONTROL2 (0x42u)
#define BH1745_MODE_CONTROL3 (0x43u)
#define BH1745_PERSISTANT (0x61u)
-#define BH1745_CLEAR_LSB (0x50u)
+#define BH1745_CLEAR_LSB (0x56u)
I2C i2c(I2C_SDA, I2C_SCL);
DigitalOut myled(LED1);
@@ -18,7 +19,7 @@
*/
// LED blink rate: higher -> faster blinking
-#define LED_BLINK_RATE 8 //Hertz
+#define LED_BLINK_RATE 18 //Hertz
//Define the LED pin output
//DigitalOut data00(D0);
@@ -61,7 +62,7 @@
// Configure I2C **********************************************************
char data_write[2];
- char data_read[2];
+ char data_read[6];
/* Configure the Temperature sensor device STLM75:
- Thermostat mode Interrupt
@@ -79,7 +80,7 @@
}
data_write[0] = BH1745_MODE_CONTROL1;
- data_write[1] = 0x00u;
+ data_write[1] = 0x05u;
status = i2c.write(BH1745_SAD, data_write, 2, 0);
if (status != 0) { // Error
while (1) {
@@ -112,12 +113,17 @@
while (1) {
// I2C Routines *******************************************************
// Read temperature register
- data_write[0] = BH1745_CLEAR_LSB;
+ data_write[0] = BH1745_SYSTEM_CONTROL;
i2c.write(BH1745_SAD, data_write, 1, 1); // no stop
- i2c.read(BH1745_SAD, data_read, 1, 0);
+ i2c.read(BH1745_SAD, data_read, 6, 0);
// Calculate temperature value in Celcius
- int tempval = (int)data_read[0];
+ int tempval1 = (int)data_read[0];
+ int tempval2 = (int)data_read[1];
+ int tempval3 = (int)data_read[2];
+ int tempval4 = (int)data_read[3];
+ int tempval5 = (int)data_read[4];
+ int tempval6 = (int)data_read[5];
/*
tempval >>= 7;
if (tempval <= 256) {
@@ -152,8 +158,8 @@
//*********************************************************************
// UART
- if (print_timer.read() >= 5) { //print_timer.read() returns time in seconds
- printf("Hello Francis %d!\n",tempval);
+ if (print_timer.read() >= 1) { //print_timer.read() returns time in seconds
+ printf("Francis' Test: %d, %d, %d, %d. %d, %d!\n",tempval1,tempval2,tempval3,tempval4,tempval5,tempval6);
print_timer.reset(); //Resets timer count to 0
}
