Açıklama
|
Devrenin Çalışması:app invertor kullanılarak yazılmış programdaki butonlara basılınca gönderilen kodlara göre, RF modülünden otomatik kapı devresine kumanda kodları gönderiliyor.LDR'den alınan değerlere göre, gece otomatik kapının elektriği güvenlik amacıyla kesilerek sistem devre dışı bırakılıyor. Aynı rölenin diğer kontağına bağlı bahçe aydınlatma projektörlerinin elektriği açılıyor.____________Program_______________//bluetoothrfdonusturucuLDRV7#include "SoftwareSerial.h"#include "TimerOne.h"#include "RCSwitch.h"RCSwitch mySwitch = RCSwitch(); int data;int led=13;int darkness=0;int role=5;SoftwareSerial mySerial(10, 11); // RX, TXint sayac=0; void setup() { isiktest(); mySerial.begin(9600); pinMode(led,OUTPUT); pinMode(role,OUTPUT); Serial.begin(19200); digitalWrite(led,0); Timer1.initialize(1000000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second) Timer1.attachInterrupt( timerIsr ); mySwitch.enableTransmit(2); // Optional set pulse length. mySwitch.setPulseLength(504); // Optional set protocol (default is 1, will work for most outlets) // mySwitch.setProtocol(2); // Optional set number of transmission repetitions. mySwitch.setRepeatTransmit(10); } void loop() { if (mySerial.available()) { data = mySerial.read(); if(data!=0) Serial.println(data); if(data==1) //istiklal marşı başlat/ durdur mars(); // kapıyı aç if(data==2) ac(); // kapıyı kapat if(data==3) kapat(); // kapıyı durdur if(data==4) durdur(); } } void kapat() { durdur(); mySwitch.send(22146, 24);//kapat Serial.println(22146); delay(1); sayac=0; digitalWrite(led,LOW); } void ac() { durdur(); mySwitch.send(22145, 24);//ac Serial.println(22145); delay(1); sayac=0; digitalWrite(led,HIGH); } void durdur() { mySwitch.send(22148, 24); Serial.println(22148); delay(750); sayac=0; } void mars() { mySwitch.send(15977475, 24); Serial.println(15977475); delay(1); } void isiktest() { darkness=analogRead(A6); Serial.println(darkness); if(darkness>900) { digitalWrite(role,HIGH); } else { digitalWrite(role,LOW); } } //5 dakika da bir kapıyı kapat. Kapının açık kalmasını engelle void timerIsr() { sayac++; if(sayac>300)//5 dakikada bir kapiyi kapatma kodu gonder { isiktest(); //isik miktarini test et //kapat(); Kapıyı kapat } }
|
|