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() { uint16_t red, green, blue, white; while(!apds.colorDataReady()){ delay(5); } apds.getColorData(&red, &green, &blue, &white); return white; } 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/ float getBatteryVoltage() { uint16_t raw = analogRead(A0); float volt = raw / 1023.0; volt = volt * 4.2; return volt; }