Lesson 14 Infrared-Receiver


An infrared-receiver is a component that receives infrared signals and can independently receive infrared ray and output signals compatible with TTL level. It’s similar with a normal plastic-packaged transistor in size and it is suitable for all kinds of infrared remote control and infrared transmission.



Schematic Diagram

Control a certain key (for example, Power key) via a remote controller by programming. When you press the key, infrared rays will be emitted from the remote controller and received by the infrared receiver, and the LED on the Mega 2560 board will light up.

The schematic diagram:


Experimental Procedures

Step 1: Build the circuit


Step 2: Open the code file.

Step 3: Select the Board and Port.

Step 4: Upload the sketch to the board.

Now, press Power on the remote control and the LED attached to pin 13 on the Mega 2560 board will light up. If you press other keys, the LED will go out.


1. There is a transparent plastic piece at the back of the remote control to cut off the power and pull it out before you use the remote control.

2. Please gently press the button on the remote to avoid invalid data FFFFFFFF.

../_images/image189.png ../_images/image190.jpeg


Code Analysis

Initialize the infrared-receiver

#include <IRremote.h>

const int irReceiverPin = 2; // the infrared-receiver attact to pin2

const int ledPin = 13; // built-in LED

IRrecv irrecv(irReceiverPin); // Initialize the infrared-receiver

decode_results results; // The decoding result is placed in the result of the decode results structure.

Enable infrared-receiver

irrecv.enableIRIn(); // Restart the receiver

Receive and print the data

if (irrecv.decode(&results)) { // If receive a data

decode(&results): Decodes the received IR message, returns 0 if no data ready, 1 if data ready. Results of decoding are stored in results

    Serial.print("irCode: "); // print "irCode: " on the serial monitor

    Serial.print(results.value, HEX); // print the signal on serial monitor
    in hexadecimal

    Serial.print(", bits: ");

    Serial.println(results.bits); // Print the data bits

    irrecv.resume(); // Receive next data



If the power button is pressed

if(results.value == 0xFFA25D) // if the power button on the remote control is pressed

The 0xFFA25D is the code of the power button on the remote control, if you want to define other button, you can read the code of every button from the serial monitor.


    digitalWrite(ledPin,HIGH); // Turn on the LED




    digitalWrite(ledPin,LOW); // else turn of the LED