// by Ido Gendel, 2020
// For the Arduino Nano ("Old bootloader")
#define SWITCH_REF_PIN A0
#define SWITCH_IN_PIN A1
#define LIGHT_IND_PIN 13
#define LIGHT_CTRL_PIN 2
#define BUZZER_GND_PIN 11
#define BUZZER_OUT_PIN 12
uint8_t isOpened = 0;
uint8_t n;
//=========================================================
void setup() {
// Switch is N.C.
pinMode(SWITCH_REF_PIN, OUTPUT);
pinMode(SWITCH_IN_PIN, INPUT_PULLUP);
pinMode(LIGHT_CTRL_PIN, OUTPUT);
pinMode(LIGHT_IND_PIN, OUTPUT);
pinMode(BUZZER_GND_PIN, OUTPUT);
pinMode(BUZZER_OUT_PIN, OUTPUT);
}
//=========================================================
void waitToOpen(void) {
// Lights Off
digitalWrite(LIGHT_CTRL_PIN, LOW);
digitalWrite(LIGHT_IND_PIN, LOW);
while (HIGH == digitalRead(SWITCH_IN_PIN)) {
}
delay(50); // Debounce
isOpened = 1;
// Lights On
digitalWrite(LIGHT_CTRL_PIN, HIGH);
digitalWrite(LIGHT_IND_PIN, HIGH);
}
//=========================================================
void openedWait(uint32_t ms) {
uint32_t timeStamp = millis();
if (0 == isOpened) return;
while (millis() - timeStamp < ms) {
if (HIGH == digitalRead(SWITCH_IN_PIN)) {
isOpened = 0;
break;
}
}
}
//=========================================================
void beep(const uint16_t freq, const uint32_t ms) {
if (0 == isOpened) return;
tone(BUZZER_OUT_PIN, freq);
openedWait(ms);
noTone(BUZZER_OUT_PIN);
}
//=========================================================
void loop() {
waitToOpen();
openedWait(5000);
for (n = 0; n < 3; n++) {
beep(4000, 500);
openedWait(1000);
}
}
https://drive.google.com/file/d/1NYLGT5MHHoqzMJRANOdAMuqTsrBZAlPl/view?usp=sharing
Comments