Browse Source

add anemometer interrupt debounce

master
interfisch 1 year ago
parent
commit
e2005bbf84
  1. 8
      platformio.ini
  2. 8
      src/main.cpp

8
platformio.ini

@ -39,7 +39,7 @@ build_flags =
-D SENSOR_HS1101
-D HS1101PIN=D5
-D dataHS1101_minchange=2
-D dataHS1101_minchange=10
-D SENSOR_ML8511
-D ML8511PIN=A0
@ -47,9 +47,9 @@ build_flags =
-D SENSOR_ANEMOMETER
-D ANEMOMETERPIN=D6 #Light Blue thicker cable (in distribution box)
-D dataAnemometer_minchange=0.5
-D dataAnemometer_readdelay=1000*10
-D dataAnemometer_senddelaymax=1000*60*2
-D dataAnemometer_minchange=5.0
-D dataAnemometer_readdelay=1000*30
-D dataAnemometer_senddelaymax=1000*60*5
# Cable from Anemometer: Black=GND, Blue=3v3, Brown=Signal (needs pullup (internal))
lib_deps =

8
src/main.cpp

@ -197,6 +197,9 @@ struct sensordata
#define ANEMOMETER_PPMtoMPS 0.0208640462;
#define ANEMOMETER_DEBOUNCETIME 0.015 //0.015ms between pulses is approx 85m/s windspeed
unsigned long anemometer_lastpulse_fordebounce=0;
float value_anemometer=0; // [m/s]
void ICACHE_RAM_ATTR interrupt_anemometer();
@ -1171,7 +1174,10 @@ float getUV_ML8511(int pin) {
#ifdef SENSOR_ANEMOMETER
void ICACHE_RAM_ATTR interrupt_anemometer()
{
anemometer_pulsecounter++;
if (millis() - anemometer_lastpulse_fordebounce >= ANEMOMETER_DEBOUNCETIME) { //ignore if pulse came too fast
anemometer_pulsecounter++;
anemometer_lastpulse_fordebounce=millis();
}
}
#endif

Loading…
Cancel
Save