// Prikazuje IR signal
// Danijel Ptičar 

#define IRpin 4

unsigned long micros1;
unsigned long micros2;
unsigned long micros3;

void setup() {
  pinMode(IRpin,INPUT);
  Serial.begin(57600); 
}

void loop() {
   // nema IR signala
   while( digitalRead(IRpin) == 1 ) ;
  
   // IR signal prisutan
   micros1 = micros();
      do
      {
         // petlja se vrti dok imamo IR signal
         while( digitalRead(IRpin) == 0 ) ; 

         micros2 = micros(); // signal je završio, spremi vrijeme

         // pošalji koliko je trajao PULS
         Serial.println(micros2-micros1);
         
         // nema signala
         micros3 = micros2;
         
         // čekamo novi signal ili timeout
         while( digitalRead(IRpin) == 1 && (micros3-micros2)<10000) micros3 = micros(); 
         // novi IR signal
         
         Serial.println(micros3-micros2);
         micros1=micros3;
        
      } while(micros3-micros2<10000); // 10000us se smatra da više nema signala

      Serial.println("----");
}