Maciej Zemlo
/
IES-R1
default version
main.cpp
- Committer:
- yabool2001
- Date:
- 2019-05-14
- Revision:
- 0:52c8f009b307
File content as of revision 0:52c8f009b307:
#include "mbed.h" uint8_t temp_offset = 0xFB; //uint8_t temp_offset = 0x00; uint8_t hum_offset = 0x00 ; Serial serial ( PA_9 , NC ); // IES LEDs DigitalOut led1 ( PB_5 ); DigitalOut led2 ( PB_2 ); DigitalOut led3 ( PH_1 ); DigitalIn pulse ( PA_2 ); // I2C conf ( SDA , SCK ) I2C i2c ( PB_9 , PB_8 ); char i2c_data[1] = { 0 }; char i2c_data2[2] = { 0 , 0 }; char i2c_data4[4] = { 0 , 0 , 0 , 0 }; const int i2c_addr_read = 129; const int i2c_addr_write = 128; char conf_reg[1] = { 0x0E }; char meas_conf_reg[1] = { 0x0F }; char manf_id_low_reg[1] = { 0xFC }; char temp_max_reg[1] = { 0x05 }; char temp_low_reg[1] = { 0x00 }; char conf_reg_init[2] = { 0x0F , 0x00 }; char meas_conf_reg_init[2] = { 0x0F , 0x00 }; char meas_conf_reg_reset[2] = { 0x0E , 0x80 }; char meas_conf_reg_heat_on[2] = { 0x0E , 0x08 }; char temp_offset_reg[2] = { 0x08 , temp_offset }; char meas_conf_reg_meas[2] = { 0x0F , 0x01 }; // start_meas: 14bit, t&h , meas //char meas_conf_reg_meas[2] = { 0x0F , 0x51 }; // start_meas: 11bit, t&h , meas //char meas_conf_reg_meas[2] = { 0x0F , 0xA1 }; // start_meas: t_8bit, h_8bit , t&h , meas // HDC init void hdc_init () { serial .printf ( "\n\r" ); //Konfiguracja startowa rejestrów i2c.write ( i2c_addr_write , conf_reg_init , 2 , false ); i2c.write ( i2c_addr_write , meas_conf_reg_init , 2 , false ); // Wdrożenie offsetu i2c.write ( i2c_addr_write , temp_offset_reg , 2 , false ); //Weryfikacja konfiguracji startowej rejestrów i2c.write ( i2c_addr_write , conf_reg , 1 , true ); i2c.read ( i2c_addr_read , i2c_data , 1 , false ); serial .printf ( "0x0E Conf. reg.: %X\n\r" , i2c_data[0] ); i2c.write ( i2c_addr_write , meas_conf_reg , 1 , true ); i2c.read ( i2c_addr_read , i2c_data , 1 , false ); serial .printf ( "0x0F Meas conf. reg.: %X\n\r" , i2c_data[0] ); // Weryfikacja adresu Manf. Id Low i2c.write ( i2c_addr_write , manf_id_low_reg , 1 , true ); i2c.read ( i2c_addr_read , i2c_data , 1 , false ); serial .printf ( "HDC manf_id_low_reg: %X initiated\n\r" , i2c_data[0] ); } void hdc_soft_reset () { serial .printf ( "\n\r" ); // Soft reset i2c.write ( i2c_addr_write , meas_conf_reg_reset , 2 , false ); // Wait to perform reset wait ( 1 ); serial .printf ( "Soft reset perfomed\n\r" ); } void hdc_heater ( uint8_t t ) { serial .printf ( "\n\r" ); // Soft reset i2c.write ( i2c_addr_write , meas_conf_reg_reset , 2 , false ); // Wait to perform reset wait ( t ); serial .printf ( "Heater switched on for 5s\n\r" ); } void hdc_single_acqusition () { i2c.write ( i2c_addr_write , meas_conf_reg_meas , 2 , false ); wait ( 0.2 ); i2c.write ( i2c_addr_write , temp_low_reg , 1 , true ); i2c.read ( i2c_addr_read , i2c_data4 , 4 , false ); //serial .printf ( "HDC Single acquisition raw[hex] 3-0: %X , %X , %X , %X \n\r" , i2c_data4[3] , i2c_data4[2] , i2c_data4[1] , i2c_data4[0] ); double temp = ( i2c_data4 [1] << 8 ) + i2c_data4 [0]; temp = ( ( temp * 165 ) / 65536 ) - 40 ; serial .printf ( "temp: %f\n\r" , temp ); } void hdc_temp_max () { i2c.write ( i2c_addr_write , temp_max_reg , 1 , true ); i2c.read ( i2c_addr_read , i2c_data , 1 , false ); //serial .printf ( "HDC Max temp. raw[hex]: %X\n\r" , i2c_data [0] ); double temp = i2c_data [0]; temp = ( ( temp * 165 ) / 256 ) - 40 ; serial .printf ( "HDC Max temp. = %f\n\r" , temp ); } // Toggle LED void toggle_led () { serial .printf ( "led toggle\n\r" ); led1 = !led1; led3 = !led2; led3 = !led3; } int main() { led1 = 0; led2 = 0; led3 = 0; i2c.frequency ( 1000000 ); hdc_init () ; //hdc_soft_reset () ; //hdc_heater ( 5 ); //hdc_init () ; while ( 1 ) { for ( int i = 0 ; i < 10 ; i++ ) { hdc_single_acqusition () ; wait ( 10 ) ; } hdc_temp_max () ; } }