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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.