#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 22
#define DIO 21
const uint8_t SEG_J[] = {
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E, //J
};
const uint8_t SEG_U[] = {
SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, //U
};
const uint8_t SEG_N[] = {
SEG_A | SEG_B | SEG_C | SEG_E | SEG_F, //n
};
const uint8_t SEG_I[] = {
SEG_B | SEG_C, //I
};
const uint8_t SEG_O[] = {
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,//O
};
const uint8_t SEG_R[] = {
SEG_A | SEG_E | SEG_F, //r
};
const uint8_t SEG_[] = {
};
const uint8_t SEG_PLAY[] = {
SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P
SEG_D | SEG_E | SEG_F, // L
SEG_A | SEG_B | SEG_C | SEG_E | SEG_F | SEG_G, // A
SEG_B | SEG_C | SEG_D | SEG_F | SEG_G // Y
};
const uint8_t SEG_STOP[] = {
SEG_A | SEG_C | SEG_D | SEG_F | SEG_G, // S
SEG_D | SEG_E | SEG_F | SEG_G, // T
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P
};
const uint8_t SEG_TP[] = {
SEG_D | SEG_E | SEG_F | SEG_G, // T
SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, // P
};
const uint8_t SEG_MIN[] = {
SEG_G, // -
};
const uint8_t SEG_GARIS[] = {
SEG_D, // _
};
TM1637Display display(CLK, DIO);
#define play 25
#define minTempo 14
#define plusTempo 12
#define next 27
#define prev 26
unsigned long startTime;
bool stoped=0;
unsigned presTempo;
bool play_chosen=0;
int temp_N;
unsigned long presTime;
bool pres=0;
bool play_song=true;
int tuts[6]={19,18,17,16,4,23};//do re mi fa sol la
int tempoMin=1000, tempoMax=20, deltaTempo=1;
int N=1;
int tempo=60;//bukan dalam beat per second
byte nTempo[9]={200,100,90,70,60,50,40,35,30};
byte indexTempo=4;
void setup() {
Serial.begin(9600);
pinMode(play, INPUT);
pinMode(minTempo, INPUT);
pinMode(plusTempo, INPUT);
pinMode(next, INPUT);
pinMode(prev, INPUT);
display.clear();
display.setBrightness(0x0f);
intro();
delay(5000);
showNoLagu(N);
}
void loop() {
cekButton();
}
void showNoLagu(int n){
display.setSegments(SEG_MIN,1,0);
display.showNumberDec(n, true, 2, 1); //(nomor lagu,nol di depan, banyak digit, posisi[mulai dari 0])
display.setSegments(SEG_MIN,1,3);
}
void showTempo(int n){
display.setSegments(SEG_TP,2,0);
display.setSegments(SEG_GARIS,1,2);
display.showNumberDec(n, false, 1, 3);
}
void showPlay(){
display.setSegments(SEG_PLAY);
}
void showStop(){
display.setSegments(SEG_STOP);
}
void cekButton(){
if(digitalRead(prev)){
if(N>1) N--;
showNoLagu(N);
Serial.println(String()+"lagu "+N);
unsigned long timer=millis();
while(digitalRead(prev)){
if(millis()-timer > 500){
if(N>1) N--;
showNoLagu(N);
Serial.println(String()+"lagu "+N);
delay(50);
}
}
delay(200);
}else if(digitalRead(play)){
Serial.println(String()+"play lagu "+N);
while(digitalRead(play));
delay(200);
showPlay();
// start();
}else if(digitalRead(next) && N<99){
N++;
showNoLagu(N);
Serial.println(String()+"lagu "+N);
unsigned long timer=millis();
while(digitalRead(next) && N<99){
if(millis()-timer > 500){
N++;
showNoLagu(N);
Serial.println(String()+"lagu "+N);
delay(50);
}
}
delay(200);
}else if(digitalRead(plusTempo)){
if(indexTempo<8) indexTempo++;
showTempo(indexTempo+1);
Serial.println(String()+"t"+(indexTempo+1));
while(digitalRead(plusTempo));
delay(200);
}else if(digitalRead(minTempo)){
if(indexTempo>0) indexTempo--;
showTempo(indexTempo+1);
Serial.println(String()+"t"+(indexTempo+1));
while(digitalRead(minTempo));
delay(200);
}
}
void intro(){
int jeda=200;
display.setSegments(SEG_J,1,3);
delay(jeda);
display.setSegments(SEG_J,1,2);
display.setSegments(SEG_U,1,3);
delay(jeda);
display.setSegments(SEG_J,1,1);
display.setSegments(SEG_U,1,2);
display.setSegments(SEG_N,1,3);
delay(jeda);
display.setSegments(SEG_J,1,0);
display.setSegments(SEG_U,1,1);
display.setSegments(SEG_N,1,2);
display.setSegments(SEG_I,1,3);
delay(jeda);
display.setSegments(SEG_U,1,0);
display.setSegments(SEG_N,1,1);
display.setSegments(SEG_I,1,2);
display.setSegments(SEG_O,1,3);
delay(jeda);
display.setSegments(SEG_N,1,0);
display.setSegments(SEG_I,1,1);
display.setSegments(SEG_O,1,2);
display.setSegments(SEG_R,1,3);
delay(jeda);
display.setSegments(SEG_I,1,0);
display.setSegments(SEG_O,1,1);
display.setSegments(SEG_R,1,2);
display.setSegments(SEG_,1,3);
delay(jeda);
display.setSegments(SEG_O,1,0);
display.setSegments(SEG_R,1,1);
display.setSegments(SEG_,1,2);
display.setSegments(SEG_,1,3);
delay(jeda);
display.setSegments(SEG_R,1,0);
display.setSegments(SEG_,1,1);
display.setSegments(SEG_,1,2);
display.setSegments(SEG_,1,3);
delay(jeda);
display.setSegments(SEG_,1,0);
display.setSegments(SEG_,1,1);
display.setSegments(SEG_,1,2);
display.setSegments(SEG_,1,3);
delay(jeda);
}