Bilgiler > Örnek Otomatik Kapı Programı
Örnek Otomatik Kapı Programı
#include "RCSwitch.h"RCSwitch mySwitch = RCSwitch();#define ac 8#define kapa 7int kilit=0; //motoru devre dışı bırakan kilit değişkeni, 1 iken motor hareket etmezint guvenlik=0; //sistemin güvenli ya da güvensiz olduğunu bildirir değişkenint gelenveri=0; //okunan rf koduint kapamaswici=0;//1 iken kapının kapalı olduğunu gösterirint acmaswici=0; //1 iken kapının açık olduğunu gösterirint 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; } } }
***