|
/////////////////////////////////////////////////////////////
int getIRKey() {
int data[BIT_PER_BLOCK];
int i;
while(pulseIn(irPin, HIGH) < start_bit); //Wait for a start bit
for(i = 0 ; i < BIT_PER_BLOCK ; i++)
data = pulseIn(irPin, HIGH); //Start measuring bits, I only want HIGH pulses
delay(100);
for(i = 0 ; i < BIT_PER_BLOCK ; i++) //Parse them
{
if(data > bin_1) //is it a 1?
data = 1;
else
if(data > bin_0) //is it a 0?
data = 0;
else
return -1; //Flag the data as invalid; Return -1 on invalid data
}
//based on NEC protocol, command data started from bit 16
//and end with bit 24 (8 bits long)
int result = 0;
for(i = 16 ; i < 24; i++) {
DigiKeyboard.print(data); //print out the value of button in binary form
if(data == 1) result |= (1<<i-16);
}
return result; //Return key number
} |
|