This commit is contained in:
Christoffer Martinsson 2018-02-20 08:06:46 +01:00
parent fdf825ef02
commit dcfd4944de

View File

@ -2,7 +2,7 @@
#include <EEPROM.h>
#define CONSOLE_SERIAL Serial
#define RFID_SERIAL Serial1
#define RFID_SERIAL Serial0
#define SERVO_PIN 12
const int SERVO_ENABLE_PIN = 9;
@ -105,6 +105,44 @@ ZUNO_SETUP_CHANNELS(
ZUNO_SENSOR_BINARY_DOOR_WINDOW(getterDoor)
);
void set_servo(int mode, int source){
bool ok_to_lock_unlock = false;
// Check sensor status if ok to lock/unlock
if (sensor_handle_in_up_position == true && sensor_not_home_activated == false && sensor_door_closed == true && lock_disable == false){
ok_to_lock_unlock = true;
}
// Set servo position
if (mode == SERVO_LOCK && ok_to_lock_unlock && sensor_door_locked == false){
servo.setValue(160+SERVO_TRIM);
servo_status = mode;
source_status = source;
servo.begin();
digitalWrite(SERVO_ENABLE_PIN, HIGH);
servo_timestamp = current_timestamp + 700;
}
else if (mode == SERVO_UNLOCK && ok_to_lock_unlock && sensor_door_locked == true){
servo.setValue(20+SERVO_TRIM);
servo_status = mode;
source_status = source;
servo.begin();
digitalWrite(SERVO_ENABLE_PIN, HIGH);
servo_timestamp = current_timestamp + 700;
}
else if (mode == SERVO_CENTER){
servo.setValue(90+SERVO_TRIM);
servo_status = mode;
servo.begin();
digitalWrite(SERVO_ENABLE_PIN, HIGH);
servo_timestamp = current_timestamp + 700;
}
else if (mode == SERVO_DISABLE){
digitalWrite(SERVO_ENABLE_PIN, LOW);
servo_status = mode;
}
}
void load_rfid_keys() {
int address = EEPROM_TAG_START_ADDRESS;
for (int i = 0; i < RFID_TAGS; i++) {
@ -128,6 +166,7 @@ void update_rfid() {
}
// Check for package end
if (rfid_read == RFID_STOP_BYTE) {
CONSOLE_SERIAL.println("RFID tag detected");
if (rfid_store_tag) {
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
for (int i = 0; i < RFID_TAG_BYTES; i++) {
@ -136,6 +175,7 @@ void update_rfid() {
rfid_eeprom_pos++;
}
CONSOLE_SERIAL.println("RFID tag stored");
rfid_store_tag = false;
rfid_store_tag_nbr = 0;
zunoSendReport(3);
@ -171,42 +211,6 @@ void update_rfid() {
}
}
void set_servo(int mode, int source){
bool ok_to_lock_unlock = false;
// Check sensor status if ok to lock/unlock
if (sensor_handle_in_up_position == true && sensor_not_home_activated == false && sensor_door_closed == true && lock_disable == false){
ok_to_lock_unlock = true;
}
// Set servo position
if (mode == SERVO_LOCK && ok_to_lock_unlock && sensor_door_locked == false){
servo.setValue(160+SERVO_TRIM);
servo_status = mode;
source_status = source;
}
else if (mode == SERVO_UNLOCK && ok_to_lock_unlock && sensor_door_locked == true){
servo.setValue(20+SERVO_TRIM);
servo_status = mode;
source_status = source;
}
else if (mode == SERVO_CENTER){
servo.setValue(90+SERVO_TRIM);
servo_status = mode;
}
else if (mode == SERVO_DISABLE){
digitalWrite(SERVO_ENABLE_PIN, LOW);
servo_status = mode;
}
// Start servo
if (mode > SERVO_DISABLE){
servo.begin();
digitalWrite(SERVO_ENABLE_PIN, HIGH);
servo_timestamp = current_timestamp + 700;
}
}
void update_buttons(){
sensor_door_locked_current_state = digitalRead(SENSOR_LOCK_PIN);
sensor_handle_in_up_position_current_state = digitalRead(SENSOR_HANDLE_PIN);
@ -350,9 +354,9 @@ void loop() {
}
else{
set_servo(SERVO_LOCK, SOURCE_BUTTONS);
btn_lock = false;
btn_unlock = false;
}
btn_lock = false;
btn_unlock = false;
}
else if (btn_unlock == true){
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
@ -360,8 +364,9 @@ void loop() {
}
else{
set_servo(SERVO_UNLOCK, SOURCE_BUTTONS);
btn_unlock = false;
}
btn_lock = false;
btn_unlock = false;
}
// Check if sensor changed and report to Z-Wave
@ -518,7 +523,7 @@ void setterStoreRFID(byte value) {
}
else if (value == 0){
rfid_store_tag_nbr = 0;
rfid_store_tag = false
rfid_store_tag = false;
}
}