#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#define TINGGI_LAYAR 64 // Tinggi layar OLED yang digunakan
#define LEBAR_LAYAR 128 // Lebar layar OLED yang digunakan
const byte ROWS = 4; // Jumlah baris keypad
const byte COLS = 4; // Jumlah kolom keypad
Adafruit_SSD1306 oled ( LEBAR_LAYAR, TINGGI_LAYAR, &Wire, -1 );
char Keys [ ROWS ] [ COLS ] = { // Membuat array keypad
( '1' , '2' , '3' , 'A' ) ,
( '4' , '5' , '6' , 'B' ) ,
( '7' , '8' , '9' , 'C' ) ,
( '*' , '0' , '#' , 'D' ) };
byte rowPins [ ROWS ] = { 14 , 12 , 19 , 18 };
byte colPins [ COLS ] = { 5 , 4 , 2 , 15 };
Keypad customKeypad = Keypad ( makeKeymap ( Keys ) , rowPins , colPins , ROWS , COLS );
char customKey; // Variabel penampung input keypad
int number = 0; // Variabel penampung nilai angka
int password = 1379; // Password
void setup ( ) {
Serial.begin ( 9600 );
// initialize OLED display with 12C address 0x3c
if ( !oled.begin ( SSD1306_SWITCHCAPVCC , 0x3C ) ) {
Serial.println ( F ( "failed to start SSD1306 OLED" ) );
while ( 1 );
}
oled.clearDisplay ( );
oled.setTextSize ( 1 ); // Atur ukuran text
oled.setTextColor ( WHITE ); // Atur warna text
oled.setCursor ( 20 , 20 ); // Atur posisi text pada display
oled.println ( "SELAMAT DATANG" ); // Text yang dicetak
delay ( 2000 );
oled.display ( );
oled.clearDisplay(); // menampilkan display OLED
}
void loop() {
oled.setTextSize ( 1 );
oled.setTextColor ( WHITE );
oled.setCursor ( 0 , 0 );
oled.print( "Input Password" ); // Tampilan pada layar
customKey = customKeypad.getKey ( ) ; // Baca input keypad
//-Prosedur jika input berupa angka--
switch ( customKey ) {
case '0' ... '9' :
oled.setTextSize ( 1 );
oled.setTextColor ( WHITE );
oled.setCursor ( 0,10 );
number = number * 10 + ( customKey - '0' );
oled.print ( number );
oled.display ( );
oled.clearDisplay ( );
break;
//-- Jika input ' # ' maka cek password ---
case ' # ' :
if(number == password) { // Jika password benar , maka
oled.setTextSize ( 1 );
oled.setTextColor ( WHITE );
oled.setCursor ( 0,10 );
oled.print ( "Access Accepted" ) ; // Tampilan LCD
number = 0;
oled.display ( );
oled.clearDisplay ( );
}
else { // Jika salah , maka
oled.setTextSize( 1 );
oled.setTextColor( WHITE );
oled.setCursor ( 0,10 );
oled.print ( " nvalid Password" ); // Tampilan LCD
oled.display ( );
delay ( 2000 );
number = 0;
oled.clearDisplay ( );
break;
// Jika input '*' maka hapus tampilan--
case '*':
number = 0;
oled.clearDisplay ( );
break;
}
}}
Loading
ssd1306
ssd1306