Cara Membuat Kunci PIN dengan Keypad dan Servo Arduino — Simulasi Online

Kunci PIN ini bekerja seperti brankas mini: pengunjung mengetik kode di keypad, dan hanya kode yang benar yang membuat servo membuka palangnya. Keypad terhubung ke pin D2 sampai D9 dan servo ke D10.

Board: Arduino Uno2 komponen
Rangkaian simulasi Kunci PIN (keypad + servo) dengan Arduino Uno di NOVIOT

Komponen yang dipakai

  • Arduino Uno
  • Keypad 4x4
  • Motor servo

Cara kerja

  1. Keypad matriks disambungkan ke pin D2 sampai D9 sebagai baris dan kolom tombol.
  2. Pustaka Keypad membaca tombol yang ditekan satu per satu dan menyusunnya menjadi kode masukan.
  3. Kode masukan dibandingkan dengan PIN yang tersimpan di program (coba 1234).
  4. Bila PIN cocok, servo di D10 bergerak membuka palang; bila salah, palang tetap terkunci.

Konsep yang dipelajari

Keypad matriks 4x4Pustaka KeypadPerbandingan kode PINServo sebagai pengunci

Kode program

/*
  Kunci PIN: ketik 4 digit di keypad. PIN benar (1-2-3-4) memutar servo
  membuka palang; PIN salah mengunci kembali.
  Rangkaian: keypad (R1-R4 -> D2-D5, C1-C4 -> D6-D9),
             servo (GND -> GND, VCC -> 5V, SIG -> D10).
  Klik tombol keypad di kanvas saat simulasi berjalan.
  Pustaka: Keypad, Servo.
*/
#include <Keypad.h>
#include <Servo.h>

const byte BARIS = 4, KOLOM = 4;
char tombol[BARIS][KOLOM] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte pinBaris[BARIS] = {2, 3, 4, 5};
byte pinKolom[KOLOM] = {6, 7, 8, 9};

Keypad keypad = Keypad(makeKeymap(tombol), pinBaris, pinKolom, BARIS, KOLOM);
Servo palang;
const String PIN_BENAR = "1234";
String masukan = "";

void setup() {
  palang.attach(10);
  palang.write(0); // Terkunci.
  Serial.begin(9600);
  Serial.println(F("Ketik PIN 4 digit di keypad."));
}

void loop() {
  char kunci = keypad.getKey();
  if (kunci) {
    Serial.print(F("Tombol: "));
    Serial.println(kunci);
    if (kunci == '*') {
      masukan = "";
      palang.write(0);
      Serial.println(F("Direset, terkunci."));
    } else if (kunci == '#') {
      if (masukan == PIN_BENAR) {
        palang.write(90);
        Serial.println(F("PIN benar, terbuka!"));
      } else {
        Serial.println(F("PIN salah."));
      }
      masukan = "";
    } else if (masukan.length() < 4) {
      masukan += kunci;
    }
  }
}

Template Arduino Uno lainnya