Кодовый замок с матричной клавиатурой

a2kuz
Offline
Зарегистрирован: 17.04.2017
#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(); //сброс переменной пароля после некорректного ввода
    }
} 

Здравствуйте подскажите как добавить второе реле с другим паролем.
так чтоб при введение одного пароля сработало одно реле, а с другим паролем другое. Спасибо.

 

b707
Offline
Зарегистрирован: 26.05.2017

a2kuz пишет:

Здравствуйте подскажите как добавить второе реле с другим паролем.

так чтоб при введение одного пароля сработало одно реле, а с другим паролем другое. Спасибо.

В том скетче, что Вы привели - этого нет. Ищите функцию password.evaluate() в подключенных библиотеках (скорее всего она описана в Password.h) и изучайте, как в нее добавить второй пароль.

a2kuz
Offline
Зарегистрирован: 17.04.2017

b707 пишет:

a2kuz пишет:

Здравствуйте подскажите как добавить второе реле с другим паролем.

так чтоб при введение одного пароля сработало одно реле, а с другим паролем другое. Спасибо.

В том скетче, что Вы привели - этого нет. Ищите функцию 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

 

b707
Offline
Зарегистрирован: 26.05.2017

Это так называемый заголовочный файл - header - .h. Тут только обьявление функции, без кода. Код функции содержится в файле Password.c или Password.cpp. Если он не слишком длинный - можете сюда запостить (лучше свернуть под спойлер), посмотрим, что там внутри. 

Но вообще настраивайтесь на то, что придется разбираться самому. Форум может дать ответы на какие-то конкретные вопросы, помочь решить четко обозначенные проблемы. Если же вы приходите  с неконкретными словами типа "я новичок, понимаю далеко не все, помогите" - вряд ли кто-то станет тратить время, чтобы обьяснять вам с нуля.

strarbit
Offline
Зарегистрирован: 12.06.2016

Просто создайте еще один Password password1 = Password( "4321" ) и проверяейте его тоже