#include <Servo.h>
#define CLK 15
#define DT 16
#define SW 17
Servo servo;
int angle = 90;
int SSpeed;
int Timer_Vale = 1;
int Alin = A0;
bool Prev_State;
bool Servo_Stop;
bool Start_Flag = false;
int Seg_A = 10;
int Seg_B = 9;
int Seg_C = 6;
int Seg_D = 7;
int Seg_E = 8;
int Seg_F = 11;
int Seg_G = 12;
int Seg_DP = 5;
int Seg_1 = 4;
int Seg_2 = 3;
int Seg_3 = 2;
int Buzzer = 13;
int Dig_1;
int Dig_2;
int Dig_3;
int counter_1 = 0;
int counter = 0;
int currentStateCLK;
int lastStateCLK;
int btnState;
bool Start_Timer = false;
unsigned long startMillis; //some global variables available anywhere in the program
unsigned long currentMillis;
unsigned long lastButtonPress;
const unsigned long period = 1000;
void setup() {
Serial.begin(9600);
pinMode(CLK,INPUT);
pinMode(DT,INPUT);
pinMode(SW, INPUT_PULLUP);
pinMode(Buzzer, OUTPUT);
pinMode(Seg_A, OUTPUT);
pinMode(Seg_B, OUTPUT);
pinMode(Seg_C, OUTPUT);
pinMode(Seg_D, OUTPUT);
pinMode(Seg_E, OUTPUT);
pinMode(Seg_F, OUTPUT);
pinMode(Seg_G, OUTPUT);
pinMode(Seg_DP, OUTPUT);
pinMode(Seg_1, OUTPUT);
digitalWrite(Seg_1, HIGH);
pinMode(Seg_2, OUTPUT);
digitalWrite(Seg_1, HIGH);
pinMode(Seg_3, OUTPUT);
digitalWrite(Seg_1, HIGH);
digitalWrite(7, HIGH);
servo.attach(5);
servo.write(angle);
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_G, HIGH);
delay(2000);
lastStateCLK = digitalRead(CLK);
startMillis = millis();
}
void loop()
{
currentMillis = millis();
if (currentMillis - startMillis >= period)
{
if (Start_Flag == true)
{
counter_1 ++;
if (counter_1 >= 60)
{
Timer_Vale --;
counter_1 = 0;
if (Timer_Vale <=0)
{
Timer_Vale = 0;
Start_Flag = false;
digitalWrite(Buzzer, HIGH);
delay(2000);
digitalWrite(Buzzer, LOW);
}
}
}
else
{
counter_1 = 0;
Timer_Vale = 0;
}
}
startMillis = currentMillis;
currentStateCLK = digitalRead(CLK);
SSpeed = analogRead(Alin);
SSpeed = map(SSpeed, 0,1024, 20, 5);
//Serial.println(SSpeed);
if (currentStateCLK != lastStateCLK && currentStateCLK == 1)
{
// If the DT state is different than the CLK state then
// the encoder is rotating CCW so decrement
if (digitalRead(DT) != currentStateCLK)
{
Timer_Vale ++;
if (Timer_Vale <= 0)
{
Timer_Vale = 0;
}
}
else
{
// Encoder is rotating CW so increment
Timer_Vale ++;
if (Timer_Vale >= 600)
{
Timer_Vale = 600;
}
}
}
lastStateCLK = currentStateCLK;
Serial.println(Timer_Vale);
btnState = digitalRead(SW);
if (btnState == LOW)
{
if (Start_Timer == true)
{
Start_Timer = false;
delay(250);
Serial.println("helo false");
// digitalWrite(Buzzer, HIGH);
delay(2000);
}
else
{
Start_Timer = true;
delay(250);
// digitalWrite(Buzzer, LOW);
if (Start_Timer == true)
{
Serial.println("helo true");
delay(2000);
}
//Serial.println("helo true");
}
//Start_Timer != Start_Timer;
}
if ((Start_Timer == true) && (Timer_Vale > 0))
{
Start_Flag = false;
digitalWrite(Buzzer, HIGH);
Serial.println("StartFlag");
}
else
{
Start_Flag = false;
digitalWrite(Buzzer, LOW);
}
lastButtonPress = millis();
for(angle = 5; (angle < 180 && Start_Flag == true ) ; angle++)
{
servo.write(angle);
delay(15);
}
for(angle = 180; (angle > 5 && Start_Flag == true); angle--)
{
servo.write(angle);
delay(15);
}
//rial.println(counter);
Dig_1 = counter/100;;
Dig_2 = ((counter - (Dig_1*100))/10);
Dig_3 = (counter - (Dig_1*100)-(Dig_2*10));
switch (Dig_1)
{
case 1:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 2:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_E, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 3:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 4:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 5:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 6:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
case 7:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 8:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
case 9:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 0:
// statements
digitalWrite(Seg_1, LOW);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
default:
// statements
digitalWrite(Seg_1, HIGH);
break;
}
switch (Dig_2)
{
case 1:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 2:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_E, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 3:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 4:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 5:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 6:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
case 7:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 8:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
case 9:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 0:
// statements
digitalWrite(Seg_2, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_3, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
default:
// statements
digitalWrite(Seg_2, HIGH);
break;
}
switch (Dig_3)
{
case 1:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 2:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_E, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 3:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 4:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 5:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 6:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
case 7:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_C, HIGH);
break;
case 8:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
case 9:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_G, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
break;
case 0:
// statements
digitalWrite(Seg_3, LOW);
digitalWrite(Seg_1, HIGH);
digitalWrite(Seg_2, HIGH);
digitalWrite(Seg_A, HIGH);
digitalWrite(Seg_B, HIGH);
digitalWrite(Seg_F, HIGH);
digitalWrite(Seg_C, HIGH);
digitalWrite(Seg_D, HIGH);
digitalWrite(Seg_E, HIGH);
break;
default:
// statements
digitalWrite(Seg_3, HIGH);
break;
}
}