Handsändare Deadbolt (4 / 5 steg)
Steg 4: Program
Disclaimer: Jag är inte en programmerare och därför den nedan koden kanske inte de mest effektiva. Känn dig fri att förbättra koden för ditt eget bruk om du ser några fel eller problem. Det fungerar för mig så jag hoppas det fungerar för dig.Vänd CW till lås och CCW att låsa upp
1700 CCW; 1500 stop; 1300 CW
Skrivet av Chris Rybitski
#include < Servo.h >
Servo deadbolt; skapa servo
CONST int CWLimit = 6; Gränslägesbrytaren på 6 låsa upp
CONST int CCWLimit = 7. Gränslägesbrytaren på 7 lås
CONST int Redbtn = 12; röda knappen
CONST int Blackbtn = 8; svarta knappen
CONST int GreenLED = 10; Grön LED
CONST int RedLED = 11; Röd LED
CONST int Ch1 = 5; RF-kanal 1
CONST int Ch2 = 4; RF-kanal 2
CONST int Buzz = 9. summern
int Lås upp = 0;
int Lock = 0;
int timer = 0;
booleska UnLcomplete = false;
booleska Lcomplete = false;
void setup()
{
Serial.BEGIN(9600);
Deadbolt.attach(3); fäster servo
pinMode (GreenLED, OUTPUT);
pinMode (RedLED, OUTPUT);
pinMode(Buzz,OUTPUT);
pinMode (CWLimit, indata);
pinMode (CCWLimit, indata);
pinMode (Redbtn, indata);
pinMode (Blackbtn, indata);
pinMode (Ch1, indata);
pinMode (Ch2, indata);
Lysdioder och summern att vara avstängd som standard
digitalWrite (GreenLED, hög);
digitalWrite (RedLED, hög);
digitalWrite (Buzz, hög);
}
void loop()
{
om (digitalRead(Ch1) == hög || digitalRead(Redbtn) == låg) {//If remote eller knappen trycks
IF(UnLcomplete == false) {//dont köra låsa upp om dörren är redan upplåst
Serial.println("UnLock");
Låsa upp = 1 ;}}
om (digitalRead(Ch2) == hög || digitalRead(Blackbtn) == låg) {//If remote eller knappen trycks
IF(Lcomplete == false) {//dont köra lås om dörren är redan låst
Serial.println("lock");
Lock = 1 ;}}
//---------------UNLOCK-------------------------
om (Lås upp == 1) {
timer = 0;
medan (digitalRead(CWLimit) == låg) {
om (timer > 1500) {
digitalWrite (Buzz, låg);
Delay(500);
digitalWrite (Buzz, hög);
}
annat {
Deadbolt.write(1700);
timer ++;
Delay(1);
}}
Deadbolt.write(1500); servo stop
digitalWrite (RedLED, låg);
digitalWrite (GreenLED, hög);
UnLcomplete = sant; låsa upp komplett
Lcomplete = false; återställa lås boolean
digitalWrite (Buzz, låg);
Delay(100);
digitalWrite (Buzz, hög);
Låsa upp = 0; återställa
}
//--------------LOCK----------------------------
om (lås == 1) {
timer = 0;
medan (digitalRead(CCWLimit) == låg) {
om (timer > 1500) {
digitalWrite (Buzz, låg);
Delay(500);
digitalWrite (Buzz, hög);
}
annat {
Deadbolt.write(1300);
timer ++;
Delay(1);
}}
Deadbolt.write(1500);
digitalWrite (GreenLED, låg);
digitalWrite (RedLED, hög);
Lcomplete = sant; Lås komplett
UnLcomplete = false; återställa lås boolean
digitalWrite (Buzz, låg);
Delay(100);
digitalWrite (Buzz, hög);
Delay(50);
digitalWrite (Buzz, låg);
Delay(100);
digitalWrite (Buzz, hög);
Lock = 0; återställa
}
}