#include <Arduino.h>
#define LED_NUMBER 12
constexpr int sensorUp = 26;
constexpr int sensorDown = 27;
const int ledPins[LED_NUMBER] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
constexpr int sensorThreshold = 500;
constexpr int delayTime = 200;
constexpr int delayExecution = 1000;
constexpr unsigned int offTime = 45000;
void ledInit() {
for (const int ledPin : ledPins) {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
}
void sensorsInit() {
pinMode(sensorUp, INPUT);
pinMode(sensorDown, INPUT);
}
void turnOnLeds(const bool ascending) {
if (ascending) {
for (const int ledPin : ledPins) {
digitalWrite(ledPin, HIGH);
delay(delayTime);
}
}
else {
for (int i = LED_NUMBER - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
}
}
}
void turnOffLeds(const bool ascending) {
if (ascending) {
for (const int ledPin : ledPins) {
digitalWrite(ledPin, LOW);
delay(delayTime);
}
}
else {
for (int i = LED_NUMBER - 1; i >= 0; i--) {
digitalWrite(ledPins[i], LOW);
delay(delayTime);
}
}
}
void run() {
const int sensorUpValue = analogRead(sensorUp);
const int sensorDownValue = analogRead(sensorDown);
bool ascending;
if (sensorUpValue > sensorThreshold) {
ascending = true;
}
else if (sensorDownValue > sensorThreshold) {
ascending = false;
}
else return;
turnOnLeds(ascending);
delay(offTime);
turnOffLeds(ascending);
}
void setup() {
ledInit();
sensorsInit();
}
void loop() {
run();
delay(delayExecution);
}