Bilgiler > Otomatik Kapı ve Aydınlatma Program Kodları
Otomatik Kapı ve Aydınlatma Program Kodları
#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, TX
int sayac=0;
void setup()
{
isiktest();
mySerial.begin(9600);
pinMode(led,OUTPUT);
pinMode(role,OUTPUT);
Serial.begin(19200);
digitalWrite(led,0);
Timer1.initialize(100000); // 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);
mySwitch.setPulseLength(504);
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<800)
{
digitalWrite(role,LOW);
}
if(darkness>950)
{
digitalWrite(role,HIGH);
}
}
//5 dakika da bir kapıyı kapat. Kapının açık kalmasını engelle
void timerIsr()
{
sayac++;
if(sayac>3000)//5 dakikada bir isigi test et ve kapiyi kapatma kodu gonder
{
isiktest(); //isik miktarini test et
kapat(); // Kapıyı kapat
sayac=0;
}
}
Devre:http://www.temelelektronik.inf....aspx?devre=731
***