Кодовый замок с матричной клавиатурой
- Войдите на сайт для отправки комментариев
Чт, 27/07/2017 - 12:03
#include <Keyboard.h>
#include <Keypad.h> // Подключаем библиотеки
#include <Password.h>
Password password = Password( "1234" );
const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
//устанавливаем пины столбцов и рядов
byte rowPins[ROWS] = {12,11, 10, 9};
byte colPins[COLS] = {8, 7, 6, 5};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define ledPin 13
void setup(){
digitalWrite(ledPin, LOW); // исполнительный пин
Serial.begin(9600);
keypad.addEventListener(keypadEvent); //добавляем событие
keypad.setDebounceTime(250);
}
void loop(){
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '#': guessPassword(); break;
default:
password.append(eKey);
}
}}
void guessPassword(){
Serial.print("Guessing password... ");
if (password.evaluate()){
digitalWrite(ledPin,HIGH); //активация реле на 5 секунд
delay(5000);
digitalWrite(ledPin,LOW); //отключение реле
Serial.println("VALID PASSWORD "); //
password.reset(); //сброс переменной пароля после корректного ввода
}else{
digitalWrite(ledPin,LOW);
Serial.println("INVALID PASSWORD ");
password.reset(); //сброс переменной пароля после некорректного ввода
}
}
Здравствуйте подскажите как добавить второе реле с другим паролем.
так чтоб при введение одного пароля сработало одно реле, а с другим паролем другое. Спасибо.
Здравствуйте подскажите как добавить второе реле с другим паролем.
так чтоб при введение одного пароля сработало одно реле, а с другим паролем другое. Спасибо.
В том скетче, что Вы привели - этого нет. Ищите функцию password.evaluate() в подключенных библиотеках (скорее всего она описана в Password.h) и изучайте, как в нее добавить второй пароль.
Здравствуйте подскажите как добавить второе реле с другим паролем.
так чтоб при введение одного пароля сработало одно реле, а с другим паролем другое. Спасибо.
В том скетче, что Вы привели - этого нет. Ищите функцию password.evaluate() в подключенных библиотеках (скорее всего она описана в Password.h) и изучайте, как в нее добавить второй пароль.
я бы с радосью стал изучать если бы кто помог) я только начинаю юзать ардуино. и понимаю далеко не все.
ниже password.h
#ifndef PASSWORD_H #define PASSWORD_H // Arduino versioning. #if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" // for digitalRead, digitalWrite, etc #else #include "WProgram.h" #endif #define MAX_PASSWORD_LENGTH 20 #define STRING_TERMINATOR '\0' class Password { public: Password(char* pass); void set(char* pass); bool is(char* pass); bool append(char character); void reset(); bool evaluate(); //char* getPassword(); //char* getGuess(); //operators Password &operator=(char* pass); bool operator==(char* pass); bool operator!=(char* pass); Password &operator<<(char character); private: char* target; char guess[ MAX_PASSWORD_LENGTH ]; byte currentIndex; }; #endifЭто так называемый заголовочный файл - header - .h. Тут только обьявление функции, без кода. Код функции содержится в файле Password.c или Password.cpp. Если он не слишком длинный - можете сюда запостить (лучше свернуть под спойлер), посмотрим, что там внутри.
Но вообще настраивайтесь на то, что придется разбираться самому. Форум может дать ответы на какие-то конкретные вопросы, помочь решить четко обозначенные проблемы. Если же вы приходите с неконкретными словами типа "я новичок, понимаю далеко не все, помогите" - вряд ли кто-то станет тратить время, чтобы обьяснять вам с нуля.
Просто создайте еще один Password password1 = Password( "4321" ) и проверяейте его тоже