ICStation Team
Published

Infrared Matrix Password Input System with Arduino

it can be used in the special situations which normal humans should not close to, such the High radiation zone, the High infection area.

BeginnerFull instructions provided1,275
Infrared Matrix Password Input System with Arduino

Things used in this project

Hardware components

ICStation Mega2560
ICStation Mega2560
×1
Bread board
×1
10K RM103 Blue White Resistance Adjustable Resistor
×1
1602A HD44780 Character LCD Display Module LCM Blue Backlight
×1
4 *4 Matrix Keyboard
×1
Infrared Remote Control Module
×1
Jumpers
×15
Dupont Line
×15
5v Power Supply
×1

Story

Read more

Schematics

2.jpg

Code

Infrared_Possword_Code.zip

Plain text
No preview (download only).

IRrecv_Read_the_system.ino

C/C++
#include <LiquidCrystal.h> //LCD library header files
#include <IRremote.h>//Infrared library header files
#include <Password.h> //Matrix keyboard password library header files
#include <Keypad.h> //Matrix keyboard library header files
#define uchar unsigned char
#define uint unsigned int
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Define the LCD1602 pin connection
Password password = Password( "1234" );//Set up the matrix keyboard password

int RECV_PIN = 7;//Infrared receiver tube feet
const byte ROWS = 4; // Four rows
const byte COLS = 4; //  columns
char keys[ROWS][COLS] = 
{
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};// Create the Keypad

byte rowPins[ROWS] = { 31,33,35,37};// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 39,41,43,45};// Connect keypad COL0, COL1 and COL2 to these Arduino pins.

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
//Initializes the internal keymap to be equal to userKeymap

IRrecv irrecv(RECV_PIN);//Define a receiver input pin

decode_results results;//Save the decoding of variables results

int i=0;
long code_1,code_2,code_3,code_4,code_5;


void setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(4,0);
  lcd.print("welcome");
  lcd.setCursor(4,1);
  irrecv.enableIRIn(); // Start the receiver
  keypad.addEventListener(keypadEvent); //add an event listener for this keypad
}

void loop()
{
  keypad.getKey();
  infrared();    
}
   
void infrared()//Infrared password input
{
  if (irrecv.decode(&results)) //Decoding is successful, the data in the results variables
      {
        if(results.value!=4294967295)//Whether the infrared remote control has been hold
        {
          if(i==0)
          {
            code_1=results.value;
            infrareddisplay(code_1);//LCD display the corresponding infrared buttons        
            i=1;
           }           
       else  if(i==1)
          {
            code_2=results.value;
            infrareddisplay(code_2);
            i=2;
           }
       else  if(i==2)
          {
            code_3=results.value;
            infrareddisplay(code_3);
            i=3;
           }
       else  if(i==3)
          {
            code_4=results.value;
            infrareddisplay(code_4);
            i=4;
           }
        else  if(i==4)
          {
            if(results.value==16748655)
             {
               infrared_password();
             }
            i=0;
            lcd.clear();
            lcd.setCursor(4,0);
            lcd.print("welcome");
            lcd.setCursor(4,1);
           }
        }
        irrecv.resume(); // Receive the next value
       }     
}
 
void infrared_password()//Infrared password comparison
{
  if(code_1==16724175)//The first value is 1
  {
    if(code_2==16718055)//The second value of 2
    {
      if(code_3==16743045)//The third value is 3
      {
        if(code_4==16716015)//The fourth value is 4
        {
          lcd.clear();
          lcd.setCursor(4,0);
          lcd.print("Success!");
          delay(2000);
          lcd.clear();
          lcd.setCursor(4,0);
          lcd.print("welcome");
          lcd.setCursor(4,1);
        }
        else
          {
            lcd.clear();
            lcd.setCursor(4,0);
            lcd.print("Wrong");
            delay(2000);
            lcd.clear();
            lcd.setCursor(4,0);
            lcd.print("welcome");
            lcd.setCursor(4,1);
          }
      }
      else
          {
            lcd.clear();
            lcd.setCursor(4,0);
            lcd.print("Wrong");
            delay(2000);
            lcd.clear();
            lcd.setCursor(4,0);
            lcd.print("welcome");
            lcd.setCursor(4,1);
          }
    }
    else
      {
        lcd.clear();
        lcd.setCursor(4,0);
        lcd.print("Wrong");
        delay(2000);
        lcd.clear();
        lcd.setCursor(4,0);
        lcd.print("welcome");
        lcd.setCursor(4,1);
      }
    }
    else
      {
        lcd.clear();
        lcd.setCursor(4,0);
        lcd.print("Wrong");
        delay(2000);
        lcd.clear();
        lcd.setCursor(4,0);
        lcd.print("welcome");
        lcd.setCursor(4,1);
      }
}
void infrareddisplay(long x)//LCD display the corresponding infrared buttons
{
  if(x==16738455)
  {
    lcd.print('0');
  }
  if(x==16724175)
   {
     lcd.print('1');
   } 
   if(x==16718055)
   {
     lcd.print('2');
   }
   if(x==16743045)
  {
    lcd.print('3');
  }
  if(x==16716015)
  {
    lcd.print('4');
  }
  if(x==16726215)
   {
     lcd.print('5');
  }
  if(x==16734885)
   {
     lcd.print('6');
  }
  if(x==16728765)
   { 
     lcd.print('7');
  }
  if(x==16730805)
   {
     lcd.print('8');
   }
   if(x==16732845)
    {
    lcd.print('9');
  }
  if(x==16748655)
  {
    infrared_password();
  }
}

void keypadEvent(KeypadEvent eKey)//Matrix keyboard password
{
  switch (keypad.getState())
  {
    case PRESSED:
        lcd.print(eKey);
	switch (eKey)
      {
	  case '#': checkPassword(); break;
	  case '*': password.reset(); break;
	  default: password.append(eKey);
       }
  }
}

void checkPassword()//Matrix keyboard password display
{
  if (password.evaluate())
  {
    lcd.clear();
        lcd.setCursor(5,0);
        lcd.print("Success!");
        delay(2000);
        lcd.clear();
        lcd.setCursor(5,0);
        lcd.print("welcome");
        lcd.setCursor(5,1);
  }
  else
  {
          lcd.clear();
          lcd.setCursor(5,0);
          lcd.print("Wrong");
          delay(2000);
          lcd.clear();
          lcd.setCursor(5,0);
          lcd.print("welcome");
          lcd.setCursor(5,1);
  }
}

Credits

ICStation Team
27 projects • 46 followers
ICStation.com is a leading company specializes in all kinds of IC products, such as electronic devices and components, development modules, development boards,

Comments