updated bitlair_doorduino to direct motor drive

This commit is contained in:
Bob 2017-01-08 19:19:39 +01:00
parent d3cfe7e904
commit d5fcd80cef

View file

@ -7,9 +7,10 @@
#include "Entropy.h" #include "Entropy.h"
#include "sha1.h" #include "sha1.h"
#define PIN_HORN 6
#define PIN_OPEN 5
#define PIN_CLOSE 4 #define PIN_CLOSE 4
#define PIN_OPEN 5
#define PIN_LOCK 6
#define PIN_UNLOCK 7
#define PIN_1WIRE 13 #define PIN_1WIRE 13
#define PIN_LEDGREEN 10 #define PIN_LEDGREEN 10
@ -147,7 +148,8 @@ void setup()
pinMode(PIN_OPEN, OUTPUT); pinMode(PIN_OPEN, OUTPUT);
pinMode(PIN_CLOSE, OUTPUT); pinMode(PIN_CLOSE, OUTPUT);
pinMode(PIN_HORN, OUTPUT); pinMode(PIN_LOCK, OUTPUT);
pinMode(PIN_UNLOCK, OUTPUT);
pinMode(PIN_LEDGREEN, OUTPUT); pinMode(PIN_LEDGREEN, OUTPUT);
pinMode(PIN_LEDRED, OUTPUT); pinMode(PIN_LEDRED, OUTPUT);
@ -492,8 +494,45 @@ void ParseCMD(char* cmdbuf, uint8_t cmdbuffill)
} }
} }
#define TOGGLE_TIME 2500 void OpenLock() {
#define BUTTON_TIME 250 // Lock motor has 200ms lead time and 200ms overlap
digitalWrite(PIN_LOCK, HIGH);
DelayLEDs(200);
digitalWrite(PIN_OPEN, HIGH);
DelayLEDs(200);
digitalWrite(PIN_LOCK, LOW);
DelayLEDs(4800);
digitalWrite(PIN_OPEN, LOW);
DelayLEDs(100);
// Back up a bit
digitalWrite(PIN_CLOSE, HIGH);
DelayLEDs(400);
digitalWrite(PIN_CLOSE, LOW);
DelayLEDs(100);
// Unlock motor
digitalWrite(PIN_UNLOCK, HIGH);
DelayLEDs(100);
digitalWrite(PIN_UNLOCK, LOW);
}
void CloseLock() {
// Lock motor has 200ms lead time and 200ms overlap
digitalWrite(PIN_LOCK, HIGH);
DelayLEDs(200);
digitalWrite(PIN_CLOSE, HIGH);
DelayLEDs(200);
digitalWrite(PIN_LOCK, LOW);
DelayLEDs(4800);
digitalWrite(PIN_CLOSE, LOW);
DelayLEDs(100);
// Unlock motor
digitalWrite(PIN_UNLOCK, HIGH);
DelayLEDs(100);
digitalWrite(PIN_UNLOCK, LOW);
}
void ToggleLock() void ToggleLock()
{ {
@ -501,25 +540,13 @@ void ToggleLock()
{ {
g_lockopen = false; g_lockopen = false;
Serial.println("closing lock"); Serial.println("closing lock");
for (uint8_t i = 0; i < 3; i++) CloseLock();
{
digitalWrite(PIN_CLOSE, HIGH);
DelayLEDs(BUTTON_TIME);
digitalWrite(PIN_CLOSE, LOW);
DelayLEDs(TOGGLE_TIME - BUTTON_TIME);
}
} }
else else
{ {
g_lockopen = true; g_lockopen = true;
Serial.println("opening lock"); Serial.println("opening lock");
for (uint8_t i = 0; i < 3; i++) OpenLock();
{
digitalWrite(PIN_OPEN, HIGH);
DelayLEDs(BUTTON_TIME);
digitalWrite(PIN_OPEN, LOW);
DelayLEDs(TOGGLE_TIME - BUTTON_TIME);
}
} }
DelayLEDs(4000); DelayLEDs(4000);
@ -529,7 +556,8 @@ void ToggleLock()
bool HasMainsPower() bool HasMainsPower()
{ {
return digitalRead(PIN_MAINS_POWER) == HIGH; return true;
//return digitalRead(PIN_MAINS_POWER) == HIGH;
} }
void loop() void loop()