Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <Keypad.h>
  2.  
  3. int LED_CLOSE = 11; // červená LED
  4. int LED_OPEN = 12; // zelená LED
  5.  
  6.  
  7. const byte ROWS = 4; // 4 řádky
  8. const byte COLS = 4; // 4 sloupce
  9.  
  10. // sem se budou ukládat stiskuté znaky
  11. char pressedKey[5] = {'0','0','0','0'};
  12. // náš kód pro otevření dveří
  13. char code[5] = {'1','9','4','7'};
  14.  
  15.  
  16. // zde si napíšete jak Vaše
  17. // membránová klávesnice vypadá
  18. char hexaKeys[ROWS][COLS] = {
  19.   {'1','2','3','A'},
  20.   {'4','5','6','B'},
  21.   {'7','8','9','C'},
  22.   {'*','0','#','D'}
  23. };
  24. byte rowPins[ROWS] = {9, 8, 7, 6}; //čísla pinů s řadkem 1 2 3 4
  25. byte colPins[COLS] = {5, 4, 3, 2}; //čísla pinu se sloupcem 1 2 3 4
  26.  
  27. //initializuje objekt klávesnice s názvem customKeypad
  28. Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
  29.  
  30. void setup(){
  31.   pinMode(LED_OPEN, OUTPUT); // pin jako výstup
  32.   pinMode(LED_CLOSE, OUTPUT); // pin jako výstup
  33.  
  34.   digitalWrite(LED_CLOSE, HIGH); // rozsvítí červenou
  35. }
  36.  
  37. void loop(){
  38.   // přečte stiskuté tlačítko a uloží do customKey
  39.   char customKey = customKeypad.getKey();
  40.  
  41.   if (customKey){
  42.     // když je stisknuto potvrzovací tlačítko #
  43.     if (customKey == '#')
  44.     {
  45.     // když se pole kódu rovná poli stiskutých talčítek
  46.       if ((pressedKey[0] == code[0]) && (pressedKey[1] == code[1]) && (pressedKey[2] == code[2]) && (pressedKey[3] == code[3]))
  47.         {
  48.          
  49.           digitalWrite(LED_CLOSE, LOW); // zhasni červenou
  50.           digitalWrite(LED_OPEN, HIGH); // rozsvit zelenou
  51.           tone(10,2400,4000); // zahraj tón na pinu 10 (2400Hz, 4sec)
  52.           delay(4000); // čekej 4 sekundy
  53.           digitalWrite(LED_OPEN, LOW); // zhasni zelenou
  54.           digitalWrite(LED_CLOSE, HIGH); // zhasni červenou
  55.           // vynuluj stiskuté tlačítka
  56.           pressedKey[0] = '0';
  57.           pressedKey[1] = '0';
  58.           pressedKey[2] = '0';
  59.           pressedKey[3] = '0';
  60.         }
  61.     // jinak přo špatném kódu zahraj jiný tón a nic nedělej
  62.     else tone(10,500,1000); //tón na pinu 10 (500Hz, 1 vteřina)      
  63.     }
  64.    
  65.     // když není stisknuto potvrzovací tlačítko #
  66.      else
  67.     {
  68.    
  69.     //přidej znak do pole a znaky posuň
  70.     pressedKey[0] = pressedKey[1];
  71.     pressedKey[1] = pressedKey[2];
  72.     pressedKey[2] = pressedKey[3];
  73.     pressedKey[3] = customKey;  
  74.  
  75.     // zahraje tón při stisku tlačítka
  76.     tone(10,1200,80);
  77.     }
  78. }
  79. }