#define A 17
#define B 5
#define C 18
#define D 19
#define E 21
#define F 23
#define G 22
hw_timer_t *mt=NULL;
hw_timer_t *mt1=NULL;
bool toogle=true;
int t = 0;
int s = 0;
int wait = 0;
int d=0;
int number=0;
int uu=0;
int ggg=0;
void e(){
if((digitalRead(16)==LOW) &&(digitalRead(4)==LOW)&& (toogle==true))
ggg=0;
else if((digitalRead(16)==LOW) &&(digitalRead(4)==HIGH)&& (toogle==true))
ggg=1;
else if((digitalRead(16)==HIGH) &&(digitalRead(4)==LOW)&& (toogle==true))
ggg=2;
else if((digitalRead(16)==HIGH) &&(digitalRead(4)==HIGH)&& (toogle==true))
ggg=3;
}
void no_blink(){
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
}
void zero(){
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
}
void one(){
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
}
void two(){
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
}
void Three(){
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
}
void v(int x, int c,int y) {
if (wait == 0) {
if ((s % 2 == 0)) {
if(ggg==0)zero();
else if(ggg==1) one();
else if(ggg==2)two();
else if(ggg==3)Three();
} else {
no_blink();
}
s++;
if (s >= x*2) {
wait = 1;
s=0;
}
} else {
wait++;
if (wait > y) {
wait = 0;
if (c == 1)t = 0; else {
t = 1;
}
if(d==0)d=1;else{d=0;}
}
}
}
void IRAM_ATTR onTimer(){
if(d==1)
v(6, 1,4);
}
void IRAM_ATTR onTimer1(){
if(d==0)
v(3, 0,2);
}
void IRAM_ATTR isrSW1(){
e();
}
void IRAM_ATTR isrSW2(){
e();
}
void setup() {
// put your setup code here, to run once:
pinMode(4,INPUT_PULLUP);
pinMode(16,INPUT_PULLUP);
pinMode(A,OUTPUT);
pinMode(B,OUTPUT);
pinMode(C,OUTPUT);
pinMode(D,OUTPUT);
pinMode(E,OUTPUT);
pinMode(F,OUTPUT);
pinMode(G,OUTPUT);
attachInterrupt(4,isrSW1,CHANGE);
attachInterrupt(16,isrSW2,CHANGE);
mt=timerBegin(0,80,true);
timerAttachInterrupt(mt,&onTimer,true);
timerAlarmWrite(mt,500000,true);
timerAlarmEnable(mt);
mt1=timerBegin(1,80,true);
timerAttachInterrupt(mt1,&onTimer1,true);
timerAlarmWrite(mt1,1000000,true);
timerAlarmEnable(mt1);
}
void loop() {
// put your main code here, to run repeatedly:
}