From dcfd4944de5101d18fcd66eae204904069a63d95 Mon Sep 17 00:00:00 2001 From: Christoffer Martinsson Date: Tue, 20 Feb 2018 08:06:46 +0100 Subject: [PATCH] First RC --- zuno/zuno.ino | 87 +++++++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/zuno/zuno.ino b/zuno/zuno.ino index fe99453..aadaa74 100644 --- a/zuno/zuno.ino +++ b/zuno/zuno.ino @@ -2,7 +2,7 @@ #include #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; } }