LoRa_Node_STM32F103C8T6

Dependencies:   mbed mbed-STM32F103C8T6 OneWireCRC_LoRa_Node SX1276Lib_LoRa_Node

Committer:
lukas_formanek
Date:
Sat May 08 16:04:09 2021 +0000
Revision:
9:bc6233d6a997
Parent:
8:978eb43296ae
Lora_Node

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lukas_formanek 0:cc04364f049a 1 #include "Thermometer.h"
lukas_formanek 0:cc04364f049a 2
lukas_formanek 9:bc6233d6a997 3 const double voltage_divider_ref = V_BATT_REFF * (1.0/(1.0+1.6)); // max uroven napatia na delici
lukas_formanek 9:bc6233d6a997 4
lukas_formanek 9:bc6233d6a997 5 Thermometer thermometer(true, true, false, THERM_PIN, BATTERY_PIN, FOTO_PIN);
lukas_formanek 5:6e899f5db65e 6
lukas_formanek 9:bc6233d6a997 7 Thermometer::Thermometer(bool crcOn, bool useAddr, bool parasitic, PinName pinThermometer, PinName bat, PinName fot)
lukas_formanek 9:bc6233d6a997 8 : thermometer(crcOn, useAddr, parasitic, pinThermometer),
lukas_formanek 9:bc6233d6a997 9 battery(bat),
lukas_formanek 9:bc6233d6a997 10 foto(fot)
lukas_formanek 0:cc04364f049a 11 {
lukas_formanek 0:cc04364f049a 12 meassuredValue = 0.0;
lukas_formanek 9:bc6233d6a997 13 batteryValue = 0.0;
lukas_formanek 9:bc6233d6a997 14 fotoValue = 0.0;
lukas_formanek 5:6e899f5db65e 15 intervalSeconds = MEASURE_INTERVAL;
lukas_formanek 5:6e899f5db65e 16 counter = 0;
lukas_formanek 0:cc04364f049a 17 };
lukas_formanek 0:cc04364f049a 18
lukas_formanek 0:cc04364f049a 19 void Thermometer::Init()
lukas_formanek 0:cc04364f049a 20 {
lukas_formanek 0:cc04364f049a 21 thermometer.initialize();
lukas_formanek 6:531b8dccca06 22 thermometer.setResolution(THERMOMETER_RESOLUTION);
lukas_formanek 0:cc04364f049a 23 };
lukas_formanek 0:cc04364f049a 24
lukas_formanek 5:6e899f5db65e 25 void Thermometer::StartPeriodicMeassure(int seconds)
lukas_formanek 0:cc04364f049a 26 {
lukas_formanek 8:978eb43296ae 27 counter = 0;
lukas_formanek 6:531b8dccca06 28 Meassure();
lukas_formanek 6:531b8dccca06 29 intervalSeconds = seconds;
lukas_formanek 9:bc6233d6a997 30 // thermometerTicker.attach_us(this,&Thermometer::OnSampleTick,1000000); // kazdu sekundu
lukas_formanek 9:bc6233d6a997 31 thermometerTicker.attach(this,&Thermometer::OnSampleTick,1.0); // kazdu sekundu
lukas_formanek 5:6e899f5db65e 32 };
lukas_formanek 5:6e899f5db65e 33
lukas_formanek 5:6e899f5db65e 34 void Thermometer::StopPeriodicMeassure()
lukas_formanek 5:6e899f5db65e 35 {
lukas_formanek 8:978eb43296ae 36 counter = 0;
lukas_formanek 6:531b8dccca06 37 thermometerTicker.detach();
lukas_formanek 0:cc04364f049a 38 };
lukas_formanek 0:cc04364f049a 39
lukas_formanek 1:a54ff5e2c2f3 40 void Thermometer::Meassure()
lukas_formanek 0:cc04364f049a 41 {
lukas_formanek 0:cc04364f049a 42 meassuredValue = thermometer.readTemperature();
lukas_formanek 9:bc6233d6a997 43 batteryValue = ((battery.read()*3.3)/voltage_divider_ref)*V_BATT_REFF;
lukas_formanek 9:bc6233d6a997 44 fotoValue = foto.read_u16();
lukas_formanek 0:cc04364f049a 45 while((rint(meassuredValue)) == 85) {
lukas_formanek 0:cc04364f049a 46 Init();
lukas_formanek 0:cc04364f049a 47 meassuredValue = thermometer.readTemperature();
lukas_formanek 9:bc6233d6a997 48 batteryValue = ((battery.read()*3.3)/voltage_divider_ref)*V_BATT_REFF;
lukas_formanek 9:bc6233d6a997 49 fotoValue = foto.read_u16();
lukas_formanek 0:cc04364f049a 50 }
lukas_formanek 9:bc6233d6a997 51 rfm.SendValue(GATEWAY_ID, meassuredValue, fotoValue, batteryValue);
lukas_formanek 5:6e899f5db65e 52 };
lukas_formanek 0:cc04364f049a 53
lukas_formanek 1:a54ff5e2c2f3 54 void Thermometer::OnSampleTick()
lukas_formanek 1:a54ff5e2c2f3 55 {
lukas_formanek 5:6e899f5db65e 56 counter++;
lukas_formanek 9:bc6233d6a997 57 if(counter >= 60) {
lukas_formanek 8:978eb43296ae 58 counter = 0;
lukas_formanek 5:6e899f5db65e 59 Meassure();
lukas_formanek 5:6e899f5db65e 60 }
lukas_formanek 0:cc04364f049a 61 };