Небольшая проблема на пути великого (первого) проекта.
В общем, я решил сделать электронный замок, но не понимаю как разобраться с 2 моментами, которые возникли.
1. Функция, как я понимаю, не видит массив мой, хотя он глобально задан.
Но также, если его объявить внутри функции оказывается, что getKey() тоже не работает, потому что оно не объявлено внутри функции. Как это работает? Я вроде просмотрел многие уроки и форумы, но подробнее про работу функций\массивов не нашел, только обрывки на итальянских форумах. Не знаю, может в моем понимание проблема, но можете помочь разобраться с этим?
2. С клавиатуры возвращается char, а мне ведь нужен int. Я вроде бы видел как это делать, просто прописывать к переменной -'0', но сработает ли это в данном случае? Я вот не уверен. Ну там конечно надо учесть, что у меня может быть нажата кнопка A/B/C/D, но мне сейчас просто разобраться бы с этим.
Надеюсь в этот раз получится...
Я начинающий, как видите, так что может это вовсе не проблемы. Я просто не нашел их решение и решил обратиться, вот.
Спасибо.
В общем, я решил сделать электронный замок, но не понимаю как разобраться с 2 моментами, которые возникли.
1. Функция, как я понимаю, не видит массив мой, хотя он глобально задан.
Но также, если его объявить внутри функции оказывается, что getKey() тоже не работает, потому что оно не объявлено внутри функции. Как это работает? Я вроде просмотрел многие уроки и форумы, но подробнее про работу функций\массивов не нашел, только обрывки на итальянских форумах. Не знаю, может в моем понимание проблема, но можете помочь разобраться с этим?
2. С клавиатуры возвращается char, а мне ведь нужен int. Я вроде бы видел как это делать, просто прописывать к переменной -'0', но сработает ли это в данном случае? Я вот не уверен. Ну там конечно надо учесть, что у меня может быть нажата кнопка A/B/C/D, но мне сейчас просто разобраться бы с этим.
Надеюсь в этот раз получится...
Я начинающий, как видите, так что может это вовсе не проблемы. Я просто не нашел их решение и решил обратиться, вот.
Спасибо.
C++:
#include <TroykaButton.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
int Pass [8]; //Массивы для проверки.
int Check [8];
LiquidCrystal_I2C lcd(0x3F,16,2); //Экран.
TroykaButton button(13); //Кнопка.
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'}
};
byte colPins[COLS] = {7, 6, 5, 4};
byte rowPins[ROWS] = {11,10, 9, 8};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
button.begin();
lcd.init();
lcd.backlight();
Pass [0]=1; Pass [1]=1; Pass [2]=1; Pass [3]=1; Pass [4]=1; Pass [5]=1; Pass [6]=1; Pass [7]=1;
TroykaButton button(13);
}
void loop() {
button.read();
if (button.isHold()) {
Serial.println("Key on long press");
boolean Checking = pass_check ();
if (Checking == 1) {Serial.println("Verno");} else {Serial.println("Neverno");}
}
}
boolean pass_check () //Должно проверить и вернуть логическое значение в зависимости от результата проверки введенных значений.
{int Number = 0;
for(int i = 0; i < 9; i++) {pass[i] = getKey();}
for(int i = 0; i < 9; i++) {if (Pass[i]==Check[i]){Number=Number+1;}}
If (Number == 8) {return 1;} else {return 0;}
}