Advertisement
Guest User

Untitled

a guest
May 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. #define BUZZER 11
  2. #define KONTAKTRON 10
  3. #define PIR 1
  4.  
  5. #include <Keypad.h> //biblioteka od klawiatury
  6. #include <Adafruit_NeoPixel.h> //biblioteka od linijki LED
  7. char klawisz = 0;
  8. const byte ROWS = 4; // ile wierszy
  9. const byte COLS = 4; //ile kolumn
  10.  
  11. int pinAlarmuPozycja = 1;
  12. char pinCyfra1 = '1';
  13. char pinCyfra2 = '2';
  14. char pinCyfra3 = '3';
  15. char pinCyfra4 = '4';
  16.  
  17. byte rowPins[ROWS] = {5, 4, 3, 2}; //piny wierszy
  18. byte colPins[COLS] = {6, 7, 8, 9}; //piny kolumn
  19.  
  20. int ileCzasuMinelo = 0;
  21. char keys[ROWS][COLS] = { //mapowanie klawiatury
  22. {'1','2','3','A'},
  23. {'4','5','6','B'},
  24. {'7','8','9','C'},
  25. {'*','0','#','D'}
  26. };
  27.  
  28. Keypad klawiatura = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //inicjalizacja klawiatury
  29. Adafruit_NeoPixel linijka = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800); //konfiguracja linijki LED
  30.  
  31. volatile int stanAlarmu = 1;
  32.  
  33. void setup() {
  34. pinMode(BUZZER, OUTPUT);
  35. pinMode(KONTAKTRON, INPUT_PULLUP);
  36. pinMode(PIR, INPUT_PULLUP);
  37.  
  38. linijka.begin(); //inicjalizacja linijki
  39. linijka.show();
  40. }
  41.  
  42. void loop() {
  43.  
  44. switch(stanAlarmu) { //Wykonywania akcji odpowiedniej dla danego stanu
  45. case 1:
  46. //Czuwanie
  47. for(int i =0;i<8;i++){
  48. linijka.setPixelColor(i, linijka.Color(0, 15, 0)); //Dioda nr 1 świeci na zielono
  49. }
  50. linijka.show();
  51. klawisz = klawiatura.getKey();
  52.  
  53. if (klawisz == 'A') { //Czy uzbroic alarm?
  54. for (int k=0;k<8;k++){
  55. for(int i =0;i<8;i++){
  56.  
  57. linijka.setPixelColor(i, linijka.Color(0, 15, 0)); //Dioda nr 1 świeci na zielono
  58. }
  59.  
  60. linijka.show();
  61. delay(500);
  62. for(int i =0;i<8;i++){
  63. linijka.setPixelColor(i, linijka.Color(0, 0, 0)); //Dioda nr 1 świeci na zielono
  64. }
  65. linijka.show();
  66. delay(500);
  67.  
  68. }
  69. stanAlarmu = 2;
  70. }
  71.  
  72.  
  73. break;
  74.  
  75. case 2:
  76. //Monitorowanie
  77. for(int i =0;i<8;i++){
  78. linijka.setPixelColor(i, linijka.Color(15, 0, 0)); //Dioda nr 1 świeci na czerw
  79. }
  80. linijka.show();
  81. delay(100);
  82. for(int i =0;i<8;i++){
  83. linijka.setPixelColor(i, linijka.Color(0, 0, 0)); //Dioda nr 1 świeci na czwerw
  84. }
  85. linijka.show();
  86. delay(100);
  87.  
  88. if (digitalRead(PIR) == HIGH ) {
  89. if (digitalRead(KONTAKTRON) == LOW){
  90. stanAlarmu = 4; //Natychmiast uruchamiamy alarm
  91. }
  92. else {
  93. ileCzasuMinelo= 0; //Zerowanie zmiennej
  94. stanAlarmu = 3;}
  95. }
  96.  
  97. /* else if (digitalRead(KONTAKTRON) == HIGH) { //LOW - drzwi zamkniete
  98. stanAlarmu = 3; //Szansa na rozbrojenie
  99. }*/
  100.  
  101. break;
  102.  
  103. case 3:
  104. //Rozbrajanie
  105. klawisz = klawiatura.getKey();
  106. if (klawisz) {
  107. //Czy kolejna podana cyfra jest poprawna?
  108. if (pinAlarmuPozycja == 1 && klawisz == pinCyfra1) { //Jesli sprawdzamy 1 pozycje PINu
  109. pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna
  110. tone(BUZZER, 1200, 100);
  111. } else if (pinAlarmuPozycja == 2 && klawisz == pinCyfra2) { //Jesli sprawdzamy 2 pozycje PINu
  112. pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna
  113. tone(BUZZER, 1200, 100);
  114. } else if (pinAlarmuPozycja == 3 && klawisz == pinCyfra3) { //Jesli sprawdzamy 3 pozycje PINu
  115. pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna
  116. tone(BUZZER, 1200, 100);
  117. } else if (pinAlarmuPozycja == 4 && klawisz == pinCyfra4) { //Jesli sprawdzamy 4 pozycje PINu
  118. tone(BUZZER, 1500, 500);
  119.  
  120. stanAlarmu = 1; //Wszystkie 4 cyfry kodu sa poprawne
  121.  
  122. } else {
  123. stanAlarmu = 4; //Blad w kodzie PIN - wlacz alarm
  124. }
  125. }
  126.  
  127. delay(100);
  128. ileCzasuMinelo++;
  129.  
  130. if (ileCzasuMinelo >= 50) {
  131. stanAlarmu = 4;
  132. }
  133. break;
  134.  
  135. case 4:
  136. //Sygnalizacja alarmu
  137.  
  138. for (int i = 0; i < 8; i++) {
  139. linijka.setPixelColor(i, linijka.Color(255, 0, 0)); //Dioda nr i świeci na czerwono
  140. }
  141. linijka.show();
  142. tone(BUZZER, 4300);
  143. delay(300);
  144.  
  145. for (int i = 0; i < 8; i++) {
  146. linijka.setPixelColor(i, linijka.Color(0, 0, 255)); //Dioda nr i świeci na niebiesko
  147. }
  148. linijka.show();
  149. tone(BUZZER, 3300);
  150. delay(300);
  151.  
  152. for (int i = 0; i < 8; i++) {
  153. linijka.setPixelColor(i, linijka.Color(0, 255, 0)); //Dioda nr i świeci na czerwono
  154. }
  155. linijka.show();
  156. tone(BUZZER, 5300);
  157. delay(300);
  158.  
  159. break;
  160. }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement