#include <Adafruit_NeoPixel.h>
#define PIN 23 // Pinnen hvor LED-stripen er koblet til
#define NUM_LEDS 60 // Totalt antall LEDer på stripen
#define POT_PIN1 12 // Potensiometer for segment 1
#define POT_PIN2 13 // Potensiometer for segment 2
#define POT_PIN3 14 // Potensiometer for segment 3
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
unsigned long previousMillis3 = 0;
int pos1 = 0;
int pos2 = 20;
int pos3 = 40;
void setup() {
strip.begin();
strip.show(); // Initialiserer alle LEDene til av
pinMode(POT_PIN1, INPUT);
pinMode(POT_PIN2, INPUT);
pinMode(POT_PIN3, INPUT);
}
void loop() {
unsigned long currentMillis = millis();
// Les verdiene fra potensiometrene
int potValue1 = analogRead(POT_PIN1);
int potValue2 = analogRead(POT_PIN2);
int potValue3 = analogRead(POT_PIN3);
// Konverter potensiometerverdiene til intervaller
long interval1 = map(potValue1, 0, 1023, 50, 200);
long interval2 = map(potValue2, 0, 1023, 50, 200);
long interval3 = map(potValue3, 0, 1023, 50, 200);
if (currentMillis - previousMillis1 >= interval1) {
previousMillis1 = currentMillis;
chaseSegment(0, 20, strip.ColorHSV(0, 255, 255), pos1);
pos1 = (pos1 + 1) % 20;
}
if (currentMillis - previousMillis2 >= interval2) {
previousMillis2 = currentMillis;
chaseSegment(20, 40, strip.ColorHSV(21000, 255, 255), pos2);
pos2 = (pos2 + 1) % 20;
}
if (currentMillis - previousMillis3 >= interval3) {
previousMillis3 = currentMillis;
chaseSegment(40, 60, strip.ColorHSV(43000, 255, 255), pos3);
pos3 = (pos3 + 1) % 20;
}
}
void chaseSegment(int start, int end, uint32_t color, int pos) {
for (int i = start; i < end; i++) {
if ((i - start + pos) % 4 == 0) {
strip.setPixelColor(i, color); // Setter fargen på den nåværende LED
} else {
strip.setPixelColor(i, 0); // Slår av LEDene som ikke skal lyse
}
}
strip.show(); // Oppdaterer stripen for å vise endringen
}