Introduction: DIY USB IR Receiver

In this tutorial, I'm going to show you how to make a small, cheap (less than $5) USB IR receiver.
The microcontroller used acts as a standard keyboard, so it should work on every computer.
With this receiver you can use a remote control to control things on your computer.

I made this instructables based on one of my previous instructables. The difference is that it's a lot smaller and it acts as a keyboard, so you don't need extra software on your PC.

Let's get started!

Step 1: Parts

For this instructables you'll need a few parts:

A digispark(clone) (gearbest)
A 38kHz IR receiver (ebay)
A remote control

You'll also need some tools:

A soldering Iron
A PC with the arduino software installed

Step 2: Soldering the IR Receiver

First you need to bend one leg (OUT) of the IR receiver so it goes into P2 and the other legs go into 5V and GND.

After that you need to add a little piece of heat shrink (or tape) to the horizontal part of the IR receiver.

Place the IR receiver back on the digispark and solder the three legs together.

The only thing you need to do now is clip of the useless part of each leg.

Now you're done with the hardware part.

Step 3: Getting the Keycodes of the Remote

In this part you need to see what code is "connected" to every button on the Remote control. We need to do this, because every remote uses other codes for every key.

To do this, I used the setup and program of my previous instructables. I just opened the serial monitor to see which code was send. If you don't have an arduino for getting the codes, you can also use the part you just made. This is a little more difficult, but it gives you the same result.

First you need to install the digiusb drivers. Goto this link and on the right click "download zip". After you've downloaded the zip extract all the folder "DigisparkExamplePrograms-master" to any directory you like.

The goto "DigisparkExamplePrograms-master/C++/DigiUSB Windows Driver/" and click "installdriver".

After you've done that, you need to follow these instructions to install the right boards in the arduino IDE.

Now copy this code to a new arduino project and upload it to your digispark.

/*************************************
* This code is written by Laurens Wuyts
* For questions: laurens.wuyts@gmail.com
* 
* 
* Microcontroller: ATtiny85
* Dev board:       Digispark
* 
*************************************/
#include <DigiUSB.h>

uint8_t situation = 0;
uint8_t START = 0;
uint8_t x = 0;
uint8_t BIT = 0;
uint8_t Id = 0;
uint8_t Id_inv = 0;
uint8_t Data = 0;
uint8_t Data_back = 0;
uint8_t Data_inv = 0;
uint8_t Repeat = 0;
uint8_t sended = 0;

uint16_t Time_old = 0;
uint16_t Time = 0;
uint16_t TimeDelta = 0;
 
void setup(void) {
  attachInterrupt(0, IR_Read, FALLING);
  
  pinMode(1,OUTPUT);
  digitalWrite(1,LOW);

  DigiUSB.begin();
}
 
void loop(void) {
  if(sended == 1) {
    DigiUSB.println(Data_back, DEC);
    sended = 0;
  } else {
    DigiUSB.delay(10);
  }
}

void IR_Read(void) {
  digitalWrite(1,HIGH);
  Time = micros();
  if (Time_old != 0) {
    TimeDelta = Time - Time_old;
    if ((TimeDelta > 12000)&&(TimeDelta < 14000)) {
      START = 1;
      x = 0;
      situation = 1;
      Id = 0;
      Id_inv = 0;
      Data = 0;
      Data_inv = 0;
    } else if ((TimeDelta > 10000)&&(TimeDelta < 12000)) {
      situation = 2; // repeat
    } else if ((TimeDelta > 1500)&&(TimeDelta < 2500)) {
      situation = 3; //"1"
      BIT = 1;
    } else if ((TimeDelta > 1000)&&(TimeDelta < 1500)) {
      situation = 3; //"0"
      BIT = 0;
    } else situation = 5; 
    if (situation == 3) {
      if (x < 8) {
        Id |= BIT;
        if (x < 7) Id <<= 1;  
        x++;
      } else if (x < 16) {
        Id_inv |= BIT;
        if (x < 15) Id_inv <<= 1;
        x++;
      } else if (x < 24) {
        Data |= BIT;
        if (x < 23) Data <<= 1;
        x++;
      } else if (x < 32) {
        Data_inv |= BIT;
        if (x < 31) {
          Data_inv <<= 1;
        } else {
          
          /* DO SOMETHING HERE */
          sended = 1;
          
          Data_back = Data;
          Repeat = 0;
        }
        x++;
      }
    } else if (situation == 2) {
      if(Repeat == 1) {
        
        /* DO SOMETHING HERE */
        /*sended = 1;*/
        
      } else {
        Repeat = 1;
      }
    }
  }
  Time_old = Time;
  digitalWrite(1,LOW);
}

After you've done that, goto "DigisparkExamplePrograms-master/Python/DigiUSB/Windows/" and open "monitor.exe". In this window the keycode is printed when you press a button. Just note the button and then the code you see. You'll need them later on.

Step 4: Digispark Sketch

Ok now the "real" code for the Digispark.

In this code you need to add the keycodes you got in the previous step. For example if the "mute" key has code 100 you change:

#define mute	240
to
#define mute	100

!! Attention !!

When you define a new key, you can't use spaces in the name.

And for adding functions go into the loop function and add/change the key you like.

When you have any question at all, feel free to ask!

/*************************************
* This code is written by Laurens Wuyts
* For questions: laurens.wuyts@gmail.com
* 
* 
* Microcontroller: ATtiny85
* Dev board:       Digispark
* 
*************************************/

/**** Define Remote control keys ****/
#define Power     64
#define key_1     32
#define key_2     160
#define key_3     96
#define key_4     16
#define key_5     144
#define key_6     80
#define key_7     48
#define key_8     176
#define key_9     112
#define key_0     136
#define vol_up    224
#define vol_down  208
#define ch_up     72
#define ch_down   8
#define mute      240
#define next      172
#define prev      164
#define up        6
#define down      134
#define left      166
#define right     70
#define playpause 156
#define key_stop  180
/************************************/

#include "TrinketHidCombo.h"

uint8_t situation = 0;
uint8_t START = 0;
uint8_t x = 0;
uint8_t BIT = 0;
uint8_t Id = 0;
uint8_t Id_inv = 0;
uint8_t Data = 0;
uint8_t Data_back = 0;
uint8_t Data_inv = 0;
uint8_t Repeat = 0;
uint8_t sended = 0;

uint16_t Time_old = 0;
uint16_t Time = 0;
uint16_t TimeDelta = 0;
 
void setup(void) {
  /* Use INT0(P2) on the Digispark */
  attachInterrupt(0, IR_Read, FALLING);
  
  pinMode(1,OUTPUT);
  digitalWrite(1,LOW);

  TrinketHidCombo.begin();
}
 
void loop(void) {
  if(sended == 1) {
    /* Assign functions to the buttons */
    if(Data_back == vol_up) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP);
    } else if(Data_back == vol_down) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN);
    } else if(Data_back == next) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_NEXT_TRACK);
    } else if(Data_back == prev) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_PREV_TRACK);
    } else if(Data_back == key_stop) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_STOP);
    } else if(Data_back == playpause) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_PLAYPAUSE);
    } else if(Data_back == mute) {
      TrinketHidCombo.pressMultimediaKey(MMKEY_MUTE);
    } else if(Data_back == Power) {
      TrinketHidCombo.pressSystemCtrlKey(SYSCTRLKEY_SLEEP);
    } else if(Data_back == key_0) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_0);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_1) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_1);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_2) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_2);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_3) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_3);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_4) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_4);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_5) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_5);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_6) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_6);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_7) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_7);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_8) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_8);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == key_9) {
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_9);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == up) {
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_UP);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == down) {
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_DOWN);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == left) {
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_LEFT);
      TrinketHidCombo.pressKey(0, 0);
    } else if(Data_back == right) {
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_RIGHT);
      TrinketHidCombo.pressKey(0, 0);
    }
    sended = 0;
  } else {
      TrinketHidCombo.poll();
  }
}

/* Read the IR code */
void IR_Read(void) {
  digitalWrite(1,HIGH);
  Time = micros();
  if (Time_old != 0) {
    TimeDelta = Time - Time_old;
    if ((TimeDelta > 12000)&&(TimeDelta < 14000)) {
      START = 1;
      x = 0;
      situation = 1;
      Id = 0;
      Id_inv = 0;
      Data = 0;
      Data_inv = 0;
    } else if ((TimeDelta > 10000)&&(TimeDelta < 12000)) {
      situation = 2; // repeat
    } else if ((TimeDelta > 1500)&&(TimeDelta < 2500)) {
      situation = 3; //"1"
      BIT = 1;
    } else if ((TimeDelta > 1000)&&(TimeDelta < 1500)) {
      situation = 3; //"0"
      BIT = 0;
    } else situation = 5; 
    if (situation == 3) {
      if (x < 8) {
        Id |= BIT;
        if (x < 7) Id <<= 1;  
        x++;
      } else if (x < 16) {
        Id_inv |= BIT;
        if (x < 15) Id_inv <<= 1;
        x++;
      } else if (x < 24) {
        Data |= BIT;
        if (x < 23) Data <<= 1;
        x++;
      } else if (x < 32) {
        Data_inv |= BIT;
        if (x < 31) {
          Data_inv <<= 1;
        } else {
          
          /* DO SOMETHING HERE */
          sended = 1;
          
          Data_back = Data;
          Repeat = 0;
        }
        x++;
      }
    } else if (situation == 2) {
      if(Repeat == 1) {
        
        /* DO SOMETHING HERE */
        sended = 1;
        
      } else {
        Repeat = 1;
      }
    }
  }
  Time_old = Time;
  digitalWrite(1,LOW);
}

Now upload the sketch to the digispark. Unplug and replug it into your computer, wait ~5sec and enjoy your remote control.

Step 5: Resume

In this tutorial, I showed how to make a low cost USB remote control.

I hope you liked it, please add suggestions what you want to see next, questions or improvements below.

Laurens

Comments

author
Pault274 (author)2017-08-15

Hi, Great instructable working like a charm. Having one problem. If I press a button to long it executes twice. Is there a way to increase a time out between button presses?

Greetings

author
Alex Lillybear (author)2017-05-09

Hi Laurens, I know it's been a while since you made this instructionable, but I'll try asking anyway.

I'm
trying to get my Harmony 525 to play nicely with this reciever, byt I
can't for the life of me get the monitor to register events. I've tried
by adding known NEC protocol devices to the Harmony, but no luck at all.
I was thinking maybe you could point me in the right direction?

Thanks for an exellent project!

author

Nevermind, it's working now. Now I jest need to find a compatible remote with most of the functions I need. So far, Andersson R1 surround receiver has given me the most options on my Harmony 525. Thanks again!

author
Magicoolme (author)2017-04-07

Hi, I build it but it works only if I press the key on the remote repeatedly very very very fast. What can it be?

author
sfriziona (author)2017-02-21

Hi,

thanks for sharing this project, I followed instructions and found very easy.

Now
I got no experience with arduino but neeed to add some key , could someone point me in the right direction to find out how
to remap and assign new key and functions?

I got a programmable harmony remote and try to get it work with a raspberry Pi 3 with libreelec.

Thanks....

author
davids1983 (author)2017-02-08

I built this and its great, it is the only method i can get anything from. I tried writing something based on the pulsein code and I got nothing at all. Well done.

I am having some issues though with ghost false positive signals every now and again, also the repeat function I had to switch it off to make it more usable. Do you have any ideas to improve error correction?

My other observation is the first sketch could replaced by a simple if and variable to put it in to 'learn mode' with TrinketHidCombo.print(Data_back_,DEC) that way users could flash their digispark, re open the sketch and merely select your #define keys point their remote and press the button, then change the variable and use as expected. This is what i did and it worked well.

author
Jeeru (author)2017-02-06

What I want to do is do kind of a "fake" HDMI-cec with my HTPC.

I want to be able to control Kodi on my htpc, just simple things linke up/down/left/right and the ok button. Right now my raspberry pi does that perfectly through HDMI-cec. I'm switching to an HTPC, which doesnt support cec. This DIY might (kinda) fix that for me. I'd want to use the remote of my Yamaha receiver, but how do I know which protocol it uses? I can't find if it uses NEC or RC5 or RC6.

author
Luis AugustoD1 (author)2017-01-30

Hi! First of all, thanks a lot Laurens for sharing this code. I was struggling for days with the IRRemote library from Ken Sherrif, but it was impossible to use due to conflicts with all the USB-related libraries from Digispark - which made it impossible to do any kind of debugging, even basic ones as getting the remote codes.

This solution is simple and just works.

At first, I was having the same problem as the others who tried to use it - With the routine hardly catching any return code from the cheap chinese remote I have (which I knew it used the NEC protocol). After some debbuging, I realized that it was spacing the signals in the "situation 1" state a little bit longer than you put in your code - with TimeDeltas out of the 12000-14000 range , around 14100 in my case. So it was just a matter of raising this range as below (i chose 15000 to replace the upper limit):

...

if (Time_old != 0) {

TimeDelta = Time - Time_old;

// Find the time interval between signals

//DigiUSB.println(TimeDelta, DEC);

// if ((TimeDelta > 12000)&&(TimeDelta < 14000)) {

if ((TimeDelta > 12000)&&(TimeDelta < 15000)) {

START = 1;

x = 0;

situation = 1;

...

and the correct codes started to appear on the monitor without errors.

I hope this can help others too, and again, thanks for sharing!

Luis.

author

Hi Luis,

Thanks for the very helpful answer.
I'm glad that you liked it and got it working.

Laurens

author
prahlad5226 (author)2016-12-17

Can you please, Make IR Reciver for android device.

author
mooattyi (author)2016-09-29

Hi!

I need some help!

My first problem is, that when I
try to figure out the keys, the monitor program only hardly get the
signal...I have to trigger the key on the remote control about 50 times
to get only one line of code. I can see the led blinking on the board,
so I don't know what the problem is.

The second problem is that
the codes I get are very arbitrary. I get the same code for different
keys, and I get different codes for one button...yes, it's strange.

And
my final problem is I can't compile the final code, the linker fails,
but I can't find out what's the problem. Here is the compile log: http://pastebin.com/Y7ZAPktF

I hope someone can help me!

author
Laurens-Wuyts (author)mooattyi2016-09-30

The problem with the remote is, I think, that it uses the RC5 protocol and the code I wrote only works with the NEC protocol. What type of remote are you using?

I tried compiling the code supplied again using the 1.6.12 version of the arduino software, and it ran just fine. And I can't see an obvious reason in your log file.

Laurens

author
mooattyi (author)Laurens-Wuyts2016-10-04

Hey!

Thank You for the fast answer!

I have this remote control: https://www.arctic.ac/eu_en/mcr2.html

Should I use another one?

author
Laurens-Wuyts (author)mooattyi2016-10-04

This remote uses the RC-6 protocol, which I didn't implement in the code.

For the code to work, you'll need a remote which uses the NEC protocol.

Laurens

author
AHMDXFRHN™ (author)2016-09-30

Hello there. I had an issue with this error message. Someone please help me.

C:\Users\Acer\Documents\Arduino\sketch_sep30a\sketch_sep30a.ino:38:29: fatal error: TrinketHidCombo.h: No such file or directory

#include "TrinketHidCombo.h"

author

You have to install the TrinketHidCombo library from adafruit.

Laurens

author

which directory should I put it ?

author

You should put the folder TrinketHidCombo in:

C:/program files (x86)/arduino/libraries

Laurens

author

thank you for the help. I will PM you about other problem that I had after I have done this step in detail

author
johnjore (author)2016-08-15

Thanks for making available. Works great with my Kenwood remote (NEC protocol), except for one minor detail: Repeat. Using EventGhost it looks like it repeats forever. "Fixed" by commenting out "Situation 2", effectivly disabling Repeat. I suspect that unless a "packet" of a type "Situation 3" arrives, repeat is not turned off?

author
ajmas (author)2016-05-25

As a next evolution, it would be interesting adapt this to work with any remote control, by having it 'learn' the signals. At the moment I am playing around with the following tools (I have no vested interest in any of them):

- Sender/receiver with Arduino Nano: http://harctoolbox.org/arduino_nano.html

- Open IR database: http://irdb.tk

There are few other projects out there, but I didn't want to overload this response with too many links.

author
Laurens-Wuyts (author)ajmas2016-05-25

Thanks for the response.

I had a look at the links and I find it an interesting idea.
I'll have a deeper look in it this summer. :)

Laurens

author
btk007 (author)2016-04-13

Hello

can I use for this project ATTINY85 board with full size USB ?

http://www.gearbest.com/other-accessories/pp_22767...

Will the code change or can i use the one You provided ?

author
Laurens-Wuyts (author)btk0072016-04-13

Hello

Yes, you can use that board, and you can use the exact same code I provided.

Laurens

author
btk007 (author)Laurens-Wuyts2016-04-13

Thank You for quick reply :) I just have 2 more questions.

I want to use a Sony remote RM ED012

http://www.lewandowscy.pl/sklep/images/sklep/ext_d...

Do you know if it is NEC or RC5 ?

Dose the RC5 remotes work with your solution as good as NEC ones ?

author
Laurens-Wuyts (author)btk0072016-04-13

I'm not sure about the remote and I don't think my code for RC-5 works really good.

Laurens

author
Duyu el Ryel made it! (author)2016-04-12

My first project with android. I followed the instructions and almost worked flawless ;o)

I had to download the TrinketHidCombo library manually and install it. With 0 arduino history, i needed 5 mins to do it ;o)) After that, i connected the finished device to my usb, and my pc didn't understand what i want from it. Of course not, cause i did solder one leg accidantly to pin3, not to pin 2. A little smoke test was made for 10-15 secs, den i realised, it shouldn't be the normal way it needs to work ;o) Then resoldered the IR led to pin 2 ;o) After that, i was playing with the remote controlls, but for some reason, the digispark only reads few remotes. It nor really see my samsung remote.
I did try to make an other digispark with other IR led withouth smoke test it, but same result.
Finally it readed my old car hifi's remote and now it works nice ;o))
Sadly it only controlls the power, mute, vol+ and vol-. Youtube not care about the other multimedia buttons for some reason.

It controlls VLC well.

So, thank you for the instructions!

IMG_20160412_093930.jpg
author

I'm glad you liked it and it worked!

I think it doesn't recognize the remotes because they use RC5 protocol. The program is written for NEC remotes.

Youtube doesn't use the standard media keys. But when you are in the tab of youtube, you can use different keys to control the video:
k > play/pause
l > go back 10 secs
m > go forward 10 secs
...

Laurens

author

I will try the RC5 code with my other remotes when i'll arrive home.

The Youtube part not that important and it can't really be combined with the media keys, like when i push the play/pause button on the remote, it sends MMKEY_PLAYPAUSE + KEYCODE_K if i want to use it everywhere.

Anyway, thank you! ;o)

author
RodB16 made it! (author)2016-04-05

Thank you Laurens - this has been most useful!

I managed to build this and get it working, but I am facing one issue. While using the remote to send SYSCTRLKEY_SLEEP puts the computer to sleep, I cannot seem to use a key to send SYSCTRLKEY_WAKE or similar to resume the computer.

I have a USB keyboard and also a "PC Remote" (that is USB-IR), and these seem to wake the computer from sleep no problem. I can see the digistump still has power to it when the PC is asleep though...

Any ideas?

WP_20160405_09_27_07_Pro.jpgWP_20160405_09_27_23_Pro.jpgWP_20160405_09_27_34_Pro.jpg
author
Laurens-Wuyts (author)RodB162016-04-05

I'm glad it work for you!

You can try and go to device managent, find the digispark in keyboards and select properties. In properties go to the last tab and check if it's able to wake up the computer.

Laurens

author
RodB16 (author)Laurens-Wuyts2016-04-05

Hey Laurens!

Yes I checked that option is there and it seems there is no Power Management tab for that device :(

I also noticed something different about that device in the details tab:

Under "Power Data" it only lists: PDCAP_WAKE_FROM_D0_SUPPORTED

Whereas my normal USB keyboard has:
PDCAP_WAKE_FROM_D0_SUPPORTED
PDCAP_WAKE_FROM_D1_SUPPORTED
PDCAP_WAKE_FROM_D2_SUPPORTED

It seems I need the HID device to support D2 (which is S3 apparantly)

Is there something I need to change in some code to add the power management support so that tab shows?

Thank you so much for your help!

author
Laurens-Wuyts (author)RodB162016-04-05

Hello,

I'm not sure why it doesn't work. I get more options. (see image)

I'll see if I can get it to work (as I've never used wake up and sleep). And keep you posted.

Laurens

wake.jpg
author
RodB16 (author)Laurens-Wuyts2016-04-05

Thank you Laurens - much appreciated!

It's possible my driver version is different (I had to use a newer DigiUSB driver because I am running Windows 10)

author
Laurens-Wuyts (author)RodB162016-04-05

I'm also running windows 10, but the keyboard driver is a standard windows driver.

Laurens

author
Marethno (author)2016-01-13

This is a kind of projects I love. as I know. you can t buy something like that. or I never seen it. anyway. i Would like to make this project, my only problem is that I don't have a digispark, therefor I have a bunch Attiny2313 here. i will try to build this with an attiny2313. may you could help if I get some errors on coding the attiny.i m good in soldiering, already, soldered led cubes and several projects. but I really suck at coding, expecting with atmega studio or Boscom.

author
sanjeev.saxena.9231 (author)2015-11-30

Very nice ?

author

Thanks!

author
USMC-USAF-USN (author)2015-11-08

Thanks for the interesting Instructible. For me it has potential as a device for functional testing of "dead" or unknown remotes. Great!

author

I'm glad you like it!

Laurens

author
PrzemysławK1 (author)2015-09-23

Great instructable, but I have one problem. When I use my old Philips remote (one of these: http://goo.gl/OoybyL ) it's nearly impossible to read any code. In most cases it never shows up in serial monitor.

author

Thanks, probably the philips remote is using the RC5 protocol and I'm using NEC protocol. I'll see if I can change the code later this day, so it supports RC5 too.

Laurens

author

Thanks!

author

I added 2 files for using with a philips (RC5) remote. I couldn't test them, because I don't have a RC5 remote laying around, but they compile like they should.

Laurens

author

Great, thanks! Now it's working better, but it still print the code once per couple of tries and I get random codes. Anyway, thanks for trying to help me.

author
Laurens-Wuyts made it! (author)PrzemysławK12015-09-24

I like to help where needed!

Try using this file and post the output here. I just added some debug lines.

P.S. I searched the whole house, but I couldn't find a RC5 remote :(

Laurens

IR_Receiver_interrupt_ATtiny85_codes_RC5_debug.ino
author

Hi, sorry for keeping you waiting. That's output of your code: http://pastebin.com/NB8ag3LN

author

I'm having the same issue with the code. I'll look into it and let you know when I have a solution.

Laurens

author
technovative (author)2015-09-14

Clever idea, and implementation. A great way to repurpose obsolete but still functioning IR remote control units.

author

Thanks!

The idea came from some remotes which where laying around on my desk.

About This Instructable

42,564views

373favorites

License:

Bio: twitter: @Laurens_Wuyts
More by Laurens-Wuyts:How to Use the Beelink SEA I Media PlayerMinimalistic Led ClockControl Raspberry pi GPIO using an app
Add instructable to: