First RC
This commit is contained in:
parent
fdf825ef02
commit
dcfd4944de
@ -2,7 +2,7 @@
|
|||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
|
|
||||||
#define CONSOLE_SERIAL Serial
|
#define CONSOLE_SERIAL Serial
|
||||||
#define RFID_SERIAL Serial1
|
#define RFID_SERIAL Serial0
|
||||||
|
|
||||||
#define SERVO_PIN 12
|
#define SERVO_PIN 12
|
||||||
const int SERVO_ENABLE_PIN = 9;
|
const int SERVO_ENABLE_PIN = 9;
|
||||||
@ -105,6 +105,44 @@ ZUNO_SETUP_CHANNELS(
|
|||||||
ZUNO_SENSOR_BINARY_DOOR_WINDOW(getterDoor)
|
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() {
|
void load_rfid_keys() {
|
||||||
int address = EEPROM_TAG_START_ADDRESS;
|
int address = EEPROM_TAG_START_ADDRESS;
|
||||||
for (int i = 0; i < RFID_TAGS; i++) {
|
for (int i = 0; i < RFID_TAGS; i++) {
|
||||||
@ -128,6 +166,7 @@ void update_rfid() {
|
|||||||
}
|
}
|
||||||
// Check for package end
|
// Check for package end
|
||||||
if (rfid_read == RFID_STOP_BYTE) {
|
if (rfid_read == RFID_STOP_BYTE) {
|
||||||
|
CONSOLE_SERIAL.println("RFID tag detected");
|
||||||
if (rfid_store_tag) {
|
if (rfid_store_tag) {
|
||||||
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
|
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
|
||||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||||
@ -136,6 +175,7 @@ void update_rfid() {
|
|||||||
rfid_eeprom_pos++;
|
rfid_eeprom_pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CONSOLE_SERIAL.println("RFID tag stored");
|
||||||
rfid_store_tag = false;
|
rfid_store_tag = false;
|
||||||
rfid_store_tag_nbr = 0;
|
rfid_store_tag_nbr = 0;
|
||||||
zunoSendReport(3);
|
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(){
|
void update_buttons(){
|
||||||
sensor_door_locked_current_state = digitalRead(SENSOR_LOCK_PIN);
|
sensor_door_locked_current_state = digitalRead(SENSOR_LOCK_PIN);
|
||||||
sensor_handle_in_up_position_current_state = digitalRead(SENSOR_HANDLE_PIN);
|
sensor_handle_in_up_position_current_state = digitalRead(SENSOR_HANDLE_PIN);
|
||||||
@ -350,9 +354,9 @@ void loop() {
|
|||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
set_servo(SERVO_LOCK, SOURCE_BUTTONS);
|
set_servo(SERVO_LOCK, SOURCE_BUTTONS);
|
||||||
btn_lock = false;
|
|
||||||
btn_unlock = false;
|
|
||||||
}
|
}
|
||||||
|
btn_lock = false;
|
||||||
|
btn_unlock = false;
|
||||||
}
|
}
|
||||||
else if (btn_unlock == true){
|
else if (btn_unlock == true){
|
||||||
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
|
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
|
||||||
@ -360,8 +364,9 @@ void loop() {
|
|||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
set_servo(SERVO_UNLOCK, SOURCE_BUTTONS);
|
set_servo(SERVO_UNLOCK, SOURCE_BUTTONS);
|
||||||
btn_unlock = false;
|
|
||||||
}
|
}
|
||||||
|
btn_lock = false;
|
||||||
|
btn_unlock = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if sensor changed and report to Z-Wave
|
// Check if sensor changed and report to Z-Wave
|
||||||
@ -518,7 +523,7 @@ void setterStoreRFID(byte value) {
|
|||||||
}
|
}
|
||||||
else if (value == 0){
|
else if (value == 0){
|
||||||
rfid_store_tag_nbr = 0;
|
rfid_store_tag_nbr = 0;
|
||||||
rfid_store_tag = false
|
rfid_store_tag = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user