Arduino ile çiçek sulama

writersoul

Üye
Katılım
15 Nis 2017
Mesajlar
78
Puanları
1
Yaş
58
Arkadaşlar merhaba.
Arduino uno ve röle kiti kullanarak 3 Tane saksıyı sulamak istiyorum. İf olayını tam olarak nasıl çalıştığını anlayamadığım için algoritma mantığını oturtamadım. Düşündüğüm algoritma kabaca:

Önce 1 nolu saksının nem değeri okunsun. Nem değeri belirlenen eşik değerinden düşükse yani toprak kuru ise 1 nolu pompa eşik değerinin geçene kadar çalışsın (ama ben bu kısmın nasıl yapılacağını bilmediğim için 3sn çalışacakmış gibi yazdım.) Sonra ikinci saksının nem değeri okunsun nem düşükse sulasın ve belirlenen nem değerine ulaşınca pompayı kapatsın ve son saksıya da işlem yapsın istiyorum. Kablo Bağlantılarını ve kod dilini internetten çalışarak oluşturabilirim diye düşünüyorum. Sizden ricam aşağıdaki kaba algoritmayı amaca uygun nasıl oluşturabilirim.

İf (saksı 1 nem değerini oku, nem düşükse)

{pompa1 çalıştır ;

Delay (3000); //burası 3 saniye değil de istenen nem değerine ulaşıncaya kadar çalışsa daha iyi olur

Pompa1 kapat;}



İf (saksı 2 nem değerini oku, nem düşükse)

{pompa2 çalıştır ;

Delay (3000); //burası 3 saniye değil de istenen nem değerine ulaşıncaya kadar çalışsa daha iyi olur

Pompa2 kapat;}

İf (saksı 3 nem değerini oku, nem düşükse)

{pompa3 çalıştır ;

Delay (3000); //burası 3 saniye değil de istenen nem değerine ulaşıncaya kadar çalışsa daha iyi olur

Pompa3 kapat;}
 
İf durumu sınar eğer içerisindeki sınama doğru ise içerisinde ki olayları yapar eğer ki altında else komutu varsa if içerisinde ki şart bozulursa buradaki satırları çalıştırır

Temelin tam oturması için YouTube de Arduino haber ve lezzetli robot tarifleri var burada hem diğer konular var hemde istemiş olduğunuz konu ile ilgili projeler mevcut
 
Benim örnekte ilk if çalışıp gereğini yaptıktan sonra sonraki if satırına /satırlarına geçer mi?
 
Yapmaya çalışmış olduğunuz program arduino ya uyumlu değil o sebepten verdiğim örnekleri göz atmanızı tavsiye ederim
 
// Bu program 3 adet pompa ve nem sensörü ile otomatik çiçek sulama yapar 30/04/2024


int soilMoistureValue1 = 0; //1.saksının nem değeri

int soilMoistureValue2 = 0; //2.saksının nem değeri

int soilMoistureValue3 = 0; //3.saksının nem değeri

int percentage1=0;

int percentage2=0;

int percentage3=0;


void setup()
{
pinMode(3,OUTPUT); //3.pin 1.saksının pompasına bağlı

pinMode(4,OUTPUT); //4.pin 2.saksının pompasına bağlı

pinMode(5,OUTPUT); //5.pin 3.saksının pompasına bağlı

pinMode(A0,INPUT); //A0.pin 1.saksının nem sensörüne bağlı

pinMode(A1,INPUT); //A1.pin 2.saksının nem sensörüne bağlı

pinMode(A2,INPUT); //A2.pin 3.saksının nem sensörüne bağlı

}

void loop()

{
//1.saksı için

soilMoistureValue1 = analogRead(A0);
percentage1 = map(soilMoistureValue1, 490, 1023, 0, 100);
if (percentage1 < 10)
digitalWrite(3,LOW);

if(percentage1 >80)
{
digitalWrite(3,HIGH);
delay(3000); //3 saniye sulama yapılsın
digitalWrite(3,LOW);
delay(3000);

}

//2.saksı için

soilMoistureValue2 = analogRead(A1);

percentage2 = map(soilMoistureValue2, 490, 1023, 0, 100);
if (percentage2 < 10)
{
digitalWrite(4,LOW);

if(percentage2 >80)
{
digitalWrite(4,HIGH);
delay(3000); //3 saniye sulama yapılsın
digitalWrite(4,LOW);
}
}

//3. Saksı için

soilMoistureValue3 = analogRead(A2);
percentage3 = map(soilMoistureValue3, 490, 1023, 0, 100);
if (percentage3 < 10)
{
digitalWrite(5,LOW);

if(percentage3 >80)
{
digitalWrite(5,HIGH);
delay(3000); //3 saniye sulama yapılsın
digitalWrite(5,LOW);

}
}
}
 
Son düzenleme:
Bu kod şu şekilde mi çalışır:
1. sensörü okur toprak kuru ise 3 saniye sulama yapar ve ardından pompayı kapatır. Sonra 2.sensörü okur ve toprak kuru ise yine 3 saniye sulama yapar ve sonra pompayı kapatır ve aynını 3. sensör için uygular. sonra tekrar başa döner ve 1.sensörü okur ve toprak hala kuru ise 3 saniye daha sulama yapar sonra diğer sensörleri okuyarak aynı döngüyü tekrarlar..
 
Kodda saniye yapmak yerine tekrar bir nem okuma yapıp istenilen seviyede su kapatması sağlanması bitkinin çok fazla su ile zarar görmesini engeller
 
Şöyle ilk if sulanma ihtiyacını ölçülür sonrası sulama başlar
Else if ile veya if içerisinde tekrar ölçüm yapıp yeterli seviyeye ulaştığında döngüden çıkarılır bunu için break komutu veya goto komutları ile yapılabilir ama if ile sınamak yeterli olacagı kanatindeyim
 

Forum istatistikleri

Konular
128,368
Mesajlar
917,051
Kullanıcılar
450,240
Son üye
Bayram.A

Yeni konular

Geri
Üst