65 lines
1.6 KiB
C++
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;
|
|
}
|