Advertisement
ChaOSzz

Untitled

Apr 19th, 2022
426
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>  
  2. #include <Keypad.h>
  3. #include <Servo.h>
  4.  
  5. int Open = 90;
  6. int Close = 0;
  7. int a=0, b=0, c=0, d=0, e=0,g=0;
  8. int var=0;
  9. // Код доступа к двери:
  10. const int C1=5,C2=6,C3=7,C4=8,C5=9,C6=0;
  11. char f = '*';
  12. // Клавиатура
  13. const int rows = 4;
  14. const int cols = 4;
  15. char keys[rows][cols] =
  16. {
  17.   {'1','2','3','A'},
  18.   {'4','5','6','B'},
  19.   {'7','8','9','C'},
  20.   {'*','0','#','D'}
  21. };
  22. // Подключение пинов клавиатуры
  23. byte pinrows[rows] = {6, 5, 4, 3};
  24. byte pincols[cols] = {2, 1, 0, 7};
  25.  
  26. int servostate;
  27. Servo myservo;
  28. // Инициализация клавиатуры и экрана
  29. Keypad keypad = Keypad(makeKeymap(keys), pinrows, pincols, rows, cols );
  30. LiquidCrystal lcd(8,9,10,11,12,13);
  31.  
  32. void setup()
  33. {
  34.   lcd.begin(16,2);
  35.   pinMode(A0,OUTPUT);
  36.   pinMode(A1,OUTPUT);
  37.   myservo.attach(7);
  38.   myservo.write(Close);
  39.   servostate = 0;
  40. }
  41.  
  42. void loop()
  43. {  
  44.   char key = keypad.getKey();
  45.   if(key)
  46.   {
  47.    lcd.setCursor(6+var,1);
  48.    lcd.print(key);lcd.setCursor(6+var,1);delay(100);lcd.print(f);
  49.    var++;
  50.   if(key == 'C')
  51.   {
  52.     lcd.clear();
  53.     a=0;b=0;c=0;d=0;e=0;g=0;var=0;
  54.     return;
  55.   }
  56.     key=key-48;
  57.    switch(var)
  58.    {
  59.     case 1:
  60.     a=key;
  61.     break;
  62.     case 2:
  63.     b=key;
  64.     break;
  65.     case 3:
  66.     c=key;
  67.     break;
  68.     case 4:
  69.     d=key;
  70.     break;
  71.     case 5:
  72.     e=key;
  73.     break;
  74.     case 6:
  75.     g=key;
  76.    
  77.    delay(50);
  78.   if(a==C1 && b==C2 && c==C3 && d == C4 && e == C5 && g == C6)
  79.   {
  80.     lcd.clear();
  81.     lcd.setCursor(4,0);
  82.     lcd.print("DOOR");
  83.     lcd.setCursor(5,1);
  84.     if(servostate == 0)
  85.     {
  86.       lcd.print("OPEN");
  87.       myservo.write(Open);
  88.       servostate = 1;    
  89.       digitalWrite(A0,HIGH);
  90.       delay(5000);
  91.       digitalWrite(A0,LOW);
  92.       lcd.clear();
  93.       lcd.print("DOOR ");
  94.       lcd.print("CLOSING...");
  95.       myservo.write(Close);
  96.       servostate = 0;  
  97.       digitalWrite(A1,HIGH);
  98.       delay(2000);
  99.       digitalWrite(A1,LOW);
  100.     }
  101.    
  102.     digitalWrite(A1,HIGH);
  103.     delay(1000);
  104.     lcd.clear();
  105.     digitalWrite(A1,LOW);
  106.     }
  107.     else
  108.     {
  109.         lcd.clear();
  110.         lcd.setCursor(4,0);
  111.         lcd.print("PASSWORD");
  112.         lcd.setCursor(4,1);
  113.         lcd.print("INVALID");
  114.         digitalWrite(A1,HIGH);
  115.         delay(1000);
  116.         lcd.clear();
  117.         digitalWrite(A1,LOW);
  118.     }
  119.     var=0;
  120.     lcd.clear();
  121.    break;
  122.   }
  123.  }
  124.  if(!key)
  125.  {
  126.    lcd.setCursor(0,0),lcd.print("WELCOME");
  127.  }
  128.   delay(2);
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement