// Antall brytere, reléer og RGB-dioder
const int numSwitches = 8;
// Arrays for knapp, relé og RGB-pin-konfigurasjon
const int buttonPins[numSwitches] = {2, 3, 4, 5, 6, 7, 8, 9};
const int relayPins[numSwitches] = {22, 23, 24, 25, 26, 27, 28, 29};
const int redPins[numSwitches] = {30, 31, 32, 33, 34, 35, 36, 37};
const int bluePins[numSwitches] = {38, 39, 40, 41, 42, 43, 44, 45};
// Variabler for å lagre status
bool relayState[numSwitches] = {false};
bool buttonState[numSwitches] = {false};
bool lastButtonState[numSwitches] = {false};
void setup() {
// Initialiser knappene som inngang med pullup
for (int i = 0; i < numSwitches; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
pinMode(relayPins[i], OUTPUT);
pinMode(redPins[i], OUTPUT);
pinMode(bluePins[i], OUTPUT);
// Start med alle reléer av og RGB rød
digitalWrite(relayPins[i], LOW);
digitalWrite(redPins[i], HIGH);
digitalWrite(bluePins[i], LOW);
}
}
void loop() {
for (int i = 0; i < numSwitches; i++) {
// Les knappens tilstand
buttonState[i] = !digitalRead(buttonPins[i]); // Inverter for å lese LOW som trykk
// Hvis knappen trykkes og slippes
if (buttonState[i] && !lastButtonState[i]) {
relayState[i] = !relayState[i]; // Veksle relétilstanden
// Oppdater relé
digitalWrite(relayPins[i], relayState[i] ? HIGH : LOW);
// Oppdater RGB-diode
if (relayState[i]) {
digitalWrite(redPins[i], LOW);
digitalWrite(bluePins[i], HIGH);
} else {
digitalWrite(redPins[i], HIGH);
digitalWrite(bluePins[i], LOW);
}
}
lastButtonState[i] = buttonState[i]; // Oppdater for neste iterasjon
}
}