aboutsummaryrefslogtreecommitdiff
path: root/mussel5
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-02-27 12:42:33 +0100
committerJonas Smedegaard <dr@jones.dk>2025-02-27 12:42:33 +0100
commit4ae049f60e054a9006b9ac3d0fd338e4926843a8 (patch)
treeea0125a944329e5827cf4d6881189ff4d9a4d7d4 /mussel5
parent77a1fc9ce08fb4d605acc56c5f3f51fd6b8d9065 (diff)
add licensing; update comments
Diffstat (limited to 'mussel5')
-rw-r--r--mussel5/mussel5.ino42
1 files changed, 26 insertions, 16 deletions
diff --git a/mussel5/mussel5.ino b/mussel5/mussel5.ino
index f44c907..12f42d6 100644
--- a/mussel5/mussel5.ino
+++ b/mussel5/mussel5.ino
@@ -1,33 +1,41 @@
-const int buttonPin = 9;
-const int redLED = 3;
-const int greenLED = 4;
-const int yellowLED = 5;
+/// mussel_mood.ino - Button-controlled LED system with state tracking
+///
+/// SPDX-License-Identifier: GPL-3.0-or-later
+/// SPDX-FileCopyrightText: 2025 Tanishka Suwalka <tanishkas@ruc.dk>
+///
+/// This code toggles LEDs based on button presses, cycling through Red, Green, and Yellow states.
-int buttonState = HIGH;
-int lastButtonState = HIGH;
-int clickCount = 0;
-unsigned long lastDebounceTime = 0;
-const unsigned long debounceDelay = 50;
+const int buttonPin = 9;
+const int redLED = 3;
+const int greenLED = 4;
+const int yellowLED = 5;
+
+int buttonState = HIGH;
+int lastButtonState = HIGH;
+int clickCount = 0;
+unsigned long lastDebounceTime = 0;
+const unsigned long debounceDelay = 50;
void setup() {
- pinMode(buttonPin, INPUT_PULLUP);
+ pinMode(buttonPin, INPUT_PULLUP); // Enable internal pull-up resistor for button
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
- Serial.begin(9600);
+ Serial.begin(9600); // Initialize serial monitor for debugging
}
void loop() {
- int reading = digitalRead(buttonPin);
+ int reading = digitalRead(buttonPin); // Read button state
- // Debounce logic
+ // Debounce logic: Ensures a single press isn't detected multiple times
if (reading != lastButtonState) {
- lastDebounceTime = millis();
+ lastDebounceTime = millis(); // Reset debounce timer
}
if ((millis() - lastDebounceTime) > debounceDelay) {
+ // Check for button press (transition from HIGH to LOW)
if (reading == LOW && lastButtonState == HIGH) {
- clickCount++;
+ clickCount++; // Increment click count
if (clickCount > 3) {
clickCount = 0; // Reset cycle after 3 clicks
}
@@ -35,15 +43,17 @@ void loop() {
}
}
- lastButtonState = reading;
+ lastButtonState = reading; // Update button state
}
+/// updateLEDs() - Updates LED states based on click count
void updateLEDs() {
// Turn off all LEDs first
digitalWrite(redLED, LOW);
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, LOW);
+ // Determine which LED to turn on
switch (clickCount) {
case 1:
digitalWrite(redLED, HIGH);