65 lines
1.6 KiB
C++

#include <ZUNO_SERVO.h>
#define SERVO_PIN 12
#define SERVO_ENABLE_PIN 9
#define BTN_LOCK_PIN 3
#define BTN_UNLOCK_PIN 4
#define LED_LOCK_PIN 5
#define LED_UNLOCK_PIN 6
// Last saved LED value
byte currentLEDValue;
unsigned long int rfid = 0;
int heartbeat = 0;
unsigned long current_timestamp = 0;
unsigned long heartbeat_timestamp = 0;
ServoController servo(SERVO_PIN);
// set up channel
ZUNO_SETUP_CHANNELS(
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_GENERAL_PURPOSE_VALUE,
SENSOR_MULTILEVEL_SCALE_PERCENTAGE_VALUE,
SENSOR_MULTILEVEL_SIZE_FOUR_BYTES,
SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS,
rfid_getter)
);
// the setup routine runs once when you press reset:
void setup() {
pinMode(LED_UNLOCK_PIN, OUTPUT); // setup pin as output
digitalWrite(LED_UNLOCK_PIN, LOW);
pinMode(LED_LOCK_PIN, OUTPUT); // setup pin as output
digitalWrite(LED_LOCK_PIN, LOW);
pinMode(SERVO_ENABLE_PIN, OUTPUT); // setup pin as output
digitalWrite(SERVO_ENABLE_PIN, HIGH);
servo.begin();
}
// the loop routine runs over and over again forever:
void loop() {
current_timestamp = millis();
// Heartbeat
if (current_timestamp >= heartbeat_timestamp) {
if (heartbeat == 1) {
heartbeat = 0;
servo.setValue(60);
digitalWrite(LED_UNLOCK_PIN, HIGH);
digitalWrite(LED_LOCK_PIN, HIGH);
} else {
heartbeat = 1;
servo.setValue(120);
digitalWrite(LED_UNLOCK_PIN, LOW);
digitalWrite(LED_LOCK_PIN, LOW);
}
heartbeat_timestamp = current_timestamp + 2000;
}
}
unsigned long int rfid_getter(){
return rfid;
}