Skocz do zawartości

Prośba o pomoc w napisaniu programu


gintur

Pomocna odpowiedź

Witam.

Chciałbym zrobić automatyczną podmianę wody sterowaną przez Arduino Nano.

Plan jest taki ;pojemnik 20 L,2x czujnik poziomu,2x pompa,2 x elektrozawór.W pojemniku zamontowane są 2 pompki oraz 2 czujniki poziomu min i poziom max .Działanie programu:

1.Start

2.Otwiera się elektrozawór E1 wody brudnej.

3.Zawór ma się otworzyć na 1min potem ma się zamknąć.

4.Napełniony zbiornik przy pomocy czujnika Poz.Max uruchamia pomkę P1 która opróznia zbiornik do poziomu min

5.Czujnik Poz Min wyłącza pompke P1 i tym samym załącza elektrozawór wody czystej E2

6.Uruchomiony elektrozawór E2 wpuszcza wode do zbiornika w okreslonym czasie albo do momentu kiedy czujnik poziomu Max go wyłączy i tym samym załączy pompke P2 która oprózni wode ze zbiornika do poziomu czujnika Min który wyłączy pompkę .

7 Koniec programu.

Pomysł był taki aby Arduino wykonało 2 etapy

1.wpuścić wodę brudną i odpompować

2.napełnić pojemnik wodą czystą a następnie ją odpompować .

Program ,który próbuje zlepić ,wykonuje się tak do pkt.5 opisu no i zaczynaja się schody jak to dalej pisać .

Czy możliwe jest aby 2 pompy były obsłużone przez tylko 2 czujniki poziomu?

Czy każda z pomp musi mieć swój oddzielny czujnik poz min/max czyli łącznie 4 szt?Nie mogę sobie właśnie z tym poradzić aby czujniki w etapie pierwszym (woda brudna ) nie sterowały w tym samym czasie pompą i elektrozaworem w etapie drugim (woda czysta) bo póki co tak właśnie jest .

Pomoże ktoś?

[code]
int czujMin;              // czujnik min
int czujMax;              //czujnik max 
bool E1;                //elektrozawór wody brudnej
bool E2;                //elektrozawór wody czystej



void setup()
{
  pinMode(8,OUTPUT);         //wyj.na elektrozawór E2
  pinMode(6,INPUT_PULLUP);   //przycisk START programu
  pinMode(7,OUTPUT);         //wyj.na elektrozawór E1
  pinMode(4,OUTPUT);         // wyj. na pompe wody brudnej
  pinMode(3,INPUT_PULLUP);    // czujnik poziomu max
  pinMode(5,INPUT);           //czujnik poziomu min
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  E1=false;
  E2= false;
}

void loop(){
  if(digitalRead(6)==LOW)
  {digitalWrite(7,HIGH);
  delay(10000);}
  else{digitalWrite(7,LOW);}
  //delay(10000);}
  czujMax = digitalRead(3);
  czujMin = digitalRead(5);
  if(!czujMax==HIGH){E1 = true;}
  if(czujMin==HIGH){
    E1 = false;
  }
  if(E1){
    digitalWrite(4,HIGH);}
    else{digitalWrite(4,LOW);}
    if(czujMin==LOW && !czujMax==HIGH) {E2=true;}
    if(E2){
      digitalWrite(8,HIGH);}
      
      else{digitalWrite(8,LOW);}
    }
    
[/code]

 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.