Advertisement
Al_Ninyo

key_code_ver1_4

Aug 30th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. /************************
  2.  * Author:
  3.  * Kolpakov Vladimir aka Al'Ninyo
  4.  * http://alninyo.ru
  5.  * 25.04.2016
  6.  ************************/
  7.  
  8. #define greenLed 11 // пин подключения зелёного светодиода
  9. #define redLed 12 // пин подключения красного светодиода
  10. #define push LOW // на какое состояние кнопки реагировать HIGH или LOW
  11. #define relay1 A0 // пин подключения реле 1
  12. #define relay2 A1 // пин подключения реле 2
  13.  
  14. int buttonPins[] = {2,3,4,5,6,7,8}; // пины подключения кнопок
  15. boolean buttonState[] = {0,0,0,0,0,0,0}; // состояние кнопок. 0 = не нажата, 1 = нажата
  16. int rightCode[] = {6,1,2,3,4,5,0}; // правильная последовательность нажатия кнопок
  17. int inputCode[7]; // массив для хранения номеров нажатых кнопок (введённый код)
  18. int c, S; // служебные переменные
  19.  
  20. void setup() {
  21.   Serial.begin(9600);
  22.   for (int i = 0; i < 8; i++) {
  23.     pinMode(buttonPins[i], INPUT);
  24.   }
  25.   pinMode(relay1, OUTPUT);
  26.   pinMode(relay2, OUTPUT);
  27.  
  28.   pinMode(greenLed, OUTPUT);
  29.   pinMode(redLed, OUTPUT);
  30.   digitalWrite(greenLed, LOW);
  31.   digitalWrite(redLed, HIGH);
  32.   digitalWrite(relay1, LOW);
  33. }
  34.  
  35. void loop() {
  36.   for (int i = 0; i < 7; i++) {
  37.     if (digitalRead(buttonPins[i]) == push && buttonState[i] == 0) {
  38.       inputCode[c] = i;
  39.       buttonState[i] = 1;
  40.       digitalWrite(redLed, LOW);
  41.       delay(300);
  42.       digitalWrite(redLed, HIGH);
  43.       c = c+1;
  44.       delay(100);
  45.     }
  46.   }
  47.   if (c == 7) {
  48.     for (int i = 0; i < 7; i++) {
  49.     if (inputCode[i] == rightCode[i]) {
  50.       S = S+1;
  51.     }
  52.     else {
  53.       S = S-1;
  54.     }
  55.   }
  56.   if (S == 7) {
  57.     for (int i = 0; i < 7; i++) {
  58.       buttonState[i] = 0;
  59.       inputCode[i] = 0;
  60.     }
  61.     S = 0;
  62.     c = 0;
  63.     digitalWrite(greenLed, HIGH);
  64.     digitalWrite(redLed, LOW);
  65.     delay(3000); //горит зелёный
  66.     digitalWrite(relay1, HIGH);
  67.     delay(1000);
  68.     digitalWrite(relay1, LOW);
  69.     delay(10000);
  70.     digitalWrite(greenLed, LOW);
  71.     digitalWrite(redLed, HIGH);
  72.  
  73.   } else {
  74.     c = 0;
  75.     S = 0;
  76.     for (int i = 0; i < 5; i++) {
  77.       digitalWrite(redLed, HIGH);
  78.       delay(300);
  79.       digitalWrite(redLed, LOW);
  80.       delay(300);
  81.     }
  82.     digitalWrite(redLed, HIGH);
  83.     delay(5000); //ожидание после неправильного кода
  84.     for (int i = 0; i < 7; i++) {
  85.       buttonState[i] = 0;
  86.       inputCode[i] = 0;
  87.     }
  88.     digitalWrite(greenLed, HIGH);
  89.     delay(500);
  90.     digitalWrite(greenLed, LOW);
  91.   }
  92.   }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement