Спасибо, почти со всем разобрался.
Только не понимаю зачем запускать цикл:


for(i=0; i<num; i++) //цикл несущей
{
digitalWrite(irLed, HIGH); //зажигаем ик-диод
delayMicroseconds(impulse); //положительный полупериод
digitalWrite(irLed, LOW); //гасим ик-диод
delayMicroseconds(impulse-1); //выравниваем скважность
}


ведь к:

val=digitalRead(tsop);//Прочитать показания датчика

контроллер перейдет только по завершении цикла if