brookedot

Untitled

Dec 6th, 2024
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 1.65 KB | Software | 0 0
  1. #ifdef __AVR__
  2. #include <avr/power.h>
  3. #endif
  4. #include <jled.h>
  5. #include "avdweb_Switch.h"
  6.  
  7. #define LEDPIN 4
  8. #define BUTTONPIN 0
  9. #define ONBOARDLED 1
  10.  
  11. uint8_t s = 0;
  12. bool state = false;
  13.  
  14. const long onInterval = 6UL * 60 * 60 * 1000;  // 6 hours in milliseconds
  15. //const long onInterval = 1UL * 60 * 1000 ;  // 1 minute in mills
  16.  
  17. unsigned long startMillis;
  18. unsigned long currentMillis;
  19.  
  20. auto led = JLed(LEDPIN);
  21. Switch button = Switch(BUTTONPIN, INPUT_PULLUP, LOW, 50);
  22.  
  23. // the setup routine runs once when you press reset:
  24. void setup() {
  25.   pinMode(LEDPIN, OUTPUT);
  26.   startMillis = millis();
  27.  
  28.   button.setPushedCallback(&buttonPressed);
  29.   button.setReleasedCallback(&buttonReleased);
  30. }
  31.  
  32. // the loop routine runs over and over again forever:
  33. void loop() {
  34.   button.poll();
  35.   maybeTurnOff();
  36.   if (!state) {
  37.     switch (s) {
  38.       case 1:
  39.         led.On().MaxBrightness(225);
  40.         break;
  41.       case 2:
  42.         led.Breathe(3000).MinBrightness(10).Forever().DelayAfter(500);  //fast fade
  43.         break;
  44.       case 3:
  45.         led.Breathe(15000).MinBrightness(10).Forever();  // slow fade
  46.         break;
  47.       default:
  48.         led.On().MaxBrightness(225);
  49.         break;
  50.     }
  51.     state = true;
  52.   }
  53.   led.Update();
  54. }
  55.  
  56. void buttonPressed() {
  57.   digitalWrite(ONBOARDLED, HIGH);
  58.   s++;
  59.   if (s > 3) {
  60.     s = 1;
  61.   }
  62. }
  63.  
  64. void buttonReleased() {
  65.   digitalWrite(ONBOARDLED, LOW);
  66.   led.Reset();
  67.   startMillis = currentMillis;
  68.   state = false;
  69. }
  70.  
  71. void maybeTurnOff() {
  72.   currentMillis = millis();
  73.   if (currentMillis - startMillis >= onInterval) {
  74.     led.Stop(JLed::eStopMode::FULL_OFF);
  75.     startMillis = currentMillis;
  76.   }
  77. }
  78.  
Advertisement