#include <TM1637Display.h>

// define the connections pins
#define INPT_CLK 3
#define INPT_DIO 2

#define VOL_DIO 4
#define VOL_CLK 5

// create display object of type TM1637Display
TM1637Display inputDisplay = TM1637Display(INPT_CLK, INPT_DIO);
TM1637Display volumeDisplay = TM1637Display(VOL_CLK, VOL_DIO);

// Hi Text
const uint8_t hello[] = {
  SEG_B | SEG_C | SEG_E | SEG_F | SEG_G,         // H
  SEG_A | SEG_D | SEG_E | SEG_F | SEG_G,         // E
  SEG_D | SEG_E | SEG_F,                         // L
  SEG_D | SEG_E | SEG_F,                         // L
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
  0x00,
  0x00,
  0x00,
  0x00
};

// Chintu text
const uint8_t chintu[] = {
  SEG_A | SEG_D | SEG_E | SEG_F,          // C
  SEG_B | SEG_C | SEG_E | SEG_F | SEG_G,  // H
  SEG_B | SEG_C,                          // I
  SEG_A | SEG_B | SEG_C | SEG_E | SEG_F,  // N
  SEG_D | SEG_E | SEG_F | SEG_G,          // t
  SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,  // U
  0x00,
  0x00,
  0x00,
  0x00
};

// Blue Text
const uint8_t blue[] = {
  SEG_C | SEG_D | SEG_E | SEG_F | SEG_G,  // b
  SEG_D | SEG_E | SEG_F,                  // L
  SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,  // U
  SEG_A | SEG_D | SEG_E | SEG_F | SEG_G   // E

};

// blank Text
const uint8_t blank[] = {
  SEG_G,  // -
  SEG_G,  // -
  SEG_G,  // -
  SEG_G   // -

};

// Optl Text
const uint8_t optl[] = {
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,  // O
  SEG_A | SEG_B | SEG_E | SEG_F | SEG_G,          // P
  SEG_D | SEG_E | SEG_F | SEG_G,                  // t
  SEG_D | SEG_E | SEG_F                           // L

};

// CH:01 text
const uint8_t ch01[] = {
  SEG_A | SEG_D | SEG_E | SEG_F,                  // C
  0b11110110,                                     // H:
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,  // 0
  SEG_B | SEG_C                                   // 1
};

// CH:02 text
const uint8_t ch02[] = {
  SEG_A | SEG_D | SEG_E | SEG_F,                    // C
  0b11110110,                                       // H:
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,    // 0
  SEG_A | SEG_B | SEG_D | SEG_E | SEG_G             // 2
};

void setup() {
  pinMode(11, INPUT);
  pinMode(10, INPUT);
  pinMode(9, INPUT);
  pinMode(8, INPUT);
  // Serial.begin(9600);
  inputDisplay.clear();
  inputDisplay.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest)

  volumeDisplay.clear();
  volumeDisplay.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest)

  delay(100);
  inputDisplay.clear();
  for (int i = 0; i < 6; i++) {
    inputDisplay.setSegments(hello + i);
    if (i == 0) {
      delay(800);
    } else {
      delay(200);
    }

  }
  // delay(500);

  volumeDisplay.clear();
  delay(50);
  for (int i = 0; i < 7; i++) {
    volumeDisplay.setSegments(chintu + i);
    if (i == 0) {
      delay(800);
    } else {
      delay(200);
    }
  }
  delay(1000);
  inputDisplay.clear();
  volumeDisplay.clear();
}

void loop() {

  int value = map(analogRead(A0), 0, 1023, 0, 100);
  volumeDisplay.showNumberDec(value, true, 3, 1);

  // Read Switch Value
  if (digitalRead(11) == HIGH) {

    inputDisplay.setSegments(blue);
  }
  if (digitalRead(10) == HIGH) {

    inputDisplay.setSegments(optl);
  }
  if (digitalRead(9) == HIGH) {

    inputDisplay.setSegments(ch01);
  }
  if (digitalRead(8) == HIGH) {

    inputDisplay.setSegments(ch02);
  }
  if (digitalRead(11) == LOW && digitalRead(10) == LOW && digitalRead(9) == LOW && digitalRead(8) == LOW) {

    inputDisplay.setSegments(blank);
  }

  delay(100);

  //  Serial.print("BLUE = ");
  // Serial.println(digitalRead(11));
  //   Serial.print("OPTL = ");
  // Serial.println(digitalRead(10));
  //  Serial.print("CH:01 = ");
  // Serial.println(digitalRead(9));
  //  Serial.print("CH:02 = ");
  // Serial.println(digitalRead(8));

}
4-Digit Display
4-Digit Display