お世話になります。
表題の通りなのですが、
30ms間隔で送信されるパルスのみを受信し,その数をカウントしたいです。
稀に,1ms間隔程度のノイズが発生するので,そのパルスが29~31ms程度に収まっていることを確認してカウントしたいです。
下記のコードを試してみたのですが、millis()が割り込みで正しく動作していないせいか、全く変数(totalPulseAmount)が動きません。
アドバイスを頂戴出来れば幸いです。
宜しくお願い致します。
#define PulsePin 2 unsigned long Time[100] ; unsigned long Timing = 0; unsigned long receivedPulseAmount = 0; void setup() { digitalPinToInterrupt(PulsePin),samplePulse,CHANGE); } void loop(){ while(capturedTiming >=2){ checkSampledPulse(); } } void samplePulse(){ Timing += 1; Time[Timing] = millis(); } void checkSampledPulse(){ if(Timing >= 2){ unsigned long pulseWidth =Time[Timing]-Time[Timing-1]; if(pulseWidth > 29){ if(pulseWidth < 31){ receivedPulseAmount += 1; }} Time[Timing] = 0; Time[Timing-1] = 0; Timing -= 2; } }