From 49486b33bbae9310a1cb903246fde6478782185d Mon Sep 17 00:00:00 2001 From: Taylor Date: Tue, 17 Sep 2024 00:52:12 +0000 Subject: [PATCH] Initial upload --- arc_lamp_control.ino | 82 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 arc_lamp_control.ino diff --git a/arc_lamp_control.ino b/arc_lamp_control.ino new file mode 100644 index 0000000..14ac57f --- /dev/null +++ b/arc_lamp_control.ino @@ -0,0 +1,82 @@ +#include + +#define ROT_A 12 +#define ROT_B 11 +#define LEDS 10 +ezButton button (6); + +int brightness = 125; +int power = 0; +int aState; +int aLastState; + +void setup() { + // Initialize pins + pinMode(ROT_A, INPUT_PULLUP); + pinMode(ROT_B, INPUT_PULLUP); + pinMode(LEDS, OUTPUT); + + // Configure button debounce + button.setDebounceTime(50); + + aLastState = digitalRead(ROT_A); +} + +void loop() { + // Initialize ezbutton + button.loop(); + + // ROTARY ENCODER CONTROL // + + // Read state of encoder pin A + aState = digitalRead(ROT_A); + + // Check if it's changed + if (aState != aLastState && aState == 1){ + if (digitalRead(ROT_B) != aState){ // If it has... + if (brightness < 225 && brightness >= 5){ + brightness += 5; // Up the brightness + } + else if (brightness < 5) { + brightness++; // If our brightness is low (below duty cycle 5) we only want one step + } + else if (brightness >= 225 && brightness < 255) { + brightness += 10; // As we get brighter we need larger steps + } + } else { + if (brightness > 5 && brightness < 225){ + brightness -= 5; + } + else if (brightness <= 5 && brightness > 1) { + brightness--; + } + else if (brightness >= 225) { + brightness -= 10; + } + } + } + + aLastState = aState; + + // BUTTON CONTROL // + + // Check button state + if (button.isPressed()){ + if (power == 0){ // If off, turn on... + power = 1; + } else { // If on, turn off + power = 0; + } + } + + if (button.isReleased()){ + // DO NOTHING + } + + if (power == 1) { + analogWrite (LEDS, brightness); + } else { + analogWrite (LEDS, 0); + } + delay(1); +}