#include "config_user.h" int anemometerRotations = 0; unsigned long currentTime = 0; float fetchTemperature() { //return 10; return bme.readTemperature(); } float fetchPressure() { //return 10; return bme.readPressure() / 100.0F; } float fetchHumidity() { return bme.readHumidity(); } float fetchLight() { //TODO read values uint16_t red, green, blue, white, lux; while(!apds.colorDataReady()) { delay(5); } apds.getColorData(&red, &green, &blue, &white); //calculate lux lux = apds.calculateLux(red, green, blue); return lux; } void _anemometerInterrupt() { anemometerRotations++; #ifdef DEBUG Serial.print("*"); #endif } float fetchWindspeed() { anemometerRotations = 0; currentTime = millis(); int interruptNumber = digitalPinToInterrupt(ANEMOMETER_PIN); attachInterrupt(interruptNumber, _anemometerInterrupt, RISING); delay(1000 * 5); detachInterrupt(interruptNumber); return (float)anemometerRotations / 5.0 * 2.4; } // Copied from https://arduinodiy.wordpress.com/2016/12/25/monitoring-lipo-battery-voltage-with-wemos-d1-minibattery-shield-and-thingspeak/ #ifdef BATTERY_POWERED float getBatteryVoltage() { uint16_t raw = analogRead(A0); float volt = raw / 1023.0; return volt * 4.2; } #endif