• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Prośba o pomoc w napisaniu programu
#37
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
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;
  }
}
Nie wiem dlaczego ale kod w programie tincercad nie działa a na płytce stykowej jest ok.
 
Odpowiedź
  


Wiadomości w tym wątku
Prośba o pomoc w napisaniu programu - przez gintur - 27-10-2023, 15:36
RE: Prośba o pomoc w napisaniu programu - przez gintur - 02-11-2023, 20:22

Skocz do:


Przeglądający: 1 gości