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 "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_LEDGREEN 10
@ -147,7 +148,8 @@ void setup()
pinMode(PIN_OPEN, OUTPUT);
pinMode(PIN_CLOSE, OUTPUT);
pinMode(PIN_HORN, OUTPUT);
pinMode(PIN_LOCK, OUTPUT);
pinMode(PIN_UNLOCK, OUTPUT);
pinMode(PIN_LEDGREEN, OUTPUT);
pinMode(PIN_LEDRED, OUTPUT);
@ -492,8 +494,45 @@ void ParseCMD(char* cmdbuf, uint8_t cmdbuffill)
}
}
#define TOGGLE_TIME 2500
#define BUTTON_TIME 250
void OpenLock() {
// 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()
{
@ -501,25 +540,13 @@ void ToggleLock()
{
g_lockopen = false;
Serial.println("closing lock");
for (uint8_t i = 0; i < 3; i++)
{
digitalWrite(PIN_CLOSE, HIGH);
DelayLEDs(BUTTON_TIME);
digitalWrite(PIN_CLOSE, LOW);
DelayLEDs(TOGGLE_TIME - BUTTON_TIME);
}
CloseLock();
}
else
{
g_lockopen = true;
Serial.println("opening lock");
for (uint8_t i = 0; i < 3; i++)
{
digitalWrite(PIN_OPEN, HIGH);
DelayLEDs(BUTTON_TIME);
digitalWrite(PIN_OPEN, LOW);
DelayLEDs(TOGGLE_TIME - BUTTON_TIME);
}
OpenLock();
}
DelayLEDs(4000);
@ -529,7 +556,8 @@ void ToggleLock()
bool HasMainsPower()
{
return digitalRead(PIN_MAINS_POWER) == HIGH;
return true;
//return digitalRead(PIN_MAINS_POWER) == HIGH;
}
void loop()