Otopark Doluluk

Merhaba, Ben bir ödev için otoparkın doluluk, boşuk durumunu inceleyeceğim. Kısaca açıklayacak olursam; Kendi hazırlayacağımız kızılötesi devreden gelen bilgilere göre Arduino ya analog inputlardan giriş yapacağım. Bunlara göre de sayım yapacağım. İlk olarak 5 yerim varmış gibi yaptım. Şu şekliyle istediğimi aldım çalışıyor(Proteus’ta simüle ettim. Arduino’m var ama kızılötesi hala hazır olmadığı için simulasyon kullanma gereği duydum) Size danışmaktaki amacım; Derlemeyi 5 araç gibi küçük bir rakama göre yapmam. Daha büyük sayılara da uyarlamak istersek ne yapmam gerekir? Fikir verirseniz sevirim. İyi günler Kodlarım; include <liquidcrystal.h> // LCD kutuphanesi eklendi
LiquidCrystal lcd(27,26,22,23,24,25); // LCD-Arduino pin baglantilari (RS,E,D4,D5,D6,D7)

int sensor1Pin = A0; // Analog Input’ lar
int sensor2Pin = A1;
int sensor3Pin = A2;
int sensor4Pin = A3;
int sensor5Pin = A4;
int sensor1,sensor2,sensor3,sensor4,sensor5;
int dolu1,dolu2,dolu3,dolu4,dolu5,bos1,bos2,bos3,bos4,bos5;
int toplamBos,toplamDolu;

void setup()
{

 sensor1=0;    
 sensor2=0;
 sensor3=0;
 sensor4=0;
 sensor5=0;

}
void loop()
{
sensor1 = analogRead(sensor1Pin); // Sensorlerden gelen degerler
sensor2 = analogRead(sensor2Pin); // Analog islendi
sensor3 = analogRead(sensor3Pin);
sensor4 = analogRead(sensor4Pin);
sensor5 = analogRead(sensor5Pin);
if (sensor1 > 512) // AnalogRead 1024 farkli deger okur.Yarisi kadar hassasiyetle hesaba katarak
{ // sensorden gelen bilgi alindi.
sensor1=1;
}
else
{
sensor1=0;
}

   switch (sensor1)
   {
    case 0:
      bos1 =1;
      dolu1=0;
    break;
  
    case 1:
      bos1=0;
      dolu1=1;
    break;
    }
 if (sensor2 &gt; 512)
 {
   sensor2=1;
 }  
 else
  { 
    sensor2=0;
  }
   switch (sensor2)
   {
    case 0:
     bos2 =1;
     dolu2=0;
    break;
  
    case 1:
      bos2=0;
      dolu2=1;
    break;
   }
   
if (sensor3 &gt; 512)
  {
   sensor3=1;
  }  
 else
  { 
    sensor3=0;
  }  
 
    switch(sensor3)  
    {
    case 0:
      bos3 =1;
      dolu3=0;
    break;
  
    case 1:
      bos3=0;
      dolu3=1;
    break;  
    }
    
 if (sensor4 &gt; 512)
  {
   sensor4=1;
  }  
  else
  { 
    sensor4=0;
  } 
    switch(sensor4)
    {
    case 0:
      bos4=1;
      dolu4=0;
    break;
  
    case 1:
      bos4=0;
      dolu4=1;
    break;
     }
     
if (sensor5 &gt; 512)
  {
    sensor5=1;
  }  
 else
  { 
    sensor1=0;
  }
  
     switch(sensor5)
      {
     case 0:
       bos5 =1;
       dolu5=0;
     break;
   
     case 1:
       bos5=0;
       dolu5=1;
     break;
  }
  
 toplamBos= bos1 + bos2 + bos3 + bos4 + bos5;
 toplamDolu= dolu1 + dolu2 + dolu3 + dolu4 + dolu5;

delay(1000);
lcd.begin(16, 2);
lcd.setCursor(0,0);

lcd.print(“dolu sayisi=”);
lcd.print(toplamDolu);

lcd.setCursor(0,1);
lcd.print(“bos sayisi=”);
lcd.print(toplamBos);

}
</liquidcrystal.h>

bir network kurmanız gerekiyor her sensore bir lojik sayı vereceksiniz dolu boş durumunu sunucuya yollayacaksınız bir uno ile 11 lojik okuma yazabilirsiniz her 11 araç için bir uno ve ethernet kartı takıp bunları bir pc sunucuya veri yollyacak şeklide programlayacaksınız.

ben olsam bunu 2 sensor ile çözerdim, 1. sensor otopark giriş kapısında 2. sensor de otopark çıkış kapısındaki sensor, girişten bilgi geldikçe değişken artar, çıkış sensorden bilgi geldikçe değişken azalır…

18b20 one-wire sıcaklık sensörü gibi ardışık olarak bağlanabilen kızılötesi sensör bulabilirseniz, istediğinizi kolaylıkla yapabilirsiniz. one-wire protokolü bu yüzden güzeldir :slight_smile: