// ----------------------------------wejścia
#define grzyb_1 2 // in1 transoptor
#define grzyb_2 3 // in2 transoptor
#define rez1 4 // in3 transoptor
#define rez2 5 // in4 transoptor
#define wengl_1 7 // wej-5 rezystor
#define wengl_2 8 // wej-6 rezystor
#define dym 9 // wej-7 rezystor
#define rez3 10 // wej-8 rezystor
// ----------------------------------wyjścia
#define myd_1 11 //K1
#define myd_2 12 //K2
#define d13 LED_BUILTIN
#define kogut 14 //K3
#define wod_1 15 //K4
#define wod_2 16 //K5
#define sms_ala 17 //K6
#define sms_dym 18 //K7
#define door_1 19 //K8
// int cykl[] = {0,0,0,0,0,0,0,0};
int cykl[8] = {0};
unsigned long prev_ms1 = 0;
unsigned long prev_ms2 = 0;
unsigned long prev_ms3 = 0;
unsigned long prev_ms4 = 0;
unsigned long prev_ala1 = 0;
unsigned long prev_ala2 = 0;
unsigned long prev_door1 = 0;
unsigned long prev_door2 = 0;
unsigned long prev_dym = 0;
unsigned long prev_front = 0;
unsigned long prev_min20 = 0;
const long int1 = 2500;
const long int2 = int1 + 10000;
const long int3 = int2 + 3000;
void setup() {
Serial.begin(9600);
pinMode(myd_1, OUTPUT);
pinMode(myd_2, OUTPUT);
pinMode(kogut, OUTPUT);
pinMode(wod_1, OUTPUT);
pinMode(wod_2, OUTPUT);
pinMode(sms_ala, OUTPUT);
pinMode(sms_dym, OUTPUT);
pinMode(door_1, OUTPUT);
pinMode(d13, OUTPUT);
pinMode(grzyb_1, INPUT_PULLUP); // jeśli przycisk -> INPUT_PULLUP
pinMode(grzyb_2, INPUT_PULLUP); // jeśli przycisk -> INPUT_PULLUP
pinMode(rez1, INPUT_PULLUP);
pinMode(rez2, INPUT_PULLUP);
pinMode(wengl_1, INPUT);
pinMode(wengl_2, INPUT);
pinMode(dym, INPUT);
pinMode(rez3, INPUT);
digitalWrite(myd_1, 1);
digitalWrite(myd_2, 1);
digitalWrite(kogut, 1);
digitalWrite(wod_1, 1);
digitalWrite(wod_2, 1);
digitalWrite(sms_ala, 1);
digitalWrite(sms_dym, 1);
digitalWrite(door_1, 1);
}
void loop() {
unsigned long teraz = millis();
// -------------------------------------------------------------------
// HEARTBIT
// -------------------------------------------------------------------
if (teraz - prev_ms4 >= 200) digitalWrite(d13, 0);
if (teraz - prev_ms4 >= 1000) {
digitalWrite(d13, 1);
prev_ms4 = teraz;
}
// -------------------------------------------------------------------
// UMYWALKA #1 cykl[1]
// -------------------------------------------------------------------
switch (cykl[1]) {
case 0: // oczekiwanie na włączenie, mydło
if (digitalRead(wengl_1) == 1) {
digitalWrite(myd_1, 0);
cykl[1] = 1;
}
break;
case 1: // start sekwencji
prev_ms1 = teraz;
cykl[1] = 2;
break;
case 2: // woda
if (teraz - prev_ms1 >= int1) {
digitalWrite(myd_1, 1);
digitalWrite(wod_1, 0);
cykl[1] = 3;
}
break;
case 3: // woda koniec
if (teraz - prev_ms1 >= int2) {
digitalWrite(wod_1, 1);
cykl[1] = 4;
}
break;
case 4: // pauza
if (teraz - prev_ms1 >= int3) {
cykl[1] = 0;
}
break;
}
// -------------------------------------------------------------------
// UMYWALKA #2 cykl[2]
// -------------------------------------------------------------------
switch (cykl[2]) {
case 0: // oczekiwanie na włączenie, mydło
if (digitalRead(wengl_2) == 1) {
digitalWrite(myd_2, 0);
cykl[2] = 1;
}
break;
case 1: // start sekwencji
prev_ms2 = teraz;
cykl[2] = 2;
break;
case 2: // woda
if (teraz - prev_ms2 >= int1) {
digitalWrite(myd_2, 1);
digitalWrite(wod_2, 0);
cykl[2] = 3;
}
break;
case 3: // woda koniec
if (teraz - prev_ms2 >= int2) {
digitalWrite(wod_2, 1);
cykl[2] = 4;
}
break;
case 4: // pauza
if (teraz - prev_ms2 >= int3) {
cykl[2] = 0;
}
break;
}
// -------------------------------------------------------------------
// ALARM GRZYBEK-1 cykl[3]
// -------------------------------------------------------------------
switch (cykl[3]) {
case 0:
if (digitalRead(grzyb_1) == 0) {
digitalWrite(kogut, 0);
digitalWrite(sms_ala, 0);
digitalWrite(door_1, 0);
cykl[3] = 1;
}
break;
case 1: // pomiar czasu
prev_ala1 = teraz;
cykl[3] = 2;
break;
case 2:
if (teraz - prev_ala1 >= 5000) {
digitalWrite(kogut, 1);
digitalWrite(sms_ala, 1);
cykl[3] = 3;
}
break;
case 3:
if (teraz - prev_ala1 >= 35000) {
digitalWrite(kogut, 0);
cykl[3] = 4;
}
break;
case 4:
if (teraz - prev_ala1 >= 36000) {
digitalWrite(door_1, 1);
digitalWrite(kogut, 1);
cykl[3] = 5;
}
break;
case 5:
if (digitalRead(grzyb_1) == 1) cykl[3] = 0;
break;
}
Serial.print("umyw_1 = " );
Serial.print(cykl[1]);
Serial.print("\t umyw_2 = ");
Serial.print(cykl[2]);
Serial.print("\t grzyb_1 = ");
Serial.print(cykl[3]);
Serial.print("\t rez4 = ");
Serial.print(cykl[4]);
Serial.print("\t dym = ");
Serial.println(cykl[5]);
delay(200);
}
mydło-2
mydło-1
woda-2
door 1
door 2
woda-1