Temelelektronik.info

Bilgiler > Örnek Otomatik Kapı Programı



Örnek Otomatik Kapı Programı

#include "RCSwitch.h"
RCSwitch mySwitch = RCSwitch();

#define ac 8
#define kapa 7
int kilit=0;      //motoru devre dışı bırakan kilit değişkeni, 1 iken motor hareket etmez
int guvenlik=0;   //sistemin güvenli ya da güvensiz olduğunu bildirir değişken
int gelenveri=0;  //okunan rf kodu
int kapamaswici=0;//1 iken kapının kapalı olduğunu gösterir
int acmaswici=0;  //1 iken kapının açık olduğunu gösterir
int sensor=0;     //1 iken kapının arasına cisim girdiğini gösterir.
void setup() 
{
pinMode(ac, OUTPUT);
pinMode(kapa, OUTPUT);
pinMode(11, INPUT);
pinMode(10,INPUT);
pinMode(9,INPUT);
digitalWrite(kapa, LOW);
digitalWrite(ac, LOW);
//digitalWrite(11, LOW);
//digitalWrite(10, HIGH);
Serial.begin(9600);
mySwitch.enableReceive(0);
}
void loop() 
{              
        //rf kodu oku
         if (mySwitch.available())
       {     
                  gelenveri = mySwitch.getReceivedValue();
                //kapı kapalıyken açma tuşuna basıldığında sensörün önü boşsa kapıyı aç
                if (gelenveri==22145 || gelenveri==-5503 || gelenveri==32385 || gelenveri==-19071 || gelenveri==7201 || gelenveri==22049 || gelenveri==17281 ||gelenveri==5568||gelenveri==915||gelenveri==-27103||gelenveri==20528||gelenveri==-29176)
                 {
                      //kapı kapalıysa ve sensörün önünde bi şey yoksa
                      if (kapamaswici==1 && acmaswici==0 && sensor==0)
                      {digitalWrite(ac, HIGH); digitalWrite(kapa, LOW); kilit=0;  delay(1500);}
                 }
                  //kapı açıkken kapama tuşuna basıldığında sensörün önü boşsa kapıyı kapat.                
                if (gelenveri==22146 || gelenveri==-5502 || gelenveri==32386 || gelenveri==-19070 || gelenveri==7202 || gelenveri==22052 || gelenveri==17282||gelenveri==5388||gelenveri==913||gelenveri==20492||gelenveri==-29180)
                {
                    //kapı açıksa ve sensörün önünde bi şey yoksa
                     if(acmaswici==1 && kapamaswici==0 && sensor==0)
                     {digitalWrite(kapa, HIGH); digitalWrite(ac, LOW); kilit=0; guvenlik=1; delay(1500);}
                }

                 //kapı hareket halindeyken durdurma tuşuna basılınca kapıyı durdur.
                 if (gelenveri==22148 ||  gelenveri==-5500 || gelenveri==32388 || gelenveri==-19068 || gelenveri==7204 || gelenveri==22056 || gelenveri==17284)
                 {
                     if(kapamaswici==0 && acmaswici==0)  
                     {digitalWrite(kapa, LOW); digitalWrite(ac, LOW); kilit=1;}
                 }

                 //sistem kilitli durumdayken kapı açma tuşuna tekrar basıldığında sensörün önü boşsa kapıyı aç ve kilit durumunu iptal et
                 if (gelenveri==22145 || gelenveri==-5503 || gelenveri==32385 || gelenveri==-19071 || gelenveri==7201 || gelenveri==22049 || gelenveri==17281 ||gelenveri==5568||gelenveri==915||gelenveri==-27103||gelenveri==20528||gelenveri==-29176)
                 {
                    if (kilit==1 && sensor==0)
                    {digitalWrite(ac, HIGH); digitalWrite(kapa, LOW); kilit=0;}
                 }

                 //sistem kilitli durumdayken kapama tuşuna tekrar basıldığında sensörün önü boşsa kapıyı kapat ve kilid(bloke) durumunu iptal et
                 if (gelenveri==22146 || gelenveri==-5502 || gelenveri==32386 || gelenveri==-19070 || gelenveri==7202 || gelenveri==22052 || gelenveri==17282||gelenveri==5388||gelenveri==913||gelenveri==20492||gelenveri==-29180)
                 {    //sensörün önünde kimse yoksa ve sistemin kilidini aç.
                      if (kilit==1 && sensor==0)
                    {digitalWrite(kapa, HIGH); digitalWrite(ac, LOW); guvenlik=1; kilit=0;}
                 }                                 
                    mySwitch.resetAvailable(); 
       }
          //3 sensörü oku
                  kapamaswici=digitalRead(10); 
                  acmaswici=digitalRead(11); 
                  sensor=digitalRead(9);

         //kapı açıldığında kapıyı durdur
         if(kapamaswici==0 && acmaswici==1)
          {digitalWrite(kapa, LOW); digitalWrite(ac, LOW);}
        //kapı kapandığında kapıyı durdur
         if(kapamaswici==1 && acmaswici==0)
          {digitalWrite(kapa, LOW); digitalWrite(ac, LOW);}
        //kapı hareket halinde iken sensörün önünde nesne varsa kapıyı durdur, sistemi güvensiz duruma getir ve sistemi kilitle
         if(kapamaswici==0 && acmaswici==0 && sensor==1 && guvenlik==1)
         {
          
                 if (gelenveri==22145 || gelenveri==-5503 || gelenveri==32385 || gelenveri==-19071 || gelenveri==7201 || gelenveri==22049 || gelenveri==17281 ||gelenveri==5568||gelenveri==915||gelenveri==-27103||gelenveri==20528||gelenveri==-29176)
                 {
                  //kapıyı aç tuşuna basılmışsa sensör kontrolünü yapma
                  }
                  else
                  {
                     //kapıyı kapat tuşuna basılmışsa sensör kontrolünü yap
                  digitalWrite(kapa, LOW); digitalWrite(ac, LOW);  guvenlik=0; kilit=1;
                  }
         }
         
         
         }


sonraki bilgi:      DYS Evrak Sorgulama

önceki bilgi:       Yerel Ağdaki Bilgisayarların ip adreslerini öğrenme

 
 

Bu sayfaya 491  defa bakıldı


Bu internet sitesi kar amacı gütmemektedir. Bu içeriğin siteden kaldırılmasını istiyorsanız alttaki butonu kullanarak içeriğin kaldırılması için istekte bulunabilirsiniz.


Telefon Uyumlu Sayfa