const int rgbPins[] = {11, 10, 9}; // PWM piny pre červenú, zelenú a modrú farbu RGB LED.
const int memButtonPins[] = {4, 3, 2}; // vstupné piny pre memové tlačidlá pre červenú, zelenú a modrú farbu.
int lastMemButtonStates[] = {HIGH, HIGH, HIGH}; // Uložiť posledné stavy memových tlačidiel
int colorStates[] = {0, 0, 0}; // Stavy farieb (0 - vypnuté, 1 - červená, 2 - zelená, 3 - modrá)
const int threshold = 500; // Práh pre považovanie tlačidla za stlačené
void setup()
{
for (int i = 0; i < 3; i++)
pinMode(rgbPins[i], OUTPUT);
for (int i = 0; i < 3; i++)
pinMode(memButtonPins[i], INPUT_PULLUP);
}
void loop()
{
// Pre každé memové tlačidlo získať aktuálny stav
for (int i = 0; i < 3; i++) {
int memButtonState = digitalRead(memButtonPins[i]);
// Ak je napätie pod prahovou hodnotou a bolo uvoľnené od posledného merania, zmeniť aktuálny stav farby
if (memButtonState == LOW && lastMemButtonStates[i] == HIGH) {
colorStates[i] = (colorStates[i] + 1) % 4; // Zmeniť stav farieb (0-3)
}
// Uložte aktuálny stav memového tlačidla
lastMemButtonStates[i] = memButtonState;
}
// Nastaviť hodnoty PWM pre piny RGB LED podľa aktuálnych stavov farieb
int pwmR = (colorStates[0] == 1 || colorStates[0] == 3) ? 255 : 0; // Červená (255, ak je červená alebo fialová, inak 0)
int pwmG = (colorStates[1] == 2 || colorStates[1] == 3) ? 255 : 0; // Zelená (255, ak je zelená alebo fialová, inak 0)
int pwmB = (colorStates[2] == 3) ? 255 : 0; // Modrá (255, ak je fialová, inak 0)
// Nastaviť PWM pre piny RGB LED podľa hodnôt farieb
analogWrite(rgbPins[0], pwmR); // Červená
analogWrite(rgbPins[1], pwmG); // Zelená
analogWrite(rgbPins[2], pwmB); // Modrá
}