#define LED_ON LOW
#define LED_OFF HIGH
#define DG1 23
#define DG2 25
#define DG3 18
#define DG4 14
#define A 32
#define B 13
#define C 5
#define D 22
#define E 19
#define F 33
#define G 27
#define DP 21
#define DPColon 26
hw_timer_t *timer1 = NULL;
unsigned int number = 0;
unsigned int tmpnumber1, tmpnumber2, tmpnumber3, tmpnumber4;
int status7Seg = 1;
void timer1_callback( void );
void showNumber(int num);
void setup() {
number = 1201;
tmpnumber1 = number / 1000;
tmpnumber2 = (number - ((tmpnumber1) * 1000)) / 100;
tmpnumber3 = (number - (tmpnumber1 * 1000) - (tmpnumber2 * 100)) / 10;
tmpnumber4 = (number - (tmpnumber1 * 1000) - (tmpnumber2 * 100) - (tmpnumber3 * 10));
Serial.begin( 115200 );
Serial.printf( "\nShow Number : %d\n", number);
Serial.printf( "\nDG1:%d DG2:%d DG3:%d DG4:%d\n", tmpnumber1, tmpnumber2, tmpnumber3, tmpnumber4);
pinMode(DG1,OUTPUT);
pinMode(DG2, OUTPUT);
pinMode(DG3, OUTPUT);
pinMode(DG4, OUTPUT);
pinMode(DPColon, OUTPUT);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
timer1 = timerBegin(1000000);
timerAttachInterrupt( timer1, &timer1_callback );
timerAlarm( timer1, 1000 , true, 0 ); //-> 100
}
void loop() {
}
void IRAM_ATTR timer1_callback( void )
{
showNumber(10);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH);
digitalWrite( DG3, HIGH);
digitalWrite( DG4, HIGH);
if (status7Seg == 1)
{
showNumber(tmpnumber1);
digitalWrite( DG1, LOW );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
status7Seg = 2;
}
else if (status7Seg == 2)
{
showNumber(tmpnumber2);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, LOW);
digitalWrite( DG3, HIGH);
digitalWrite( DG4, HIGH);
status7Seg = 3;
}
else if (status7Seg == 3)
{
showNumber(tmpnumber3);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, LOW );
digitalWrite( DG4, HIGH );
status7Seg = 4;
}
else if (status7Seg == 4)
{
showNumber(tmpnumber4);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, LOW );
status7Seg = 1;
}
else
{
status7Seg = 1;
}
}
void showNumber(int num)
{
if (num == 0)
{
digitalWrite( A, HIGH );
digitalWrite( B, HIGH );
digitalWrite( C, HIGH );
digitalWrite( D, HIGH );
digitalWrite( E, HIGH );
digitalWrite( F, HIGH );
digitalWrite( G, LOW );
}
else if (num == 1) {
digitalWrite( A, LOW );
digitalWrite( B, HIGH );
digitalWrite( C, HIGH );
digitalWrite( D, LOW );
digitalWrite( E, LOW );
digitalWrite( F, LOW );
digitalWrite( G, LOW );
}
else if (num == 2) {
digitalWrite( A, HIGH );
digitalWrite( B, HIGH );
digitalWrite( C, LOW );
digitalWrite( D, HIGH );
digitalWrite( E, HIGH );
digitalWrite( F, LOW );
digitalWrite( G, HIGH );
}
else {
digitalWrite( A, LOW );
digitalWrite( B, LOW );
digitalWrite( C, LOW );
digitalWrite( D, LOW );
digitalWrite( E, LOW );
digitalWrite( F, LOW );
digitalWrite( G, LOW );
}
}