Здравствуйте, дело вот в чем, хотелось бы сделать замок с двойной защитой (rfid карта и проверка пароля).
В программировании не силен и не могу понять в чем ошибка. Уже перепробовал кучу разных вариантов кода. Остановился на этом "быдло-коде".
Сделал так, что бы ввод пароля или проверка метки производились в любой момент, а потом отдельно проверялись, но ничего не выводится после правильного ввода пароля.
#include <Keypad.h>
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h> // библиотека "RFID".
#define SS_PIN 10
#define RST_PIN 9
int tar; //переменная для перебора
char* password = "147923"; //пароль
const byte ROWS = 4; //кол-во строк у клавы
const byte COLS = 4; // кол-во столбцов
char keys [ROWS] [COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
int klavishi; //для проверки пароля
int karta; //для проверки карты
byte rowPins[ROWS] = {16,17,18,19}; //куда подкл
byte colPins[COLS] = {7,6,5,4};
// создаем клаву
Keypad klava = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
MFRC522 metka(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате
void setup() {
Serial.begin(9600);
while (!Serial);
SPI.begin();
metka.PCD_Init();
Serial.println("Please enter password");
karta = 0;
klavishi = 0;
tar = 0;
}
void loop() {
//ввод пароля
char key = klava.getKey();
if (key){
Serial.print('*');
if (key == password[tar]){
tar ++;
if (tar == 6){
klavishi = 1; //если пароль правильный
}
}
}
{
//проверка метки
if ( ! metka.PICC_IsNewCardPresent() || ! metka.PICC_ReadCardSerial() ){
return;
}
}
int x=0;
uidDec = 0;
// Выдача серийного номера метки.
for (byte i = 0; i < metka.uid.size; i++)
{
uidDecTemp = metka.uid.uidByte[i];
uidDec = uidDec * 256 + uidDecTemp;
}
if (uidDec == 2868417909){
karta = 1;
}
}
//совмещение метки и пароля
void sborka(){
if (klavishi == 1){
Serial.println(" correct password");
Serial.println("insert card");
if (karta == 1) {
Serial.println(" dostup razreshen");
delay (10000);
karta = 0;
klavishi = 0;
tar = 0;
Serial.println("Please enter password");
}
}
}