70 lines
2 KiB
C++
70 lines
2 KiB
C++
int relay[5] = {53, 13, 12, A0, A1};
|
|
|
|
unsigned long time_group[5];
|
|
unsigned long num_rep_group[5] = { 1, 1, 1, 1, 1 };
|
|
|
|
void seq(int group, bool st_ini, unsigned long time_ini, unsigned long time_on, unsigned long time_off, unsigned long time_total)
|
|
{
|
|
unsigned time_actual = millis()-time_group[group];
|
|
if ((time_on + time_off)>0)
|
|
{
|
|
unsigned temp_time = time_total - time_ini;
|
|
int num_rep = temp_time / (time_on + time_off);
|
|
if (time_actual<=time_ini)
|
|
{
|
|
digitalWrite(relay[group], st_ini);
|
|
num_rep_group[group] = 1;
|
|
}
|
|
else if (time_actual<=(time_ini + (num_rep_group[group]*time_on + (num_rep_group[group]-1)*time_off)))
|
|
{
|
|
digitalWrite(relay[group], !st_ini);
|
|
}
|
|
else if (time_actual<=(time_ini + num_rep_group[group]*(time_on + time_off)))
|
|
{
|
|
digitalWrite(relay[group], st_ini);
|
|
}
|
|
else if(time_actual<time_total)
|
|
{
|
|
if (num_rep_group[group]< num_rep) num_rep_group[group]++;
|
|
}
|
|
else if(time_actual>=time_total)
|
|
{
|
|
time_group[group] = millis();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (time_actual<=time_ini)
|
|
{
|
|
digitalWrite(relay[group], st_ini);
|
|
}
|
|
else if(time_actual<time_total)
|
|
{
|
|
digitalWrite(relay[group], !st_ini);
|
|
}
|
|
else if(time_actual>=time_total)
|
|
{
|
|
time_group[group] = millis();
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void setup() {
|
|
for(int i=0; i<5; i++)
|
|
{
|
|
pinMode(relay[i], OUTPUT);
|
|
digitalWrite(relay[i], HIGH);
|
|
time_group[i] = millis();
|
|
}
|
|
}
|
|
|
|
void loop() {
|
|
seq(0, LOW, 10000, 0, 0, 130000);
|
|
seq(1, HIGH, 15000, 500, 500, 130000);
|
|
seq(2, HIGH, 20000, 1000, 1000, 130000);
|
|
seq(3, HIGH, 25000, 3000, 3000, 130000);
|
|
seq(4, HIGH, 25000, 3000, 3000, 130000);
|
|
}
|