// IRRemote_test // 2009.5.16. Toshi Nagata // IRC receiver module: D2 (interrupt 0) volatile unsigned long start; volatile int data[100]; volatile int index; void doInterrupt() { static unsigned long last; unsigned long now; long d; now = micros(); if (start == 0) { start = now; index = 0; last = now; } else { d = (now - last) / 10; if (index < 100) { data[index++] = d; } last = now; } } void setup() { start = 0; index = 0; Serial.begin(9600); pinMode(2, INPUT); attachInterrupt(0, doInterrupt, CHANGE); } void loop() { int i, d1, d2; long n; if (start == 0) delay(1); else { delay(20); // Wait until one block is over n = 0; Serial.print("# "); for (i = 0; i < index; i++) { Serial.print(data[i]); Serial.print(" "); } Serial.print("\n"); start = 0; } }