#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);
  }
}
4-Digit Display