Podlewaczka na 4 rośliny Pomocy !!!

Masz problem z Arduino? Tutaj możesz szukać pomocy.
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 17 gru 2015, 14:07

Witam

Mam problem w napisaniu programu do arduino podlewaczki na 4 rośliny. Próbowałem wiele razy ale nadal nie działa jak trzeba.W załączniku to co zmodziłem ale pewnie łatwiej będzie napisać nowy :D

Arduino Uno-klon
Czujnik wilgotności gleby x4 (nie mogę dodać linku ;/ taki jak na botland za 10zł.)
Dwukanałowy moduł przekaźników RM5 z izolacją optoelektroniczną 5V 10A/125VAC x2
Pompka spryskiwacza samochodowego x4
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

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


kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: kazzik87 » 17 gru 2015, 14:39

Ale z czym masz dokładnie problem?
---
Jeżeli pomogłem to kliknij "Pomógł".
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 17 gru 2015, 14:58

Problem polega z dopisaniem żeby załączało tylko dana pompkę ;/
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: kazzik87 » 17 gru 2015, 15:30

Dopisz sobie najpierw funkcje tego typu:

Kod: Zaznacz cały

void setPump(int _pumpNum, boolean _enable == true)
{
	if(_enable)
	{
		switch(_pumpNum)
		{
			case 1:
				digitalWrite(pumpPin1,HIGH); 
				break;
			case 2:
				digitalWrite(pumpPin2,HIGH); 
				break;
			case 3:
				digitalWrite(pumpPin3,HIGH); 
				break;
			case 4:
				digitalWrite(pumpPin4,HIGH); 
				break;
		}
	}
	else
	{
		switch(_pumpNum)
		{
			case 1:
				digitalWrite(pumpPin1,LOW); 
				break;
			case 2:
				digitalWrite(pumpPin2,LOW); 
				break;
			case 3:
				digitalWrite(pumpPin3,LOW); 
				break;
			case 4:
				digitalWrite(pumpPin4,LOW); 
				break;
		}
	}
}
Wykorzystanie:
Jak chcę włączyć daną pompę:

Kod: Zaznacz cały

setPump(1);
Jak chcę wyłączyć daną pompę:

Kod: Zaznacz cały

setPump(1, false);
Teraz musisz wstawić kod w odpowiednie miejsce i po problemie. Bo chyba wiesz kiedy pompa powinna działać a kiedy nie?
---
Jeżeli pomogłem to kliknij "Pomógł".
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 08:50

Dzięki , ale jestem początkującym w zabawie z arduino i nie wiem za bardzo jak to dopisać ;p
Dopisałem to tak ale nie dziala ;/

Kod: Zaznacz cały

int moistureSensor1Pin = A0;
int moistureSensor2Pin = A1;
int moistureSensor3Pin = A2;
int moistureSensor4Pin = A3;

int soggyLEDPin = 10;  // Dioda -  Mokro
int moistsoilLEDPin = 11;  // Dioda - Wilgotno
int drysoilLEDPin = 12;  // Dioda - Sucho

int pumpLEDPin = 13;  // Dioda dzialania pomp
int pumpPin1 = 2;
int pumpPin2 = 3;
int pumpPin3 = 4;
int pumpPin4 = 5;

int moistureSensor1Value;    // Wartosc z czujnika
int moistureSensor2Value;
int moistureSensor3Value;
int moistureSensor4Value;
int j = 0;



 
void setup(){
   
  Serial.begin(9600);

  pinMode(soggyLEDPin, OUTPUT);
  pinMode(moistsoilLEDPin,OUTPUT);
  pinMode(drysoilLEDPin,OUTPUT);
  pinMode(pumpLEDPin,OUTPUT);
  pinMode(pumpPin1,OUTPUT);
  pinMode(pumpPin2,OUTPUT);
  pinMode(pumpPin2,OUTPUT);
  pinMode(pumpPin4,OUTPUT);

   
}
 
void loop(){

      void setPump(int _pumpNum, boolean _enable == true)
{
   if(_enable)
   {
      switch(_pumpNum)
      {
         case 1:
            digitalWrite(pumpPin1,HIGH);
            break;
         case 2:
            digitalWrite(pumpPin2,HIGH);
            break;
         case 3:
            digitalWrite(pumpPin3,HIGH);
            break;
         case 4:
            digitalWrite(pumpPin4,HIGH);
            break;
      }
   }
   else
   {
      switch(_pumpNum)
      {
         case 1:
            digitalWrite(pumpPin1,LOW);
            break;
         case 2:
            digitalWrite(pumpPin2,LOW);
            break;
         case 3:
            digitalWrite(pumpPin3,LOW);
            break;
         case 4:
            digitalWrite(pumpPin4,LOW);
            break;
      }
   }
}




   
  Serial.print("Moisture Sensor 1 Value:");
  Serial.println(analogRead(A0));  
  delay(1000);

  Serial.print("Moisture Sensor 2 Value:");
  Serial.println(analogRead(A1));  
  delay(1000);

  Serial.print("Moisture Sensor 3 Value:");
  Serial.println(analogRead(A2));  
  delay(1000);

  Serial.print("Moisture Sensor 4 Value:");
  Serial.println(analogRead(A3));  
  delay(1000);

  moistureSensor1Value = analogRead(moistureSensor1Pin);
  moistureSensor2Value = analogRead(moistureSensor2Pin);
  moistureSensor3Value = analogRead(moistureSensor3Pin);
  moistureSensor4Value = analogRead(moistureSensor4Pin);

 
  if(moistureSensor1Value >= 700||moistureSensor2Value >= 700||moistureSensor3Value >= 700||moistureSensor4Value >= 700){      // W przypadku suchej gleby

 
    digitalWrite(drysoilLEDPin,HIGH);
    digitalWrite(moistsoilLEDPin,LOW);
    digitalWrite(soggyLEDPin,LOW);

  }

  if((moistureSensor1Value < 700) && (moistureSensor1Value >= 300)||(moistureSensor2Value < 700) && (moistureSensor2Value >= 300)||(moistureSensor3Value < 700) && (moistureSensor3Value >= 300)||(moistureSensor4Value < 700) && (moistureSensor4Value >= 300)){
    // W przypadku wilgotnego gruntu

    digitalWrite(drysoilLEDPin,LOW);
    digitalWrite(moistsoilLEDPin,HIGH);
    digitalWrite(soggyLEDPin,LOW);
  }



  if(moistureSensor1Value < 300||moistureSensor2Value < 300||moistureSensor3Value < 300||moistureSensor4Value < 300){
    // Mokro
    digitalWrite(drysoilLEDPin,LOW);
    digitalWrite(moistsoilLEDPin,LOW);
    digitalWrite(soggyLEDPin,HIGH);
  }
  

   if(moistureSensor1Value >= 700){
   setpump(1);
   setPump(2, false);
   setPump(3, false);
   setPump(4, false);
   }
   

   if(moistureSensor2Value >= 700){
    setpump(2);
   setPump(1, false);
   setPump(3, false);
   setPump(4, false);
   }

   if(moistureSensor3Value >= 700){
    setpump(3);
   setPump(1, false);
   setPump(2, false);
   setPump(4, false);
   }

   if(moistureSensor4Value >= 700){
    setpump(4);
   setPump(1, false);
   setPump(2, false);
   setPump(3, false);
   }


   
   
  
   
}
Awatar użytkownika
Marhef
Złota rączka
Posty: 1257
Rejestracja: 18 lis 2011, 02:18

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Marhef » 18 gru 2015, 09:19

Bo nie może działać. Wiesz, jak pisać funkcje w c/c++?
Tą funkcję, którą napisał kazzik87 dajesz przed void loop()
A w pętli głównej programu (czyli właśnie w loop()) wywołujesz ją tylko.

Jaki błąd wyrzuca przy kompilacji?
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 10:03

Nie wiem jak pisać funkcje ;d A błąd jest taki:

Kod: Zaznacz cały


Podlewaczka_na_4_rosliny.ino: In function 'void loop()':
Podlewaczka_na_4_rosliny:58: error: expected ',' or '...' before '==' token
Podlewaczka_na_4_rosliny:59: error: a function-definition is not allowed here before '{' token
Podlewaczka_na_4_rosliny:185: error: expected '}' at end of input
expected ',' or '...' before '==' token

Zrobiłem tak jak pisałeś ale nie działa coś .Co jest nie tak ?

Kod: Zaznacz cały

int moistureSensor1Pin = A0;
int moistureSensor2Pin = A1;
int moistureSensor3Pin = A2;
int moistureSensor4Pin = A3;

int soggyLEDPin = 10;  // Dioda -  Mokro
int moistsoilLEDPin = 11;  // Dioda - Wilgotno
int drysoilLEDPin = 12;  // Dioda - Sucho

int pumpLEDPin = 13;  // Dioda dzialania pomp
int pumpPin1 = 2;
int pumpPin2 = 3;
int pumpPin3 = 4;
int pumpPin4 = 5;

int moistureSensor1Value;    // Wartosc z czujnika
int moistureSensor2Value;
int moistureSensor3Value;
int moistureSensor4Value;
int j = 0;



 
void setup(){
   
  Serial.begin(9600);

  pinMode(soggyLEDPin, OUTPUT);
  pinMode(moistsoilLEDPin,OUTPUT);
  pinMode(drysoilLEDPin,OUTPUT);
  pinMode(pumpLEDPin,OUTPUT);
  pinMode(pumpPin1,OUTPUT);
  pinMode(pumpPin2,OUTPUT);
  pinMode(pumpPin2,OUTPUT);
  pinMode(pumpPin4,OUTPUT);


   void setPump(int _pumpNum, boolean _enable == true)
{
   if(_enable)
   {
      switch(_pumpNum)
      {
         case 1:
            digitalWrite(pumpPin1,HIGH);
            break;
         case 2:
            digitalWrite(pumpPin2,HIGH);
            break;
         case 3:
            digitalWrite(pumpPin3,HIGH);
            break;
         case 4:
            digitalWrite(pumpPin4,HIGH);
            break;
      }
   }
   else
   {
      switch(_pumpNum)
      {
         case 1:
            digitalWrite(pumpPin1,LOW);
            break;
         case 2:
            digitalWrite(pumpPin2,LOW);
            break;
         case 3:
            digitalWrite(pumpPin3,LOW);
            break;
         case 4:
            digitalWrite(pumpPin4,LOW);
            break;
      }
   }
}
}


 
void loop(){





   
  Serial.print("Moisture Sensor 1 Value:");
  Serial.println(analogRead(A0));  
  delay(1000);

  Serial.print("Moisture Sensor 2 Value:");
  Serial.println(analogRead(A1));  
  delay(1000);

  Serial.print("Moisture Sensor 3 Value:");
  Serial.println(analogRead(A2));  
  delay(1000);

  Serial.print("Moisture Sensor 4 Value:");
  Serial.println(analogRead(A3));  
  delay(1000);

  moistureSensor1Value = analogRead(moistureSensor1Pin);
  moistureSensor2Value = analogRead(moistureSensor2Pin);
  moistureSensor3Value = analogRead(moistureSensor3Pin);
  moistureSensor4Value = analogRead(moistureSensor4Pin);

 
  if(moistureSensor1Value >= 700||moistureSensor2Value >= 700||moistureSensor3Value >= 700||moistureSensor4Value >= 700){      // W przypadku suchej gleby

 
    digitalWrite(drysoilLEDPin,HIGH);
    digitalWrite(moistsoilLEDPin,LOW);
    digitalWrite(soggyLEDPin,LOW);

  }

  if((moistureSensor1Value < 700) && (moistureSensor1Value >= 300)||(moistureSensor2Value < 700) && (moistureSensor2Value >= 300)||(moistureSensor3Value < 700) && (moistureSensor3Value >= 300)||(moistureSensor4Value < 700) && (moistureSensor4Value >= 300)){
    // W przypadku wilgotnego gruntu

    digitalWrite(drysoilLEDPin,LOW);
    digitalWrite(moistsoilLEDPin,HIGH);
    digitalWrite(soggyLEDPin,LOW);
  }



  if(moistureSensor1Value < 300||moistureSensor2Value < 300||moistureSensor3Value < 300||moistureSensor4Value < 300){
    // Mokro
    digitalWrite(drysoilLEDPin,LOW);
    digitalWrite(moistsoilLEDPin,LOW);
    digitalWrite(soggyLEDPin,HIGH);
  }
  

   if(moistureSensor1Value >= 700){
   setpump(1);
   setPump(2, false);
   setPump(3, false);
   setPump(4, false);
   }
   

   if(moistureSensor2Value >= 700){
    setpump(2);
   setPump(1, false);
   setPump(3, false);
   setPump(4, false);
   }

   if(moistureSensor3Value >= 700){
    setpump(3);
   setPump(1, false);
   setPump(2, false);
   setPump(4, false);
   }

   if(moistureSensor4Value >= 700){
    setpump(4);
   setPump(1, false);
   setPump(2, false);
   setPump(3, false);
   }


   
   
  
   
}
Błąd :

Kod: Zaznacz cały

Podlewaczka_na_4_rosliny.ino: In function 'void setup()':
Podlewaczka_na_4_rosliny:54: error: expected ',' or '...' before '==' token
Podlewaczka_na_4_rosliny:55: error: a function-definition is not allowed here before '{' token
Podlewaczka_na_4_rosliny:187: error: expected '}' at end of input
expected ',' or '...' before '==' token
oczkers
Młodszy majsterkowicz
Posty: 6
Rejestracja: 15 gru 2015, 02:08

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: oczkers » 18 gru 2015, 10:50

Poprawione:
Spoiler:
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: kazzik87 » 18 gru 2015, 11:55

No źle!

Uwaga prywatna:
Proponuję zerknąć na jakieś kursy programowania c/c++ od podstaw.
Nie rozumiem ludzi którzy biorą się za Arduino i kopiują z neta kody a potem się dziwią że nie działa. Brak jakiejkolwiek minimalnej wiedzy w danym zakresie niestety zawsze będzie wadzić. Nie chcę tym nikogo urazić ale to już naprawdę zaczyna męczyć.


Coś do poczytania.

Trochę poprawiłem styl.
Tak powinno być:

Kod: Zaznacz cały

int moistureSensor1Pin = A0;
int moistureSensor2Pin = A1;
int moistureSensor3Pin = A2;
int moistureSensor4Pin = A3;

int soggyLEDPin = 10;  // Dioda -  Mokro
int moistsoilLEDPin = 11;  // Dioda - Wilgotno
int drysoilLEDPin = 12;  // Dioda - Sucho

int pumpLEDPin = 13;  // Dioda dzialania pomp
int pumpPin1 = 2;
int pumpPin2 = 3;
int pumpPin3 = 4;
int pumpPin4 = 5;

int moistureSensor1Value;    // Wartosc z czujnika
int moistureSensor2Value;
int moistureSensor3Value;
int moistureSensor4Value;
int j = 0;

void setPump(int _pumpNum, boolean _enable = true)
{
   if(_enable)
   {
      switch(_pumpNum)
      {
         case 1:
            digitalWrite(pumpPin1,HIGH);
            break;
         case 2:
            digitalWrite(pumpPin2,HIGH);
            break;
         case 3:
            digitalWrite(pumpPin3,HIGH);
            break;
         case 4:
            digitalWrite(pumpPin4,HIGH);
            break;
      }
   }
   else
   {
      switch(_pumpNum)
      {
         case 1:
            digitalWrite(pumpPin1,LOW);
            break;
         case 2:
            digitalWrite(pumpPin2,LOW);
            break;
         case 3:
            digitalWrite(pumpPin3,LOW);
            break;
         case 4:
            digitalWrite(pumpPin4,LOW);
            break;
      }
   }
}
 
void setup()
{
	Serial.begin(9600);

	pinMode(soggyLEDPin, OUTPUT);
	pinMode(moistsoilLEDPin,OUTPUT);
	pinMode(drysoilLEDPin,OUTPUT);
	pinMode(pumpLEDPin,OUTPUT);
	pinMode(pumpPin1,OUTPUT);
	pinMode(pumpPin2,OUTPUT);
	pinMode(pumpPin2,OUTPUT);
	pinMode(pumpPin4,OUTPUT);
}
 
void loop()
{   
	Serial.print("Moisture Sensor 1 Value:");
	Serial.println(analogRead(A0));  
	delay(1000); // do usunięcia

	Serial.print("Moisture Sensor 2 Value:");
	Serial.println(analogRead(A1));  
	delay(1000); // do usunięcia

	Serial.print("Moisture Sensor 3 Value:");
	Serial.println(analogRead(A2));  
	delay(1000); // do usunięcia

	Serial.print("Moisture Sensor 4 Value:");
	Serial.println(analogRead(A3));  
	delay(1000);

	moistureSensor1Value = analogRead(moistureSensor1Pin);
	moistureSensor2Value = analogRead(moistureSensor2Pin);
	moistureSensor3Value = analogRead(moistureSensor3Pin);
	moistureSensor4Value = analogRead(moistureSensor4Pin);

	if (moistureSensor1Value >= 700 || 
		moistureSensor2Value >= 700 || 
		moistureSensor3Value >= 700 || 
		moistureSensor4Value >= 700)
	{      // W przypadku suchej gleby
		digitalWrite(drysoilLEDPin,HIGH);
		digitalWrite(moistsoilLEDPin,LOW);
		digitalWrite(soggyLEDPin,LOW);
	}

	if ((moistureSensor1Value < 700) && 
		(moistureSensor1Value >= 300) || (moistureSensor2Value < 700) && 
		(moistureSensor2Value >= 300) || (moistureSensor3Value < 700) && 
		(moistureSensor3Value >= 300) || (moistureSensor4Value < 700) && 
		(moistureSensor4Value >= 300))
	{
		// W przypadku wilgotnego gruntu
		digitalWrite(drysoilLEDPin,LOW);
		digitalWrite(moistsoilLEDPin,HIGH);
		digitalWrite(soggyLEDPin,LOW);
	}

	if (moistureSensor1Value < 300 ||
		moistureSensor2Value < 300 || 
		moistureSensor3Value < 300 || 
		moistureSensor4Value < 300)
	{
		// Mokro
		digitalWrite(drysoilLEDPin,LOW);
		digitalWrite(moistsoilLEDPin,LOW);
		digitalWrite(soggyLEDPin,HIGH);
	}
 
	if (moistureSensor1Value >= 700)
	{
		setpump(1);
		setPump(2, false);
		setPump(3, false);
		setPump(4, false);
	}
   
   if (moistureSensor2Value >= 700)
   {
		setpump(2);
		setPump(1, false);
		setPump(3, false);
		setPump(4, false);
   }

   if (moistureSensor3Value >= 700)
   {
		setpump(3);
		setPump(1, false);
		setPump(2, false);
		setPump(4, false);
   }

   if (moistureSensor4Value >= 700)
	{
		setpump(4);
		setPump(1, false);
		setPump(2, false);
		setPump(3, false);
	}   
}
Ostatnio zmieniony 18 gru 2015, 15:04 przez kazzik87, łącznie zmieniany 1 raz.
---
Jeżeli pomogłem to kliknij "Pomógł".
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 12:26

Dzięki bardzo, ale teraz mam kolejny problem .

Kod: Zaznacz cały

    int moistureSensor1Pin = A0;
    int moistureSensor2Pin = A1;
    int moistureSensor3Pin = A2;
    int moistureSensor4Pin = A3;

    int soggyLEDPin = 10;  // Dioda -  Mokro
    int drysoilLEDPin = 12;  // Dioda - Sucho

    int pumpLEDPin = 13;  // Dioda dzialania pomp
    int pumpPin1 = 2;
    int pumpPin2 = 3;
    int pumpPin3 = 4;
    int pumpPin4 = 5;

    int moistureSensor1Value;    // Wartosc z czujnika
    int moistureSensor2Value;
    int moistureSensor3Value;
    int moistureSensor4Value;
    int j = 0;

    void setPump(int _pumpNum, boolean _enable == true)
    {
       if(_enable)
       {
          switch(_pumpNum)
          {
             case 1:
                digitalWrite(pumpPin1,HIGH);
                break;
             case 2:
                digitalWrite(pumpPin2,HIGH);
                break;
             case 3:
                digitalWrite(pumpPin3,HIGH);
                break;
             case 4:
                digitalWrite(pumpPin4,HIGH);
                break;
          }
       }
       else
       {
          switch(_pumpNum)
          {
             case 1:
                digitalWrite(pumpPin1,LOW);
                break;
             case 2:
                digitalWrite(pumpPin2,LOW);
                break;
             case 3:
                digitalWrite(pumpPin3,LOW);
                break;
             case 4:
                digitalWrite(pumpPin4,LOW);
                break;
          }
       }
    }
     
    void setup()
    {
       Serial.begin(9600);

       pinMode(soggyLEDPin, OUTPUT);
       pinMode(drysoilLEDPin,OUTPUT);
       pinMode(pumpLEDPin,OUTPUT);
       pinMode(pumpPin1,OUTPUT);
       pinMode(pumpPin2,OUTPUT);
       pinMode(pumpPin2,OUTPUT);
       pinMode(pumpPin4,OUTPUT);
    }
     
    void loop()
    {   
       

       moistureSensor1Value = analogRead(moistureSensor1Pin);
       moistureSensor2Value = analogRead(moistureSensor2Pin);
       moistureSensor3Value = analogRead(moistureSensor3Pin);
       moistureSensor4Value = analogRead(moistureSensor4Pin);

       if (moistureSensor1Value < 900 ||
          moistureSensor2Value < 900 ||
          moistureSensor3Value < 900 ||
          moistureSensor4Value < 900)
       {      // W przypadku suchej gleby
          digitalWrite(drysoilLEDPin,HIGH);
          digitalWrite(soggyLEDPin,LOW);
       }

       
       if (moistureSensor1Value > 500 ||
          moistureSensor2Value > 500 ||
          moistureSensor3Value > 500 ||
          moistureSensor4Value > 500)
       {
          // Mokro
          digitalWrite(drysoilLEDPin,LOW);
          digitalWrite(soggyLEDPin,HIGH);
       }
     
       if (moistureSensor1Value < 900)
       {
          setpump(1);
          setPump(2, false);
          setPump(3, false);
          setPump(4, false);
       }
       
       if (moistureSensor2Value < 900)
       {
          setpump(2);
          setPump(1, false);
          setPump(3, false);
          setPump(4, false);
       }

       if (moistureSensor3Value < 900)
       {
          setpump(3);
          setPump(1, false);
          setPump(2, false);
          setPump(4, false);
       }

       if (moistureSensor4Value < 900)
       {
          setpump(4);
          setPump(1, false);
          setPump(2, false);
          setPump(3, false);
       }   
    }


Bład :

uiiiiii:21: error: expected ',' or '...' before '==' token
iuiiiiii.ino: In function 'void loop()':
iuiiiiii:105: error: 'setpump' was not declared in this scope
iuiiiiii:113: error: 'setpump' was not declared in this scope
iuiiiiii:121: error: 'setpump' was not declared in this scope
iuiiiiii:129: error: 'setpump' was not declared in this scope
expected ',' or '...' before '==' token
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 12:34

A teraz jak zmieniłem setpump na setPump to jest taki błąd:

iuiiiiii:21: error: expected ',' or '...' before '==' token
iuiiiiii.ino: In function 'void loop()':
iuiiiiii:105: error: too few arguments to function 'void setPump(int, boolean)'
iuiiiiii.ino:21:10: note: declared here
iuiiiiii:113: error: too few arguments to function 'void setPump(int, boolean)'
iuiiiiii.ino:21:10: note: declared here
iuiiiiii:121: error: too few arguments to function 'void setPump(int, boolean)'
iuiiiiii.ino:21:10: note: declared here
iuiiiiii:129: error: too few arguments to function 'void setPump(int, boolean)'
iuiiiiii.ino:21:10: note: declared here
expected ',' or '...' before '==' token
oczkers
Młodszy majsterkowicz
Posty: 6
Rejestracja: 15 gru 2015, 02:08

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: oczkers » 18 gru 2015, 13:12

kazzik z całym szacunkiem ale przestań bredzić, poczytaj najpierw o definiowaniu domyślnych wartości funkcji (= zamiast == !) i popraw nazwy zmiennych (setpump != setPump)

Grzechu: sprawdź moją wersję, przed publikowaniem tego zbudowałem więc na pewno działa
stiven
Złota rączka
Posty: 1641
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: stiven » 18 gru 2015, 13:43

Tak oczkers, nie wiem co kazzik87 miał na myśli. Wasze kody są takie same, tylko on ma tą literówkę, no i == zamiast =.
Pojedyncze = to operator przypisania, a == to operator porównania. Tam się niczego nie porównuje, tylko przypisuje wartość domyślną dla argumentu funkcji.
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 15:03

Działa ale tylko na Pinie 5 :D Na pinie 4 nie dzieje się nic a na pinach 3 i 2 diody(pompki) tylko mrugają ;/

Kod: Zaznacz cały

    int moistureSensor1Pin = A0;
    int moistureSensor2Pin = A1;
    int moistureSensor3Pin = A2;
    int moistureSensor4Pin = A3;

    int soggyLEDPin = 10;  // Dioda -  Mokro
    int drysoilLEDPin = 12;  // Dioda - Sucho

    int pumpLEDPin = 13;  // Dioda dzialania pomp
    int pumpPin1 = 2;
    int pumpPin2 = 3;
    int pumpPin3 = 4;
    int pumpPin4 = 5;

    int moistureSensor1Value;    // Wartosc z czujnika
    int moistureSensor2Value;
    int moistureSensor3Value;
    int moistureSensor4Value;
    int j = 0;



    void setPump(int _pumpNum, boolean _enable = true)
    {
      if(_enable)
      {
        switch(_pumpNum)
        {
           case 1:
              digitalWrite(pumpPin1,HIGH);
              break;
           case 2:
              digitalWrite(pumpPin2,HIGH);
              break;
           case 3:
              digitalWrite(pumpPin3,HIGH);
              break;
           case 4:
              digitalWrite(pumpPin4,HIGH);
              break;
        }
     }
     else
     {
        switch(_pumpNum)
        {
           case 1:
              digitalWrite(pumpPin1,LOW);
              break;
           case 2:
              digitalWrite(pumpPin2,LOW);
              break;
           case 3:
              digitalWrite(pumpPin3,LOW);
              break;
           case 4:
              digitalWrite(pumpPin4,LOW);
              break;
        }
     }
    }



    void setup(){

      Serial.begin(9600);

      pinMode(soggyLEDPin, OUTPUT);
      pinMode(drysoilLEDPin,OUTPUT);
      pinMode(pumpLEDPin,OUTPUT);
      pinMode(pumpPin1,OUTPUT);
      pinMode(pumpPin2,OUTPUT);
      pinMode(pumpPin2,OUTPUT);
      pinMode(pumpPin4,OUTPUT);
    }



    void loop() {

      Serial.print("Moisture Sensor 1 Value:");
      Serial.println(analogRead(A0));
      delay(1000);

      Serial.print("Moisture Sensor 2 Value:");
      Serial.println(analogRead(A1));
      delay(1000);

      Serial.print("Moisture Sensor 3 Value:");
      Serial.println(analogRead(A2));
      delay(1000);

      Serial.print("Moisture Sensor 4 Value:");
      Serial.println(analogRead(A3));
      delay(1000);

      moistureSensor1Value = analogRead(moistureSensor1Pin);
      moistureSensor2Value = analogRead(moistureSensor2Pin);
      moistureSensor3Value = analogRead(moistureSensor3Pin);
      moistureSensor4Value = analogRead(moistureSensor4Pin);

      if(moistureSensor1Value > 900||moistureSensor2Value > 900||moistureSensor3Value > 900||moistureSensor4Value > 900) {      // W przypadku suchej gleby
        digitalWrite(drysoilLEDPin,HIGH);
        digitalWrite(soggyLEDPin,LOW);
      }



      if(moistureSensor1Value < 500||moistureSensor2Value < 500||moistureSensor3Value < 500||moistureSensor4Value < 500){
        // Mokro
        digitalWrite(drysoilLEDPin,LOW);
        digitalWrite(soggyLEDPin,HIGH);
      }

       if(moistureSensor1Value > 900) {
       setPump(1);
       setPump(2, false);
       setPump(3, false);
       setPump(4, false);
       }

       if(moistureSensor2Value > 900) {
       setPump(2);
       setPump(1, false);
       setPump(3, false);
       setPump(4, false);
       }

       if(moistureSensor3Value > 900) {
       setPump(3);
       setPump(1, false);
       setPump(2, false);
       setPump(4, false);
       }

       if(moistureSensor4Value < 900) {
       setPump(4);
       setPump(1, false);
       setPump(2, false);
       setPump(3, false);
       }

    }
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 15:22

Po dodaniu delay na pinie 2 działa tak jak trzeba , jak jest mokro załącza pompkę(diode) i świeci się led ze jest mokro.
Na pinie 3 zapala sie Led ze mokro ale pompka tez chodzi . A na Pinach 4 i 5 tylko Led :

Kod: Zaznacz cały

    int moistureSensor1Pin = A0;
    int moistureSensor2Pin = A1;
    int moistureSensor3Pin = A2;
    int moistureSensor4Pin = A3;

    int soggyLEDPin = 10;  // Dioda -  Mokro
    int drysoilLEDPin = 12;  // Dioda - Sucho

    int pumpLEDPin = 13;  // Dioda dzialania pomp
    int pumpPin1 = 2;
    int pumpPin2 = 3;
    int pumpPin3 = 4;
    int pumpPin4 = 5;

    int moistureSensor1Value;    // Wartosc z czujnika
    int moistureSensor2Value;
    int moistureSensor3Value;
    int moistureSensor4Value;
    int j = 0;



    void setPump(int _pumpNum, boolean _enable = true)
    {
      if(_enable)
      {
        switch(_pumpNum)
        {
           case 1:
              digitalWrite(pumpPin1,HIGH);
              break;
           case 2:
              digitalWrite(pumpPin2,HIGH);
              break;
           case 3:
              digitalWrite(pumpPin3,HIGH);
              break;
           case 4:
              digitalWrite(pumpPin4,HIGH);
              break;
        }
     }
     else
     {
        switch(_pumpNum)
        {
           case 1:
              digitalWrite(pumpPin1,LOW);
              break;
           case 2:
              digitalWrite(pumpPin2,LOW);
              break;
           case 3:
              digitalWrite(pumpPin3,LOW);
              break;
           case 4:
              digitalWrite(pumpPin4,LOW);
              break;
        }
     }
    }



    void setup(){

      Serial.begin(9600);

      pinMode(soggyLEDPin, OUTPUT);
      pinMode(drysoilLEDPin,OUTPUT);
      pinMode(pumpLEDPin,OUTPUT);
      pinMode(pumpPin1,OUTPUT);
      pinMode(pumpPin2,OUTPUT);
      pinMode(pumpPin2,OUTPUT);
      pinMode(pumpPin4,OUTPUT);
    }



    void loop() {

      Serial.print("Moisture Sensor 1 Value:");
      Serial.println(analogRead(A0));
      delay(1000);

      Serial.print("Moisture Sensor 2 Value:");
      Serial.println(analogRead(A1));
      delay(1000);

      Serial.print("Moisture Sensor 3 Value:");
      Serial.println(analogRead(A2));
      delay(1000);

      Serial.print("Moisture Sensor 4 Value:");
      Serial.println(analogRead(A3));
      delay(1000);

      moistureSensor1Value = analogRead(moistureSensor1Pin);
      moistureSensor2Value = analogRead(moistureSensor2Pin);
      moistureSensor3Value = analogRead(moistureSensor3Pin);
      moistureSensor4Value = analogRead(moistureSensor4Pin);

      if(moistureSensor1Value > 900||moistureSensor2Value > 900||moistureSensor3Value > 900||moistureSensor4Value > 900) {      // W przypadku suchej gleby
        digitalWrite(drysoilLEDPin,HIGH);
        digitalWrite(soggyLEDPin,LOW);
      }



      if(moistureSensor1Value < 500||moistureSensor2Value < 500||moistureSensor3Value < 500||moistureSensor4Value < 500){
        // Mokro
        digitalWrite(drysoilLEDPin,LOW);
        digitalWrite(soggyLEDPin,HIGH);
      }

       if(moistureSensor1Value > 900) {
       setPump(1);
       delay(1000);
       setPump(2, false);
       setPump(3, false);
       setPump(4, false);
       }

       if(moistureSensor2Value > 900) {
       setPump(2);
       delay(1000);
       setPump(1, false);
       setPump(3, false);
       setPump(4, false);
       }

       if(moistureSensor3Value > 900) {
       setPump(3);
       delay(1000);
       setPump(1, false);
       setPump(2, false);
       setPump(4, false);
       }

       if(moistureSensor4Value < 900) {
       setPump(4);
       delay(1000);
       setPump(1, false);
       setPump(2, false);
       setPump(3, false);
       }

    }
stiven
Złota rączka
Posty: 1641
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: stiven » 18 gru 2015, 15:29

Bez sensu, że na jednym pinie działa dobrze a na innych nie, warunki są przecież "wspólne". Zobacz taki kod, bez żadnych delayów, ewentualnie możesz dać jeden na samym końcu.

Spoiler:
Ostatnio zmieniony 18 gru 2015, 16:04 przez stiven, łącznie zmieniany 1 raz.
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 15:57

Pierwszy czujnik(A0) działa jak trzeba , pompki załączają się gdy jest sucho i wyłączają gdy jest mokro .
Na drugim czujniku(A1) Led ze jest mokro się świeci ale pompki nie wyłącza ;/ A na 3 i 4 czujniku nic nie działa.
stiven
Złota rączka
Posty: 1641
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: stiven » 18 gru 2015, 16:05

Zobacz teraz, zrobiłem kopiuj wklej i nie zmieniłem numerków. Poprawiłem kod we wcześniejszym poście.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1257
Rejestracja: 18 lis 2011, 02:18

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Marhef » 18 gru 2015, 16:12

Zamiast:

Kod: Zaznacz cały

       if(moistureSensor1Value > 900) setPump(1);
       else setPump(1, false);
dałbym:

Kod: Zaznacz cały

       if(moistureSensor1Value > 900) setPump(1);
       if(moistureSensor1Value < 850) setPump(1, false);
w ten sposób wydłużysz czas podlewania (wartość 850 została podana bez sprawdzenia, nie wiem, jak szybko zmieniają Ci się wartości odczytane na wejściu analogowym). W ten sposób zabezpiecza się też układ przy przejściu progu 900. Jeżeli da się tak, jak napisał stiven, przy wartościach ok. 900 pompa może włączać się i wyłączać wielokrotnie na krótką chwilę.
Sposób przeze mnie pokazany to najprostszy sposób na histerezę (doczytaj sobie, co to jest).
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 16:25

Nadal nie działa ; / Cały czas jest coś innego ,teraz na pinie 2 mruga dioda(pompka) a na 3, 4, 5 pinie nie działa ...
Może to wina Arduino ?
stiven
Złota rączka
Posty: 1641
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: stiven » 18 gru 2015, 16:33

Nie wiem o co chodzi. A te dwie diody mokro sucho działają dobrze?
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 16:39

Na pierwszym czujniku jak go dam do wody działa , Led się świeci ze jest mokro . Na drugim zaczyna mrugać raz sucho raz mokro . A na 3 i 4 czujce nic się nie dzieje
stiven
Złota rączka
Posty: 1641
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: stiven » 18 gru 2015, 16:40

Zobacz jeszcze tak, bez tej funkcji, tylko bezpośrednio i tak jak doradził Marhef
Spoiler:
stiven
Złota rączka
Posty: 1641
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: stiven » 18 gru 2015, 16:45

A to chyba przez to nie działa prawidłowo:

Kod: Zaznacz cały

    int moistureSensor1Pin = A0;
    int moistureSensor2Pin = A1;
    int moistureSensor3Pin = A2;
    int moistureSensor4Pin = A3;
zmień to na:

Kod: Zaznacz cały

    int moistureSensor1Pin = 14;  //A0
    int moistureSensor2Pin = 15;  //A1
    int moistureSensor3Pin = 16;  //A2
    int moistureSensor4Pin = 17;  //A3
Int to liczba, więc chyba nie da się przypisać tak jak było. A pin A0 to też pin numer 14 itd.
Grzechu
Młodszy majsterkowicz
Posty: 13
Rejestracja: 17 gru 2015, 10:26

Re: Podlewaczka na 4 rośliny Pomocy !!!

Post autor: Grzechu » 18 gru 2015, 17:34

Nadal nie działa ;//

Kod: Zaznacz cały

    int moistureSensor1Pin = 14;  //A0
    int moistureSensor2Pin = 15;  //A1
    int moistureSensor3Pin = 16;  //A2
    int moistureSensor4Pin = 17;  //A3

    int soggyLEDPin = 10;  // Dioda -  Mokro
    int drysoilLEDPin = 12;  // Dioda - Sucho

    int pumpLEDPin = 13;  // Dioda dzialania pomp
    int pumpPin1 = 2;
    int pumpPin2 = 3;
    int pumpPin3 = 4;
    int pumpPin4 = 5;

    int moistureSensor1Value;    // Wartosc z czujnika
    int moistureSensor2Value;
    int moistureSensor3Value;
    int moistureSensor4Value;
    int j = 0;

    void setup(){

      Serial.begin(9600);

      pinMode(soggyLEDPin, OUTPUT);
      pinMode(drysoilLEDPin,OUTPUT);
      pinMode(pumpLEDPin,OUTPUT);
      pinMode(pumpPin1,OUTPUT);
      pinMode(pumpPin2,OUTPUT);
      pinMode(pumpPin2,OUTPUT);
      pinMode(pumpPin4,OUTPUT);
    }

    void loop() {

      Serial.print("Moisture Sensor 1 Value:");
      Serial.println(analogRead(A0));

      Serial.print("Moisture Sensor 2 Value:");
      Serial.println(analogRead(A1));

      Serial.print("Moisture Sensor 3 Value:");
      Serial.println(analogRead(A2));

      Serial.print("Moisture Sensor 4 Value:");
      Serial.println(analogRead(A3));

      moistureSensor1Value = analogRead(moistureSensor1Pin);
      moistureSensor2Value = analogRead(moistureSensor2Pin);
      moistureSensor3Value = analogRead(moistureSensor3Pin);
      moistureSensor4Value = analogRead(moistureSensor4Pin);

      if(moistureSensor1Value > 900||moistureSensor2Value > 900||moistureSensor3Value > 900||moistureSensor4Value > 900) {      // W przypadku suchej gleby
        digitalWrite(drysoilLEDPin,HIGH);
        digitalWrite(soggyLEDPin,LOW);
      }

      if(moistureSensor1Value < 500||moistureSensor2Value < 500||moistureSensor3Value < 500||moistureSensor4Value < 500){
        // Mokro
        digitalWrite(drysoilLEDPin,LOW);
        digitalWrite(soggyLEDPin,HIGH);
      }

       if(moistureSensor1Value > 900) digitalWrite(pumpPin1,HIGH);
       if(moistureSensor1Value < 850) digitalWrite(pumpPin1,HIGH);

       if(moistureSensor2Value > 900) digitalWrite(pumpPin2,HIGH);
       if(moistureSensor2Value < 850) digitalWrite(pumpPin2,HIGH);
     
       if(moistureSensor3Value > 900) digitalWrite(pumpPin3,HIGH);
       if(moistureSensor3Value < 850) digitalWrite(pumpPin3,HIGH);
     
       if(moistureSensor4Value > 900) digitalWrite(pumpPin4,HIGH);
       if(moistureSensor4Value < 850) digitalWrite(pumpPin4,HIGH);

    }
ODPOWIEDZ

Strony partnerskie: