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() * 2; } 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; return volt * 4.2; }