Example Code for Arduino-Infrared controlled LED Matrix

Last revision 2026/01/08

This article offers a detailed guide on using Arduino to control an LED matrix with infrared, including hardware setup, wiring diagrams, and sample code.

Wiring Diagram

Sample Code

#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int currentNumber = 0;

long codes[12]=             // this array is used to store infrared codes
{
   0xFD30CF,0xFD08F7,               // 0 ,1
   0xFD8877,0xFD48B7,               // 2 ,3
   0xFD28D7,0xFDA857,               // 4 ,5
   0xFD6897,0xFD18E7,               // 6 ,7
   0xFD9867,0xFD58A7,               // 8 ,9
   0xFD20DF,0xFD609F,               // advance, move back
};

int number[10][8] =            //the array is used to store the number 0~9
{
  {0,0,0,1,0,0,0,1},//0
  {0,1,1,1,1,1,0,1},//1
  {0,0,1,0,0,0,1,1},//2
  {0,0,1,0,1,0,0,1},//3
  {0,1,0,0,1,1,0,1},//4
  {1,0,0,0,1,0,0,1},//5
  {1,0,0,0,0,0,0,1},//6
  {0,0,1,1,1,1,0,1},//7
  {0,0,0,0,0,0,0,1},//8
  {0,0,0,0,1,1,0,1} //9
};

void numberShow(int i) {                  //this function is used to display numbers
  for(int pin = 2; pin <= 9 ; pin++){
     digitalWrite(pin, number[i][pin - 2]);
  }
}

void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();

  for(int pin = 2 ; pin <= 9 ; pin++){
      pinMode(pin, OUTPUT);
      digitalWrite(pin, HIGH);
  }
}

void loop() {
  if (irrecv.decode(&results)) {
      for(int i = 0; i <= 11; i++){

         if(results.value == codes[i]&& i <= 9){
               numberShow(i);  // display number 0~9 on the digital control
               currentNumber = i;
               Serial.println(i);
               break;
         }

         else if(results.value == codes[10]&& currentNumber != 0){
               currentNumber--;
               numberShow(currentNumber);
               Serial.println(currentNumber);
               break;
         }

         //
         else if(results.value == codes[11]&& currentNumber != 9){
               currentNumber++;//
               numberShow(currentNumber);
               Serial.println(currentNumber);
               break;
         }
    }

   Serial.println(results.value, HEX);
   irrecv.resume();
  }
}

Was this article helpful?

ON THIS PAGE

TOP