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 Orefatoi

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Temperature.cpp Source File

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 }