pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT
Dependencies: mbed MMA8451Q USBDevice WakeUp vt100
Fork of afero_node_suntory_2017_06_15 by
Temperature.cpp
00001 #include "Temperature.hpp" 00002 00003 Temperature::Temperature() 00004 { 00005 delta_interval = new Timer(); 00006 temp01 = new LM75B((PinName)PINS::TEMPERATURE::SDA,(PinName)PINS::TEMPERATURE::SCL, SENSORS::NXP_LM75B::ADDRESS); 00007 { 00008 float t1; 00009 temp01->getTemp(&t1); 00010 } 00011 temp02 = new AnalogIn((PinName)PINS::TEMPERATURE::BEFORE_COOLING); 00012 temp03 = new AnalogIn((PinName)PINS::TEMPERATURE::AFTER_COOLING); 00013 SERIAL_PRINT_DBG("Temperature inited\n"); 00014 read(); 00015 } 00016 00017 Temperature::~Temperature() 00018 { 00019 delete temp01; temp01 = NULL; 00020 delete temp02; temp02 = NULL; 00021 delete temp03; temp03 = NULL; 00022 SERIAL_PRINT_DBG("Temperature de-inited\n"); 00023 } 00024 00025 float 00026 Temperature::calc(float f) 00027 { 00028 float raw = f * 3.3; 00029 float rr1,t; 00030 00031 float& R1 = SENSORS::SEMITEC_502AT_11::R1; 00032 float& R0 = SENSORS::SEMITEC_502AT_11::R0; 00033 float& B = SENSORS::SEMITEC_502AT_11::B; 00034 float& T0 = SENSORS::SEMITEC_502AT_11::T0; 00035 00036 rr1= R1 * raw / (3.3 - raw); 00037 t = 1 / (log(rr1 / R0) / B + (1 / T0)); 00038 return (t - 273.15); 00039 } 00040 00041 void 00042 Temperature::checkIntervalUpdate() 00043 { 00044 if( interval_current != PREFERENCES::SENSING_INTERVAL[SENSORS::TEMPERATURE]) 00045 { 00046 timeout->detach(); 00047 backToNOP(); 00048 interval_current = PREFERENCES::SENSING_INTERVAL[SENSORS::TEMPERATURE]; 00049 timeout->attach(callback(this, &Temperature::read), interval_current); 00050 } 00051 } 00052 00053 void 00054 Temperature::go() 00055 { 00056 backToNOP(); 00057 delta_interval->reset(); 00058 ToDoQ::queuePut(this); 00059 delta_interval->start(); 00060 } 00061 00062 void 00063 Temperature::success() 00064 { 00065 ++serialNum; 00066 int32_t delta = (int32_t)delta_interval->read(); 00067 int32_t def_interval = PREFERENCES::SENSING_INTERVAL[SENSORS::TEMPERATURE]; 00068 timeout->attach(callback(this, &Temperature::read), def_interval < delta ? def_interval : def_interval - delta ); 00069 delta_interval->stop(); 00070 } 00071 00072 void 00073 Temperature::toJSON(char* buf) 00074 { 00075 char* fmt = "{\"DEVICE\":\"TEMP04\",\"VAL_1\":\"%.1f\",\"VAL_2\":\"%.1f\",\"VAL_3\":\"%.1f\",\"S\":\"%d\",\"E\":\"%d\"}"; 00076 float t1; 00077 temp01->getTemp(&t1); 00078 sprintf( 00079 buf, 00080 fmt, 00081 t1, 00082 calc(temp02->read()), 00083 calc(temp03->read()), 00084 serialNum, 00085 error_count 00086 ); 00087 }
Generated on Thu Jul 14 2022 06:24:36 by 1.7.2