You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.3 KiB

  1. #define LOW_POWER_SLEEP // dependency: Adafruit SleepyDog
  2. #define SLOW_START_DELAY 5000 // ms
  3. #define PIN_SPEAKER 12
  4. #define RELAYS 8
  5. int relayPins[] = {
  6. 2, 3, 4, 5, 6, 7, 8, 9
  7. };
  8. #ifdef LOW_POWER_SLEEP
  9. #include <Adafruit_SleepyDog.h>
  10. #endif
  11. void beep(int freq, int ms) {
  12. tone(PIN_SPEAKER, freq, ms);
  13. delay(ms);
  14. }
  15. void setup() {
  16. pinMode(LED_BUILTIN, OUTPUT);
  17. digitalWrite(LED_BUILTIN, HIGH);
  18. for (int i = 0; i < RELAYS; i++) {
  19. pinMode(relayPins[i], OUTPUT);
  20. digitalWrite(relayPins[i], LOW);
  21. }
  22. Serial.begin(115200);
  23. while (!Serial)
  24. delay(10);
  25. Serial.println();
  26. Serial.println(" [ Slow-start Power Socket ] ");
  27. beep(440, 200);
  28. delay(1000);
  29. for (int i = 0; i < RELAYS; i++) {
  30. Serial.println("...");
  31. delay(SLOW_START_DELAY/2);
  32. beep(100, 10);
  33. delay(SLOW_START_DELAY/2);
  34. Serial.print("Starting ");
  35. Serial.print(i+1);
  36. Serial.print(" ... ");
  37. beep(200, 50);
  38. digitalWrite(relayPins[i], HIGH);
  39. Serial.println("Done.");
  40. beep(460, 100);
  41. }
  42. Serial.println();
  43. Serial.println("Finished!");
  44. delay(1000);
  45. beep(210, 100);
  46. beep(420, 100);
  47. beep(560, 500);
  48. digitalWrite(LED_BUILTIN, LOW);
  49. delay(1000);
  50. }
  51. void loop() {
  52. // nothing to do!
  53. #ifdef LOW_POWER_SLEEP
  54. Watchdog.sleep();
  55. #else
  56. delay(1000);
  57. #endif
  58. }