#include <SevSeg.h>
#include<Keypad.h>
SevSeg sevseg;
const uint8_t ROWS = 4;
const uint8_t COLS = 3;
char keys[ROWS][COLS] = {
{ '1', '2', '3'},
{ '4', '5', '6'},
{ '7', '8', '9'},
{ '*', '0', '#'}};
uint8_t colPins[COLS] = { 13, 12, 11};
uint8_t rowPins[ROWS] = { 10,9,8,7,};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS,COLS);
int code[4] = {1,1,1,1};
int startCode[4] = {1,1,1,1},goodCode[4] = {3,2,9,1};
int realArraySize(int arr[]);
void setArr(int arr1[], int arr2[]);
void displayArr(int arr[]);
void setup() {
setSevSeg();
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY)
{
if (key == '#')
{
setArr(code,startCode);
sevseg.setNumber(1111);
}
else if (key == '*' && code == goodCode)
sevseg.setNumber(9999);
else
{
code[realArraySize(code)] = (int)key;
sevseg.setNumber(code[0] + code[1] *10 + code[2]*100 + code[3]*1000);
}
}
//sevseg.setNumber(5206);
sevseg.refreshDisplay();
}
int realArraySize(int arr[])
{
for (int i = 0; i < sizeof(arr); i++)
{
if (arr[i] != -1) return i;
}
return sizeof(arr) - 1;
}
void setArr(int arr1[], int arr2[])
{
for (int i = 0; i < sizeof(arr1); i++)
{
arr1[i] = arr2[i];
}
}
void setSevSeg()
{
byte numDigits = 4;
byte digitPins[] = {22, 23, 24, 25};
byte segmentPins[] = {26, 27, 28, 29, 30, 31, 32, 33};
bool resistorsOnSegments = false;
byte hardwareConfig = COMMON_ANODE;
bool updateWithDelays = false;
bool leadingZeros = false;
bool disableDecPoint = false;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
class code
{
private:
int first,second,third,fourth;
public:
void setCode(int firstA,int secondA,int thirdA,int fourthA)
{
first = firstA;
second = secondA;
third = thirdA;
fourth = fourthA;
}
int getFirst(){return first;}
int getSecond(){return second;}
int getThird(){return third;}
int getFourth(){return fourth;}
};