Już wiem co było przyczyną .Kiedy pracował elektrozawór E1 i czekał na sygnał od czujnika MAX to przecież czujnik MIN tez zmienia swój stan podczas nalewania i te czujniki muszą działac wspólnie.Poprawiłem to w kodzie i teraz działa. ;-)
Duzo czytałem na temat róznych funkcji i ciężko jest mi przerzucić działanie tych funkcji ,zmiennych itp na konkretny projekt a o switch case to sie dowiedziałem dopiero od Ciebie... jakos nigdy na to nie trafiłem
Nie wiem dlaczego ale kod w programie tincercad nie działa a na płytce stykowej jest ok.
Duzo czytałem na temat róznych funkcji i ciężko jest mi przerzucić działanie tych funkcji ,zmiennych itp na konkretny projekt a o switch case to sie dowiedziałem dopiero od Ciebie... jakos nigdy na to nie trafiłem
Kod:
#define CZUJNIK_MAX 2
#define CZUJNIK_MIN 3
#define E1 4
#define E2 5
#define P1 6
#define P2 7
#define START 8
int etap=0;
void setup() {
digitalWrite(P1, LOW);
digitalWrite(P2, LOW);
digitalWrite(E1, LOW);
digitalWrite(E2, LOW);
pinMode(P1, OUTPUT);
pinMode(P2, OUTPUT);
pinMode(E1, OUTPUT);
pinMode(E2, OUTPUT);
pinMode(CZUJNIK_MAX, INPUT_PULLUP);
pinMode(CZUJNIK_MIN, INPUT_PULLUP);
pinMode(START, INPUT_PULLUP);
}
void loop() {
switch(etap){
case 0://oczekiwanie na przycisk start
if (digitalRead(START)==LOW)etap=1;
break;
case 1://załączenie E1
digitalWrite(E1, HIGH);
etap=2;
break;
case 2://oczekiwanie na czujnik MAX
if ((digitalRead(CZUJNIK_MAX)==LOW)&&(digitalRead (CZUJNIK_MIN)==LOW ))etap=3;
break;
case 3://wyłączenie E1, załączenie P1
digitalWrite(E1, LOW);
digitalWrite(P1, HIGH);
etap=4;
break;
case 4://oczekiwanie na czujnik MIN
if( (digitalRead(CZUJNIK_MIN)==HIGH)&& (digitalRead(CZUJNIK_MAX)==HIGH ))etap=5;
break;
case 5://wyłączenie P1, załączenie E2
digitalWrite(P1, LOW);
digitalWrite(E2, HIGH);
etap=6;
break;
case 6://oczekiwanie na czujnik MAX
if ((digitalRead(CZUJNIK_MAX)==LOW)&&(digitalRead(CZUJNIK_MAX)==LOW))etap=7;
break;
case 7://wyłączenie E2, załączenie P2
digitalWrite(E2, LOW);
digitalWrite(P2, HIGH);
etap=8;
break;
case 8://oczekiwanie na czujnik MIN
if ((digitalRead(CZUJNIK_MIN)==HIGH)&&(digitalRead(CZUJNIK_MAX)==HIGH))etap=9;
break;
case 9://wyłączenie P2
digitalWrite(P2, LOW);
etap=0;
break;
}
}