#include <SevSeg.h>
#include <Keypad.h>
#include <IniFile.h>
#include <SD.h>
SevSeg Sveg;
static int result;
int password = 1;
const byte rows = 4;
const byte cols = 3;
byte rowPins[rows] = {A15, A14, A13, A12};
byte colPins[cols] = {A11, A10, A9};
char keys[rows][cols] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
Keypad KP(*keys, rowPins, colPins, rows, cols);
void setup() {
Serial.begin(115200);
SD.begin();
IniFile ini("\settings.txt");
const size_t bufLen = 100;
char buf[bufLen];
if (ini.open() && ini.validate(buf, bufLen)) {
ini.getValue("my_password", "password", buf, bufLen, password);
ini.close();
}
Serial.println(password);
byte hardwareConfig = COMMON_CATHODE;
byte numDigits = 4;
byte digitPins[] = {19, 18, 17, 20};
byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
bool resistorsOnSegments = true;
bool updateWithDelays = false;
bool leadingZeros = false;
bool disableDecPoint = false;
Sveg.begin(hardwareConfig, numDigits, digitPins,
segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros,
disableDecPoint);
Sveg.blank();
}
void loop() {
if (Serial.available()) {
byte k = Serial.read();
Serial.println(k);
}
byte key = KP.getKey();
int num_digits = (int)log10(result) + 1;
if (num_digits == 4) {
if (result == password) {
Sveg.blank();
Sveg.setChars("Yeah");
} else {
Sveg.blank();
Sveg.setChars("No");
}
result = 0;
}
if (key != NO_KEY) {
if (key >= '0' && key <= '9') {
result = result * 10 + (key - '0');
Sveg.setNumber(result);
} else {
switch (key) {
case '*': Sveg.blank();
}
}
}
Sveg.refreshDisplay();
}