#define led5min 33
#define led10min 45
#define led15min 42
#define led30min 41
#define led1Hour 40
#define led2Hour 39
#define led3Hour 38
#define led6Hour 37
#define Spark 36
#define Gas 35
#define led_gas 19
#define led_spark 18
#define switch_time 20
#define switch_manual 21
int ModeTime = 1;
unsigned long currentMillis,secTimeMillis,Min5Time,Min10Time,Min15Time,Min30Time,OneHourTime,TwoHourTime,ThreeHourTime,SixHourTime = 0;
void Mode1()
{
Serial.println(secTimeMillis-Min5Time);
if(secTimeMillis - Min5Time >= 3)
{
if(secTimeMillis-Min5Time<5)
{
digitalWrite(led_gas,LOW);
digitalWrite(Gas,LOW);
}
if(secTimeMillis - Min5Time >=5)
{
digitalWrite(led_gas,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - Min5Time >= 7)
{
digitalWrite(Spark,LOW);digitalWrite(led_spark, LOW);delay(500);
digitalWrite(Spark,HIGH);digitalWrite(led_spark, HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode2()
{
if(secTimeMillis - Min10Time >= 600)
{
digitalWrite(led10min,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - Min10Time >= 605)
{
digitalWrite(led10min,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - Min10Time >= 606)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode3()
{
if(secTimeMillis - Min15Time >= 900)
{
digitalWrite(led15min,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - Min15Time >= 905)
{
digitalWrite(led15min,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - Min15Time >= 906)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode4()
{
if(secTimeMillis - Min30Time >= 1800)
{
digitalWrite(led30min,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - Min30Time >= 1805)
{
digitalWrite(led30min,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - Min30Time >= 1806)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode5()
{
if(secTimeMillis - OneHourTime >= 3600)
{
digitalWrite(led1Hour,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - OneHourTime >= 3605)
{
digitalWrite(led1Hour,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - OneHourTime >= 3606)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode6()
{
if(secTimeMillis - TwoHourTime >= 7200)
{
digitalWrite(led2Hour,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - TwoHourTime >= 7205)
{
digitalWrite(led2Hour,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - TwoHourTime >= 7206)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode7()
{
if(secTimeMillis - ThreeHourTime >= 10800)
{
digitalWrite(led3Hour,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - ThreeHourTime >= 10805)
{
digitalWrite(led3Hour,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - ThreeHourTime >= 10806)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void Mode8()
{
if(secTimeMillis - SixHourTime >= 1800)
{
digitalWrite(led6Hour,LOW);
digitalWrite(Gas,LOW);
if(secTimeMillis - SixHourTime >= 1805)
{
digitalWrite(led6Hour,HIGH);
digitalWrite(Gas,HIGH);
if(secTimeMillis - SixHourTime >= 1806)
{
digitalWrite(Spark,LOW);delay(500);
digitalWrite(Spark,HIGH);
Min5Time = secTimeMillis;
}
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32-S2!");
pinMode(led5min, OUTPUT);
pinMode(led10min, OUTPUT);
pinMode(led15min, OUTPUT);
pinMode(led30min, OUTPUT);
pinMode(led1Hour, OUTPUT);
pinMode(led2Hour, OUTPUT);
pinMode(led3Hour, OUTPUT);
pinMode(led6Hour, OUTPUT);
pinMode(Spark, OUTPUT);
pinMode(Gas, OUTPUT);
pinMode(led_gas, OUTPUT);
pinMode(led_spark, OUTPUT);
pinMode(switch_time,INPUT_PULLUP);
pinMode(switch_manual,INPUT_PULLUP);
digitalWrite(led5min, HIGH);
digitalWrite(led10min, HIGH);
digitalWrite(led15min, HIGH);
digitalWrite(led30min, HIGH);
digitalWrite(led1Hour, HIGH);
digitalWrite(led2Hour, HIGH);
digitalWrite(led3Hour, HIGH);
digitalWrite(led6Hour, HIGH);
digitalWrite(Spark, HIGH);
digitalWrite(Gas, HIGH);
digitalWrite(led_gas, HIGH);
digitalWrite(led_spark, HIGH);
}
void loop()
{
currentMillis = millis();
secTimeMillis = currentMillis/1000;
if(!digitalRead(switch_time))
{
ModeTime++;
while(!digitalRead(switch_time));
if(ModeTime>9){ModeTime=1;}
}
if(ModeTime==1){Mode1();}
}