Advertisement
igendel

Fridge Beeper Demo

Jan 28th, 2020
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.78 KB | None | 0 0
  1. // by Ido Gendel, 2020
  2. // For the Arduino Nano ("Old bootloader")
  3.  
  4. #define SWITCH_REF_PIN A0
  5. #define SWITCH_IN_PIN A1
  6. #define LIGHT_IND_PIN 13
  7. #define LIGHT_CTRL_PIN 2
  8. #define BUZZER_GND_PIN 11
  9. #define BUZZER_OUT_PIN 12
  10.  
  11. uint8_t isOpened = 0;
  12. uint8_t n;
  13.  
  14. //=========================================================
  15. void setup() {
  16.  
  17.   // Switch is N.C.
  18.   pinMode(SWITCH_REF_PIN, OUTPUT);
  19.   pinMode(SWITCH_IN_PIN, INPUT_PULLUP);
  20.  
  21.   pinMode(LIGHT_CTRL_PIN, OUTPUT);
  22.   pinMode(LIGHT_IND_PIN, OUTPUT);
  23.  
  24.   pinMode(BUZZER_GND_PIN, OUTPUT);
  25.   pinMode(BUZZER_OUT_PIN, OUTPUT);
  26.  
  27. }
  28.  
  29. //=========================================================
  30. void waitToOpen(void) {
  31.  
  32.   // Lights Off
  33.   digitalWrite(LIGHT_CTRL_PIN, LOW);
  34.   digitalWrite(LIGHT_IND_PIN, LOW);
  35.  
  36.   while (HIGH == digitalRead(SWITCH_IN_PIN)) {
  37.   }
  38.  
  39.   delay(50); // Debounce
  40.  
  41.   isOpened = 1;
  42.   // Lights On
  43.   digitalWrite(LIGHT_CTRL_PIN, HIGH);
  44.   digitalWrite(LIGHT_IND_PIN, HIGH);
  45.  
  46. }
  47.  
  48. //=========================================================
  49. void openedWait(uint32_t ms) {
  50.  
  51.   uint32_t timeStamp = millis();
  52.  
  53.   if (0 == isOpened) return;
  54.  
  55.   while (millis() - timeStamp < ms) {
  56.    
  57.     if (HIGH == digitalRead(SWITCH_IN_PIN)) {
  58.       isOpened = 0;  
  59.       break;
  60.     }
  61.    
  62.   }
  63.  
  64. }
  65.  
  66. //=========================================================
  67. void beep(const uint16_t freq, const uint32_t ms) {
  68.  
  69.   if (0 == isOpened) return;
  70.   tone(BUZZER_OUT_PIN, freq);
  71.   openedWait(ms);
  72.   noTone(BUZZER_OUT_PIN);
  73.  
  74. }
  75.  
  76. //=========================================================
  77. void loop() {
  78.  
  79.   waitToOpen();
  80.   openedWait(5000);
  81.   for (n = 0; n < 3; n++) {
  82.     beep(4000, 500);
  83.     openedWait(1000);
  84.   }  
  85.  
  86. }
  87.  
  88. https://drive.google.com/file/d/1NYLGT5MHHoqzMJRANOdAMuqTsrBZAlPl/view?usp=sharing
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement