#include <Keypad.h>
#include <TM1637Display.h>
// TM1637 setup
#define CLK 4
#define DIO 5
TM1637Display display(CLK, DIO);
// Keypad setup
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 rowPins[ROWS] = {32, 33, 25, 26};
byte colPins[COLS] = {27, 14, 12, 13};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Input buffer
String input = "";
void setup() {
display.setBrightness(5);
display.clear();
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key >= '0' && key <= '9') {
if (input.length() < 4) {
input += key;
}
} else if (key == '*') {
input = "";
}
// Display logic
int len = input.length();
uint8_t digits[4] = {0x00, 0x00, 0x00, 0x00};
for (int i = 0; i < len; i++) {
digits[4 - len + i] = display.encodeDigit(input[i] - '0');
}
display.setSegments(digits);
}
}