First RC
This commit is contained in:
parent
fdf825ef02
commit
dcfd4944de
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user