#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define A 17
#define B 5
#define C 18
#define D 19
#define E 21
#define F 23
#define G 22
#define SW1 4
#define SW2 16
unsigned long last_time = 0;
unsigned long last_time2 = 0;
hw_timer_t *My_timer = NULL;
int led_state = 0;
void IRAM_ATTR onTimer(){
control_7segment();
}
void setup() {
pinMode(4, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);
pinMode(2, OUTPUT);
pinMode(17, OUTPUT);
pinMode(5, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(1, OUTPUT);
pinMode(23, OUTPUT);
pinMode(3, OUTPUT);
My_timer = timerBegin(0,80,true);
timerAttachInterrupt(My_timer,&onTimer,true);
timerAlarmWrite(My_timer,500000,true);
timerAlarmEnable(My_timer);
}
void loop() {
if (millis() - last_time >= 500) {
digitalWrite(2, !digitalRead(2));
last_time = millis();
}
}
void control_7segment() {
if ((digitalRead(SW1) == HIGH) && (digitalRead(SW2) == HIGH)) {
zero();
} else if ((digitalRead(SW1) == HIGH) && (digitalRead(SW2) == LOW)) {
loop_7segment();
}
}
void loop_7segment() {
while (led_state <= 5) {
if (led_state == 0) {
a();
} else if (led_state == 1) {
b();
} else if (led_state == 2) {
c();
} else if (led_state == 3) {
d();
} else if (led_state == 4) {
e();
} else if (led_state == 5) {
f();
led_state = 0;
}
led_state++;
}
}
void no_blink(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void zero(void) {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void a(void) {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void b(void) {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void c(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void d(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void e(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void f(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}