Пароль на вход и на выход из "программы"
- Войдите на сайт для отправки комментариев
Втр, 12/06/2018 - 11:19
Доброго времени суток. Я новичок в Arduino, поэтому заранее прошу прошения. Есть простенький код, по сути он работает, только вот не могу настроить выход из нее по вводу пароля. Кряк кода, если зажать цифру боль 3х, Он обратно идет к вводу пароля. Юыло-бы больше времени, возможно и сам дошел, но скоро сдавать :(
Прощу вашей помощи!
ЗЫ. Потом подключу GSM модуль (sw m590e), он вроде нормально работает )
#include <Password.h> #include <Keypad.h> //#include <SoftwareSerial.h> Password password = Password( "2244" ); const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1', '2', '3', 'A'}, // 0 {'4', '5', '6', 'B'}, // 1 {'7', '8', '9', 'C'}, // 2 {'*', '0', '#', 'D'} // 3 }; byte rowPins[ROWS] = { 11, 10, 9, 8 }; byte colPins[COLS] = { 7, 6, 5, 4, }; //SoftwareSerial gsm(7, 8); // RX, TX Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int motion = 51; // датчик движения int rs = 2; // геркон ИО int rs2 = 3; // геркон ИО int buzzer = 50; //сигнализация int led = 40; // диод int led2 = 41; // диод void setup() { Serial.begin(9600); keypad.addEventListener(keypadEvent); pinMode(buzzer, OUTPUT); pinMode(rs, INPUT); pinMode(rs2, INPUT); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); pinMode(motion, INPUT); } void loop() { keypad.getKey(); char eKey; } void keypadEvent(KeypadEvent eKey) { switch (keypad.getState()) { case PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey) { // Кейс case '*': checkPassword(); break; case '#': password.reset(); break; default: password.append(eKey); } } } void checkPassword() { if (password.evaluate()) { Serial.println("Success"); while (password.evaluate()) { /*if (zKey == 2) { Serial.println("Выход"); break; }*/ Serial.println(keypad.getKey ()); //Serial.parseInt(); //Keypad.println(); //Serial.println(keypad.getState()); Serial.println("Система вкл"); /*digitalWrite(buzzer, 500); delay (300); digitalWrite(buzzer, 0);*/ delay (300); if (digitalRead(rs) == LOW) { Serial.println("ROOM 1"); digitalWrite(led, HIGH); digitalWrite(buzzer, 500); delay (300); } if (digitalRead(rs2) == LOW) { Serial.println("ROOM 2"); digitalWrite(led2, HIGH); digitalWrite(buzzer, 500); delay (500); } if (digitalRead(motion) == HIGH) { digitalWrite(buzzer, 500); digitalWrite(led2, HIGH); Serial.println("Motion on"); } } digitalWrite(buzzer, 0); digitalWrite(led, LOW); digitalWrite(led2, LOW); } else { Serial.println("Wrong"); digitalWrite(buzzer, 500); delay (300); digitalWrite(buzzer, 0); } }
Юыло-бы больше времени, возможно и сам дошел, но скоро сдавать :(
А чё тянул до самой сессии? Начал бы раньше и доходил бы. А теперь топай в профильный раздел и заказывай за бабки. Дурака (или дур) валял весь семестр, теперь плати. Делать бесплатно задания для бездельников здесь не принято.
Я не прошу сделать. Хотелось бы просто понять.
На саммом деле, то, что уже есть слихвой подходит для сдачи, просто мой внутренный перфекционизм хотел бы доделать.
Меня очень зацепило ваше "Дурака (или дур) валял весь семестр". Вы же не знаете, что на самом деле у меня тут происходит. Как по мне, такие высказывания являются не уместными и не много оскорбительными.
Только я один не понял, кто, как и куда должен выйти из программы по нажатию?
Возможно, моя вина. Сейчас попробую объяснить.
Код программы я разбил на несколько слоев:
1. Ввод пароля.
1.1 Выполнение "тела" кода.
1.2 Ввод пароля.
1.2.1 Переход к 1п.
И зачем все это?
Будущий специалист в сфере безопасности?
Почему Вы так решили? :)
Потому, что при повсеместной реализации "платы за вход" тем не менее "плата за выход" остается лишь в области анекдотов. Соответственно, к тем, кто на полном серьезе решает воплотить ее в жизнь, отношение особенное.
Вы правы. Я написал ни много не корректно. Я имел ввиду вот эту часть: