Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement