Miernik wody oraz uruchamianie pompy !!!

Pochwal się, co ostatnio zmajstrowałeś.
ODPOWIEDZ
pomier
Młodszy majsterkowicz
Posty: 2
Rejestracja: 10 lut 2018, 19:11

Miernik wody oraz uruchamianie pompy !!!

Post autor: pomier » 11 lut 2018, 20:14

Witam, zrobiłem sobie taki mały projekcik potrzebny z racji dużej ilości wody w piwnicy.
Projekt zakłada mierzenie ilości wody od zera do 8 cm i następnie uruchomienie pompy.
Zastosowałem czujnik odbiciowy oraz przekaźnik. do tego dodałem sobie 8 diód LED, które pokazują poziom wody.
Napisałem taki kod... niestety nie mam doświadczenia z rejestrem przesuwnym i jest co jest. Niby wszystko działa ale proszę o konsultację.

Kod: Zaznacz cały

#define trigPin 12
#define echoPin 11
int ledustawienie = 13;
int diodapompa = 10;
int pompaONOFF = 2; //pompa ON/OFF

int dodaj = 1;
int sucho = 30;
int woda = 21;
int ustawienie = 31;
int miarkajeden = 29;
int miarkadwa = 28;
int miarkatrzy = 27;
int miarkacztery = 26;
int miarkapiec = 25;
int miarkaszesc = 24;
int miarkasiedem = 23;
int miarkaosiem = 22;


int latchPin = 7;
int clockPin = 4;
int dataPin = 6;
byte data = 0; 
int currentLED = 0;

int buttonStatus=HIGH;
const int button = 8; //klawisz ręcznego odpalania pompy

 
void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście
  pinMode(echoPin, INPUT); //a echo, jako wejście
 pinMode(pompaONOFF, OUTPUT); //pompa się uruchmia
 pinMode(diodapompa, OUTPUT);  
 pinMode(ledustawienie, OUTPUT);

  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

   digitalWrite(button, HIGH); // wewnetrzny rezystor podciagajacy
}
 
void loop() { 
  Serial.print(zmierzOdleglosc());
  Serial.println(" cm");
  delay(300);

  buttonStatus=digitalRead(button);
  if (HIGH==buttonStatus) {
  
 


  if (zmierzOdleglosc() <= woda) {
    digitalWrite(pompaONOFF, HIGH);
    digitalWrite(diodapompa, HIGH);
    
  } else {
    if (zmierzOdleglosc() >= sucho){
      digitalWrite(pompaONOFF, LOW);
      digitalWrite(diodapompa, LOW);
      } 
      }

 if (zmierzOdleglosc() == ustawienie) {
    digitalWrite(ledustawienie, HIGH);
    } else {
      digitalWrite(ledustawienie, LOW);;
      }


if (zmierzOdleglosc() >= woda) {
 if (zmierzOdleglosc() == miarkajeden) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 1);
  digitalWrite(latchPin, HIGH);
    } 


 if (zmierzOdleglosc() == miarkadwa) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 3);
  digitalWrite(latchPin, HIGH);
    }

     if (zmierzOdleglosc() == miarkatrzy) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 7);
  digitalWrite(latchPin, HIGH);
    }

         if (zmierzOdleglosc() == miarkacztery) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 15);
  digitalWrite(latchPin, HIGH);
    }

         if (zmierzOdleglosc() == miarkapiec) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 31);
  digitalWrite(latchPin, HIGH);
    }

      if (zmierzOdleglosc() == miarkaszesc) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 63);
  digitalWrite(latchPin, HIGH);
    }

        if (zmierzOdleglosc() == miarkasiedem) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 127);
  digitalWrite(latchPin, HIGH);
    }

            if (zmierzOdleglosc() == miarkaosiem) {
     digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 255);
  digitalWrite(latchPin, HIGH);
    }

                if (zmierzOdleglosc() >= sucho) {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 0);
  digitalWrite(latchPin, HIGH);

    }

} 
 } else {
     digitalWrite(pompaONOFF, HIGH);
     digitalWrite(diodapompa, HIGH);
  }
      
}

 
int zmierzOdleglosc() {
  long czas, dystans;
 
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(20);
  digitalWrite(trigPin, LOW);
 
  czas = pulseIn(echoPin, HIGH);
  dystans = czas / 58;
 
  return dystans;
}
plytka czujnika pompa.jpg
plytka czujnika pompa 2.jpg
plytka czujnika pompa 3.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


ODPOWIEDZ

Strony partnerskie: