numb — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by 6830613003.

Components

Sketch code

#include <Keypad.h>
#include <ESP32Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define SERVO_PIN 13
#define BUZZER_PIN 12

LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo lockerServo;

const byte ROWS = 4;
const byte COLS = 4;

const String PASSWORD = "ABCD1";
String passwordInput = "";
bool isUnlocked = false; 

char keys[ROWS][COLS] = 
{
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {23, 22, 21, 19}; 
byte colPins[COLS] = {18, 5, 4, 2};    
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() 
{
  Serial.begin(115200);
  Serial.println("System Initializing...");
  
  Wire.begin(25, 26);
  lcd.init();
  lcd.backlight();
  lockerServo.attach(SERVO_PIN, 500, 2400);
  pinMode(BUZZER_PIN, OUTPUT);

  lockerServo.write(0);
  lcd.setCursor(0, 0);
  lcd.print("Smart Locker");
  lcd.setCursor(0, 1);
  lcd.print("Enter Pin:");
  Serial.println("System Ready. Enter Pin:");
}

void loop() 
{
  char key = keypad.getKey();
  if(key) 
  {
    digitalWrite(BUZZER_PIN, HIGH); delay(50); digitalWrite(BUZZER_PIN, LOW);
    Serial.print("Key pressed: ");
    Serial.println(key);
    passwordInput += key;
    
    lcd.setCursor(10, 1);
    lcd.print("     ");
    lcd.setCursor(10, 1);
    lcd.print(passwordInput);

    if(passwordInput.length()==5) 
    {
      Serial.print("Input : ");
      Serial.println(passwordInput);
      if(passwordInput == PASSWORD) 
      {
        Serial.println("-> Correct Password!");
        Serial.println("-> Status: Buzzer Beep & Servo Unlocking (90 deg)");
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Unlocked!");
        
        lockerServo.write(90); 
        isUnlocked = true;

        digitalWrite(BUZZER_PIN, HIGH); delay(100); digitalWrite(BUZZER_PIN, LOW); delay(100);
        digitalWrite(BUZZER_PIN, HIGH); delay(100); digitalWrite(BUZZER_PIN, LOW);
      } 
      else 
      {
        Serial.println("-> Incorrect Password!");
        Serial.println("-> Status: Buzzer Long Beep & Lock Retrying");
        
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Wrong Password!");
        
        digitalWrite(BUZZER_PIN, HIGH); 
        delay(500); 
        digitalWrite(BUZZER_PIN, LOW);
        
        delay(1500);
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Smart Locker");
        lcd.setCursor(0, 1);
        lcd.print("Enter Pin:");
      }
      passwordInput = "";
    }
  }
}

More projects by 6830613003