Thanks Paul, I see your point :-).... I'm getting there I think - see below. The main issue now seems to be a very high pulse count - much too high - which I figure must be to do with bounce? Any ideas how to fix this?
#include <PinChangeInt.h>
#define PIN1 7
uint8_t latest_interrupted_pin;
uint8_t interrupt_count[20]={0}; // 20 possible arduino pins
volatile float WindSpeed = 0;
volatile int wPulse=0;
unsigned long currentTime;
unsigned long loopTime;
void windPulse()
{
wPulse ++;
}
void setup()
{
pinMode(PIN1, INPUT);
digitalWrite(PIN1, HIGH);
Serial.begin(9600);
Serial.println("Starting...");
}
void loop()
{
reportAnemometer();
delay(15000);
}
void reportAnemometer()
{
Serial.println("Measuring");
currentTime = millis();
loopTime=(currentTime+5000);
Serial.print("currentTime: ");
Serial.println(currentTime);
Serial.print("loopTime: ");
Serial.println(loopTime);
while(loopTime >= currentTime)
{
PCintPort::attachInterrupt(PIN1, &windPulse, RISING);
currentTime = millis();
}
PCintPort::detachInterrupt(PIN1);
loopTime=0;
WindSpeed = (wPulse/ 5) * 2.4; //2.4 K/h for one switch closure per second
Serial.print("wPulse: ");
Serial.println(wPulse);
Serial.print("WindSpeed: ");
Serial.println(WindSpeed);
wPulse=0;
WindSpeed=0;
Serial.println("Finished");
}