21ani

keypadp

Jun 24th, 2020
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.30 KB | None | 0 0
  1.  
  2.  
  3. #include <EEPROM.h>
  4. #include <Keypad.h>
  5. //#include <LiquidCrystal.h>
  6. #include <LiquidCrystal_I2C.h>
  7.  
  8. //LiquidCrystal lcd(7,6,5,4,3,2);
  9. LiquidCrystal_I2C lcd(0x27, 16, 2);
  10.  
  11.  
  12. const int BARIS = 4;
  13. const int KOLOM = 4;
  14. char tombol[BARIS][KOLOM] = {
  15.   {1,  2,  3, 'A'},
  16.   {4,  5,  6, 'B'},
  17.   {7,  8,  9, 'C'},
  18.   {'*',0, '#','D'}
  19. };
  20.  
  21. byte pinBaris [BARIS] = {11,9,8,7};
  22. byte pinKolom [KOLOM] = {6,5,4,3};
  23.  
  24. Keypad keypad = Keypad(makeKeymap(tombol),pinBaris, pinKolom, BARIS,KOLOM);
  25.  
  26. bool mode1=true; //digunakan untuk
  27. bool mode2=false;
  28. bool modeLampu = true;
  29. bool on=LOW;
  30. bool off=HIGH;
  31. const int relay=A3;
  32. long dtTombol=0; //menampung variabel tombol yg ditekan
  33.  
  34. void setup() {
  35.   Serial.begin(9600);
  36.   pinMode(relay,OUTPUT);
  37.   digitalWrite(relay,off);
  38.   lcd.begin();
  39.   Serial.println(EEPROM.read(0));
  40.   cekKeamanan("User ID", EEPROM.read(0));
  41.   mode1=true;
  42.   cekKeamanan("Password", EEPROM.read(1));
  43.   mode1=true;
  44.   lcd.clear();
  45.   lcd.setCursor(5,0);
  46.   lcd.print("Akses");
  47.   lcd.setCursor(3,1);
  48.   lcd.print("diijinkan");
  49.   lcd.clear();
  50.   lcd.setCursor(0,0);
  51.   lcd.print("Loading.");
  52.   delay(700);
  53.   for(int i=1; i<=5; i++){
  54.     lcd.setCursor(i+7,0);
  55.     lcd.print(".");
  56.     delay(700);
  57.   }
  58.  
  59.  
  60. }
  61.  
  62. void loop() {
  63.   char key=keypad.getKey();
  64.   if(key){
  65.     if(key=='A'){
  66.       digitalWrite(relay,off);
  67.       cekKeamanan("Password lama :", EEPROM.read(1));
  68.       mode1=true;
  69.       mode2=true;
  70.       cekKeamanan("Password baru :", EEPROM.read(1));
  71.       mode2=false;
  72.       mode1=true;
  73.     }
  74.  
  75.      if(key=='B'){
  76.       modeLampu = !modeLampu;
  77.     }
  78.      
  79.   }
  80.   if(modeLampu){
  81.     digitalWrite(relay,on);
  82.      lcd.setCursor(0,0);
  83.   lcd.print("Anda berada di");
  84.   lcd.setCursor(0,1);
  85.   lcd.print("dalam system...");
  86.   }else{
  87.     digitalWrite(relay,off);
  88.     lcd.clear();
  89.     lcd.setCursor(0,0);
  90.     lcd.print("Berhasil keluar");
  91.   }
  92.  
  93. }
  94.  
  95. void cekKeamanan(String str, byte data){
  96.   lcd.clear();
  97.   dtTombol=0;
  98.   lcd.setCursor(0,0);
  99.   lcd.print(str);
  100.   while(mode1){
  101.     char key = keypad.getKey();
  102.     if(key){
  103.       if(key == 'D'){
  104.         if(mode2){
  105.           EEPROM.write(1,dtTombol);
  106.           lcd.setCursor(0,0);
  107.           lcd.print("Password          ");
  108.           lcd.setCursor(0,1);
  109.           lcd.print("diperbaharui");
  110.           for(int i=1; i<=3; i++){
  111.             lcd.setCursor(i+11,1);
  112.             lcd.print(".");
  113.             delay(700);
  114.           }
  115.           mode1=false;
  116.         }
  117.         if(!mode2){
  118.           if(dtTombol==data){
  119.             mode1=false;
  120.           }else{
  121.             lcd.setCursor(0,1);
  122.             lcd.print("     invalid");
  123.             delay(1500);
  124.             cekKeamanan(str,data);
  125.           }
  126.         }
  127.       }else{
  128.         if(key!='A' && key!='B' && key!='C' && key!='#'){
  129.           if(key=='*'){
  130.             dtTombol=(dtTombol-dtTombol%10)/10;
  131.             lcd.setCursor(0,1);
  132.             lcd.print("                 ");
  133.           }else{
  134.             dtTombol=dtTombol*10+key;
  135.           }
  136.           lcd.setCursor(0,0);
  137.           lcd.print(str);
  138.           lcd.setCursor(0,1);
  139.           lcd.print(dtTombol);
  140.         }    
  141.       }    
  142.     }
  143.   }
  144. }
  145.  
  146. //void keluar(){
  147. //  digitalWrite(relay,off);
  148. //  lcd.clear();
  149. //      lcd.setCursor(0,0);
  150. //      lcd.print("Berhasil keluar sistem.");
  151. //}
  152. //
Add Comment
Please, Sign In to add comment