Ele não está otimizado, mas funciona... A saída DATA do receptor deve ser ligado ao Pino Digital 2 (interrupt 0), cada vez que ele recebe um codigo valido, ele imprime na serial.
Funcionamento do "CodeLearning":
Você tem um arduino que "liga uma lâmpada";
Há um botão chamado Learning ligado ao arduino;
Inicialmente não há nenhum controle remoto salvo na memoria;
Pressione o botao Learning e o arduino gravará na EEPROM o proximo codigo recebido.
Cada vez que o arduino receber um codigo, ele compara com o codigo salvo, se igual alterna o estado da lampada;
Se o botao Learning for pressionado por mais de 7 seg, o arduino apaga o codigo salvo
É usado para cadastrar/apagar controles remotos da memoria sem ter que reprogramar o microcontrolador.
No arduino é bobeira porque você já faz o programa com apenas o seu controle.