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;
}
}
}
***