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 310  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.