Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************
- * Author:
- * Kolpakov Vladimir aka Al'Ninyo
- * http://alninyo.ru
- * 25.04.2016
- ************************/
- #define greenLed 11 // пин подключения зелёного светодиода
- #define redLed 12 // пин подключения красного светодиода
- #define push LOW // на какое состояние кнопки реагировать HIGH или LOW
- #define relay1 A0 // пин подключения реле 1
- #define relay2 A1 // пин подключения реле 2
- int buttonPins[] = {2,3,4,5,6,7,8}; // пины подключения кнопок
- boolean buttonState[] = {0,0,0,0,0,0,0}; // состояние кнопок. 0 = не нажата, 1 = нажата
- int rightCode[] = {6,1,2,3,4,5,0}; // правильная последовательность нажатия кнопок
- int inputCode[7]; // массив для хранения номеров нажатых кнопок (введённый код)
- int c, S; // служебные переменные
- void setup() {
- Serial.begin(9600);
- for (int i = 0; i < 8; i++) {
- pinMode(buttonPins[i], INPUT);
- }
- pinMode(relay1, OUTPUT);
- pinMode(relay2, OUTPUT);
- pinMode(greenLed, OUTPUT);
- pinMode(redLed, OUTPUT);
- digitalWrite(greenLed, LOW);
- digitalWrite(redLed, HIGH);
- digitalWrite(relay1, LOW);
- }
- void loop() {
- for (int i = 0; i < 7; i++) {
- if (digitalRead(buttonPins[i]) == push && buttonState[i] == 0) {
- inputCode[c] = i;
- buttonState[i] = 1;
- digitalWrite(redLed, LOW);
- delay(300);
- digitalWrite(redLed, HIGH);
- c = c+1;
- delay(100);
- }
- }
- if (c == 7) {
- for (int i = 0; i < 7; i++) {
- if (inputCode[i] == rightCode[i]) {
- S = S+1;
- }
- else {
- S = S-1;
- }
- }
- if (S == 7) {
- for (int i = 0; i < 7; i++) {
- buttonState[i] = 0;
- inputCode[i] = 0;
- }
- S = 0;
- c = 0;
- digitalWrite(greenLed, HIGH);
- digitalWrite(redLed, LOW);
- delay(3000); //горит зелёный
- digitalWrite(relay1, HIGH);
- delay(1000);
- digitalWrite(relay1, LOW);
- delay(10000);
- digitalWrite(greenLed, LOW);
- digitalWrite(redLed, HIGH);
- } else {
- c = 0;
- S = 0;
- for (int i = 0; i < 5; i++) {
- digitalWrite(redLed, HIGH);
- delay(300);
- digitalWrite(redLed, LOW);
- delay(300);
- }
- digitalWrite(redLed, HIGH);
- delay(5000); //ожидание после неправильного кода
- for (int i = 0; i < 7; i++) {
- buttonState[i] = 0;
- inputCode[i] = 0;
- }
- digitalWrite(greenLed, HIGH);
- delay(500);
- digitalWrite(greenLed, LOW);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement