#include <Adafruit_NeoPixel.h> 
#include <Wire.h>

#define LED_PIN 2        // Pin pro LED strip
#define NUM_LEDS 52      // Počet LED
#define BUTTON_1 3       // tlačítko 1
#define BUTTON_2 4       // tlačítko 2
#define BUTTON_3 5       // tlačítko 3
#define BUTTON_4 6       // tlačítko 4
#define BUTTON_5 7       // tlačítko 5
#define BUTTON_6 8       // tlačítko 6
#define BUTTON_7 9       // tlačítko 7
#define BUTTON_8 10      // tlačítko 8
#define BUTTON_9 11      // tlačítko OK
#define DELAY_TIME 200    // Pauza mezi jednotlivými LED (v milisekundách)
#define BUZZER_PIN 12  // Pin, na kterém je připojen piezo bzučák

Adafruit_NeoPixel leds(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

// Proměnné

int delay_baterie = 3000;  // Doba zobrazení stavu baterie
double baterie_min = 3.2; // Minimální hodnota baterie = 0 %
double baterie_max = 4.1; // Maximální hodnota baterie = 100 %
double procenta_baterie = 0.0; // Procenta baterie
float napeti_baterie = 0.0;    // Napětí baterie

int melody[] = { // Definice tónů (v Hertzích) - Melodie Óda na radost
  330, 330, 349, 392, 392, 349, 330, 294, 
  262, 262, 294, 330, 330, 294, 294,      
  330, 330, 349, 392, 392, 349, 330, 294, 
  262, 262, 294, 330, 294, 262, 262 
};


int noteDurations[] = { // Délka jednotlivých not (v poměru k celkové délce noty)
  4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 4, 4, 4, 2,    
  4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 4, 4, 4, 2   
};

int delay_stisk = 300;  // Doba čekání po stisknutí tlačítka (debounce)
int delay_zobrazeni = 2000;  // Doba zobrazení stavu (OSLAVA)


int cerveny_hrac = 0; // označí zda hraje červený hráč (1=ano 0=ne)
int bily_hrac = 0; // označí zda hraje bílý hráč (1=ano 0=ne)
int zluty_hrac = 0; // označí zda hraje žlutý hráč (1=ano 0=ne)
int modry_hrac = 0; // označí zda hraje modrý hráč (1=ano 0=ne)

int cerveny_body = 0; // kolik má červený hráč bodů (0-13)
int bily_body = 0; // kolik má čbílý hráč bodů (0-13)
int zluty_body = 0; // kolik má žlutý hráč bodů (0-13)
int modry_body = 0; // kolik má modrý hráč bodů (0-13)

int hra_body = 0;  // na kolik bodů se bude hrát (1-13)

int gameState = 1; // Stav hry (1 = první část "měření baterie", 2 = druhá část "jaké barvy hrajou", 3 = třetí část "na kolik bodů se hraje", 4 = čtvrtá část "přičítání bodů", 5 = pátá část "oslava")

void setup() {
  // Nastavení pinů pro tlačítka jako INPUT_PULLUP
  pinMode(BUTTON_1, INPUT_PULLUP);
  pinMode(BUTTON_2, INPUT_PULLUP);
  pinMode(BUTTON_3, INPUT_PULLUP);
  pinMode(BUTTON_4, INPUT_PULLUP);
  pinMode(BUTTON_5, INPUT_PULLUP);
  pinMode(BUTTON_6, INPUT_PULLUP);
  pinMode(BUTTON_7, INPUT_PULLUP);
  pinMode(BUTTON_8, INPUT_PULLUP);
  pinMode(BUTTON_9, INPUT_PULLUP);
  pinMode(BUZZER_PIN, OUTPUT);  // Nastavení pinu pro bzučák jako výstup

  // Inicializace LED stripu
  leds.begin();
  leds.show(); // Ujistíme se, že všechny LED jsou zhasnuté na začátku
}

void loop() {
  if (gameState == 1) {
    PRVNI_CAST(); // První část hry - Měření baterie
  } else if (gameState == 2) {
    DRUHA_CAST(); // Druhá část hry - výběr hráčů
  } else if (gameState == 3) {
    TRETI_CAST(); // Třetí část hry - na kolik bodů se hraje
  } else if (gameState == 4) {
    CTVRTA_CAST(); // Čtvrtá část hry - přičítání bodů
  } else if (gameState == 5) {
    PATA_CAST(); // Pátá část hry - finále / oslava
  }

// Čtení napětí na pinu A0
  int baterie_mereni = analogRead(A0);

  // Převod na napětí (ve voltech)
  napeti_baterie = (baterie_mereni / 1023.0) * 5.0;

  // Výpočet procent baterie
  procenta_baterie = ((napeti_baterie - baterie_min) / (baterie_max - baterie_min)) * 100.0;

}

// Funkce pro nastavení barvy LED stripu
void setColor(int start, int end, byte r, byte g, byte b) {
  for (int i = start; i <= end; i++) {
    leds.setPixelColor(i, leds.Color(r, g, b));  // Nastavení barvy pro danou LED
  }
  leds.show();  // Aktualizace stripu s novými barvami
}

void PRVNI_CAST() {

  // Čtení napětí na pinu A0
  int baterie_mereni = analogRead(A0);

  // Převod na napětí (ve voltech)
  napeti_baterie = (baterie_mereni / 1023.0) * 5.0;

  // Výpočet procent baterie
  procenta_baterie = ((napeti_baterie - baterie_min) / (baterie_max - baterie_min)) * 100.0;

  // Ošetření rozsahu hodnot
  if (procenta_baterie < 0) procenta_baterie = 0;
  if (procenta_baterie > 100) procenta_baterie = 100;


  // Nastavení barvy LED podle procent baterie
if (procenta_baterie > 90.01 && procenta_baterie < 110 ) { // baterie mezi 90-100%, 10 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 9, 0, 255, 0);  //zelená
    setColor(0+13, 9+13, 0, 255, 0); //zelená
    setColor(0+26, 9+26, 0, 255, 0); //zelená
    setColor(0+39, 9+39, 0, 255, 0); //zelená
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 

if (procenta_baterie > 80.01 && procenta_baterie < 90 ) { // baterie mezi 80-90%, 9 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 8, 0, 255, 0);  //zelená
    setColor(0+13, 8+13, 0, 255, 0); //zelená
    setColor(0+26, 8+26, 0, 255, 0); //zelená
    setColor(0+39, 8+39, 0, 255, 0); //zelená
    setColor(0+9, 0+9, 255, 0, 0); //červená
    setColor(0+9+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+9+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+9+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry
     }     
  
if (procenta_baterie > 70.01 && procenta_baterie < 80 ) { // baterie mezi 70-80%, 8 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 7, 0, 255, 0);  //zelená
    setColor(0+13, 7+13, 0, 255, 0); //zelená
    setColor(0+26, 7+26, 0, 255, 0); //zelená
    setColor(0+39, 7+39, 0, 255, 0); //zelená
    setColor(0+8, 0+9, 255, 0, 0); //červená
    setColor(0+8+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+8+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+8+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry
     } 

if (procenta_baterie > 60.01 && procenta_baterie < 70 ) { // baterie mezi 60-70% 7 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 6, 0, 255, 0);  //zelená
    setColor(0+13, 6+13, 0, 255, 0); //zelená
    setColor(0+26, 6+26, 0, 255, 0); //zelená
    setColor(0+39, 6+39, 0, 255, 0); //zelená
    setColor(0+7, 0+9, 255, 0, 0); //červená
    setColor(0+7+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+7+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+7+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 

if (procenta_baterie > 50.01 && procenta_baterie < 60 ) { // baterie mezi 50-60% 6 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 5, 0, 255, 0);  //zelená
    setColor(0+13, 5+13, 0, 255, 0); //zelená
    setColor(0+26, 5+26, 0, 255, 0); //zelená
    setColor(0+39, 5+39, 0, 255, 0); //zelená
    setColor(0+6, 0+9, 255, 0, 0); //červená
    setColor(0+6+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+6+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+6+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 

if (procenta_baterie > 40.01 && procenta_baterie < 50 ) { // baterie mezi 40-50% 5 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 4, 0, 255, 0);  //zelená
    setColor(0+13, 4+13, 0, 255, 0); //zelená
    setColor(0+26, 4+26, 0, 255, 0); //zelená
    setColor(0+39, 4+39, 0, 255, 0); //zelená
    setColor(0+5, 0+9, 255, 0, 0); //červená
    setColor(0+5+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+5+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+5+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 

if (procenta_baterie > 30.01 && procenta_baterie < 40 ) { // baterie mezi 30-40% 4 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 3, 0, 255, 0);  //zelená
    setColor(0+13, 3+13, 0, 255, 0); //zelená
    setColor(0+26, 3+26, 0, 255, 0); //zelená
    setColor(0+39, 3+39, 0, 255, 0); //zelená
    setColor(0+4, 0+9, 255, 0, 0); //červená
    setColor(0+4+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+4+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+4+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 

if (procenta_baterie > 20.01 && procenta_baterie < 30 ) { // baterie mezi 20-30% 3 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 2, 0, 255, 0);  //zelená
    setColor(0+13, 2+13, 0, 255, 0); //zelená
    setColor(0+26, 2+26, 0, 255, 0); //zelená
    setColor(0+39, 2+39, 0, 255, 0); //zelená
    setColor(0+3, 0+9, 255, 0, 0); //červená
    setColor(0+3+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+3+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+3+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry
    } 

if (procenta_baterie > 10.01 && procenta_baterie < 20 ) { // baterie mezi 10-20% 2 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 1, 0, 255, 0);  //zelená
    setColor(0+13, 1+13, 0, 255, 0); //zelená
    setColor(0+26, 1+26, 0, 255, 0); //zelená
    setColor(0+39, 1+39, 0, 255, 0); //zelená
    setColor(0+2, 0+9, 255, 0, 0); //červená
    setColor(0+2+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+2+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+2+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 

if (procenta_baterie > -50 && procenta_baterie < 10 ) { // baterie mezi 0-10% 1 LED
    setColor(10, 12, 255, 255, 255); //bílá
    setColor(10, 25, 255, 255, 255); //bílá
    setColor(10, 38, 255, 255, 255); //bílá    
    setColor(10, 51, 255, 255, 255); //bílá    
    setColor(0, 0, 0, 255, 0);  //zelená
    setColor(0+13, 0+13, 0, 255, 0); //zelená
    setColor(0+26, 0+26, 0, 255, 0); //zelená
    setColor(0+39, 0+39, 0, 255, 0); //zelená
    setColor(0+1, 0+9, 255, 0, 0); //červená
    setColor(0+1+13, 0+9+13, 255, 0, 0); //červená
    setColor(0+1+26, 0+9+26, 255, 0, 0); //červená
    setColor(0+1+39, 0+9+39, 255, 0, 0); //červená    
    delay(delay_baterie); 
    setColor(0, 51, 0, 0, 0); // všechny LED zhasnou
    gameState = 2; // druhá část hry 
    } 


  delay(500); // Zpoždění pro stabilitu zobrazení
}




// Druhá část hry
void DRUHA_CAST() {
  
  if (digitalRead(BUTTON_1) == LOW ) { // Pokud je stisknuto tlačítko 1, rozsvítí LED 1-13 na červenou
    setColor(0, 12, 255, 0, 0);  // Červená 
    cerveny_hrac = 1;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_2) == LOW ) { // Pokud je stisknuto tlačítko 2, rozsvítí LED 14-26 na bílou
    setColor(13, 25, 255, 255, 255);  // Bílá 
    bily_hrac = 1;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_3) == LOW ) { // Pokud je stisknuto tlačítko 3, rozsvítí LED 27-39 na žlutou
    setColor(26, 38, 255, 255, 0);  // Žlutá
    zluty_hrac = 1;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_4) == LOW ) { // Pokud je stisknuto tlačítko 4, rozsvítí LED 40-52 na modrou
    setColor(39, 51, 0, 0, 255);  // Modrá
    modry_hrac = 1;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_5) == LOW ) { // pokud je stisknuto tlačítko 5, zhasne LED 1-13
    setColor(0, 12, 0, 0, 0);  // Červená 
    cerveny_hrac = 0;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_6) == LOW ) { // pokud je stisknuto tlačítko 5, zhasne LED 14-26
    setColor(13, 25, 0, 0, 0);  // Bílá 
    bily_hrac = 0;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_7) == LOW ) { // pokud je stisknuto tlačítko 5, zhasne LED 27-39
    setColor(26, 38, 0, 0, 0);  // Žlutá
    zluty_hrac = 0;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_8) == LOW ) { // pokud je stisknuto tlačítko 5, zhasne LED 40-52
    setColor(39, 51, 0, 0, 0);  // Modrá
    modry_hrac = 0;
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  // tlačítko 9 a přechod do druhé části
  if (digitalRead(BUTTON_9) == LOW ) {
    setColor(0, 51, 255, 165, 0);  // Oranžová
    delay(100);  // pauza
    setColor(0, 51, 0, 0, 0);  // zhasnuto
    delay(100);  // pauza
    setColor(0, 51, 255, 165, 0);  // Oranžová
    delay(100);  // pauza
    setColor(0, 51, 0, 0, 0);  // zhasnuto
    delay(100);  // pauza
    setColor(0, 51, 255, 165, 0);  // Oranžová
    delay(100);  // pauza
    setColor(0, 51, 0, 0, 0);  // zhasnuto
    delay(100);  // pauza

    gameState = 3; // druhá část hry
  }
  
}

// Třetí část hry
void TRETI_CAST() {
  if (digitalRead(BUTTON_1) == LOW ) {

    hra_body = hra_body+1;
    hra_body = constrain(hra_body, 0, 13); // omezí kolik bodů je maximálně, tj. 13
    if (cerveny_hrac == 1){ // ověří, zda červený hráč hraje
    setColor(hra_body-1, hra_body-1, 0, 255, 0);  // Zelena
    }

    if (bily_hrac == 1){ // ověří, zda bílý hráč hraje
    setColor(hra_body+12, hra_body+12, 0, 255, 0);  // Zelena
    }

    if (zluty_hrac == 1){ // ověří, zda žlutý hráč hraje
    setColor(hra_body+25, hra_body+25, 0, 255, 0);  // Zelena
    }

    if (modry_hrac == 1){ // ověří, zda modrý hráč hraje
    setColor(hra_body+38, hra_body+38, 0, 255, 0);  // Zelena
    }

    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }

  if (digitalRead(BUTTON_5) == LOW ) {

    hra_body = hra_body-1;
    hra_body = constrain(hra_body, 0, 13); // omezí kolik bodů je maximálně, tj. 12

    setColor(hra_body, hra_body, 0, 0, 0);  // zhasne
    setColor(hra_body+13, hra_body+13, 0, 0, 0);  // zhasne
    setColor(hra_body+26, hra_body+26, 0, 0, 0);  // zhasne
    setColor(hra_body+39, hra_body+39, 0, 0, 0);  // zhasne

    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou
  }
 
 // tlačítko 9 a přechod do čtvrté části
  if (digitalRead(BUTTON_9) == LOW ) {
    setColor(0, 51, 255, 165, 0);  // Oranžová
    delay(100);  // pauza
    setColor(0, 51, 0, 0, 0);  // zhasnuto
    delay(100);  // pauza
    setColor(0, 51, 255, 165, 0);  // Oranžová
    delay(100);  // pauza
    setColor(0, 51, 0, 0, 0);  // zhasnuto
    delay(100);  // pauza
    setColor(0, 51, 255, 165, 0);  // Oranžová
    delay(100);  // pauza
    setColor(0, 51, 0, 0, 0);  // zhasnuto
    delay(100);  // pauza


    gameState = 4; // čtvrtá část hry
  }

}



void CTVRTA_CAST() {



  if (digitalRead(BUTTON_1) == LOW ) {
    if (cerveny_hrac == 1) { // ověří, zda červený hráč hraje
    cerveny_body = cerveny_body+1;
    setColor(cerveny_body-1, cerveny_body-1, 255, 0, 0);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    }
    if (cerveny_body == hra_body)  {
    gameState = 5;
    }
  }

  if (digitalRead(BUTTON_2) == LOW ) {
    if (bily_hrac == 1) { // ověří, zda bílý hráč hraje
    bily_body = bily_body+1;
    setColor(bily_body+12, bily_body+12, 255, 255, 255);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    }
    if (bily_body == hra_body)  {
    gameState = 5;
    }
  }

  if (digitalRead(BUTTON_3) == LOW ) {
    if (zluty_hrac == 1) { // ověří, zda žlutý hráč hraje
    zluty_body = zluty_body+1;
    setColor(zluty_body+25, zluty_body+25, 255, 255, 0);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    }
    if (zluty_body == hra_body)  {
    gameState = 5;
    }
  }

  if (digitalRead(BUTTON_4) == LOW ) {
    if (modry_hrac == 1) { // ověří, zda modrý hráč hraje
    modry_body = modry_body+1;
    setColor(modry_body+38, modry_body+38, 0, 0, 255);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    }
    if (modry_body == hra_body)  {
    gameState = 5;
    }
  }

  if (digitalRead(BUTTON_5) == LOW ) {
    cerveny_body = cerveny_body-1;
    setColor(cerveny_body, cerveny_body, 0, 0, 0);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    }
  
  if (digitalRead(BUTTON_6) == LOW ) {
    bily_body = bily_body-1;
    setColor(bily_body+13, bily_body+13, 0, 0, 0);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    }  

  if (digitalRead(BUTTON_7) == LOW ) {
    zluty_body = zluty_body-1;
    setColor(zluty_body+26, zluty_body+26, 0, 0, 0);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    } 

  if (digitalRead(BUTTON_8) == LOW ) {
    modry_body = modry_body-1;
    setColor(modry_body+39, modry_body+39, 0, 0, 0);  
    delay(delay_stisk);  // Zajištění, aby tlačítko bylo stisknuto pouze jednou 
    } 

  if (digitalRead(BUTTON_9) == LOW ) {
  if (hra_body == 12){
     setColor(12, 12, 255, 165, 0); 
     setColor(25, 25, 255, 165, 0); 
     setColor(38, 38, 255, 165, 0); 
     setColor(51, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(12, 12, 0, 0, 0); 
     setColor(25, 25, 0, 0, 0); 
     setColor(38, 38, 0, 0, 0); 
     setColor(51, 51, 0, 0, 0); 
    } 
     if (hra_body == 11){
     setColor(11, 12, 255, 165, 0); 
     setColor(24, 25, 255, 165, 0); 
     setColor(37, 38, 255, 165, 0); 
     setColor(50, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(11, 12, 0, 0, 0); 
     setColor(24, 25, 0, 0, 0); 
     setColor(37, 38, 0, 0, 0); 
     setColor(50, 51, 0, 0, 0); 
    } 
     if (hra_body == 10){
     setColor(10, 12, 255, 165, 0); 
     setColor(23, 25, 255, 165, 0); 
     setColor(36, 38, 255, 165, 0); 
     setColor(49, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(10, 12, 0, 0, 0); 
     setColor(23, 25, 0, 0, 0); 
     setColor(36, 38, 0, 0, 0); 
     setColor(49, 51, 0, 0, 0); 
    } 
     if (hra_body == 9){
     setColor(9, 12, 255, 165, 0); 
     setColor(22, 25, 255, 165, 0); 
     setColor(35, 38, 255, 165, 0); 
     setColor(48, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(9, 12, 0, 0, 0); 
     setColor(22, 25, 0, 0, 0); 
     setColor(35, 38, 0, 0, 0); 
     setColor(48, 51, 0, 0, 0); 
    } 
     if (hra_body == 8){
     setColor(8, 12, 255, 165, 0); 
     setColor(21, 25, 255, 165, 0); 
     setColor(34, 38, 255, 165, 0); 
     setColor(47, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(8, 12, 0, 0, 0); 
     setColor(21, 25, 0, 0, 0); 
     setColor(34, 38, 0, 0, 0); 
     setColor(47, 51, 0, 0, 0); 
    } 
     if (hra_body == 7){
     setColor(7, 12, 255, 165, 0); 
     setColor(20, 25, 255, 165, 0); 
     setColor(33, 38, 255, 165, 0); 
     setColor(46, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(7, 12, 0, 0, 0); 
     setColor(20, 25, 0, 0, 0); 
     setColor(33, 38, 0, 0, 0); 
     setColor(46, 51, 0, 0, 0); 
    } 
     if (hra_body == 6){
     setColor(6, 12, 255, 165, 0); 
     setColor(19, 25, 255, 165, 0); 
     setColor(32, 38, 255, 165, 0); 
     setColor(45, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(6, 12, 0, 0, 0); 
     setColor(19, 25, 0, 0, 0); 
     setColor(32, 38, 0, 0, 0); 
     setColor(45, 51, 0, 0, 0); 
    } 
      if (hra_body == 5){
     setColor(5, 12, 255, 165, 0); 
     setColor(18, 25, 255, 165, 0); 
     setColor(31, 38, 255, 165, 0); 
     setColor(44, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(5, 12, 0, 0, 0); 
     setColor(18, 25, 0, 0, 0); 
     setColor(31, 38, 0, 0, 0); 
     setColor(44, 51, 0, 0, 0); 
    } 
      if (hra_body == 4){
     setColor(4, 12, 255, 165, 0); 
     setColor(17, 25, 255, 165, 0); 
     setColor(30, 38, 255, 165, 0); 
     setColor(43, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(4, 12, 0, 0, 0); 
     setColor(17, 25, 0, 0, 0); 
     setColor(30, 38, 0, 0, 0); 
     setColor(43, 51, 0, 0, 0); 
    } 
     if (hra_body == 3){
     setColor(3, 12, 255, 165, 0); 
     setColor(16, 25, 255, 165, 0); 
     setColor(29, 38, 255, 165, 0); 
     setColor(42, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(3, 12, 0, 0, 0); 
     setColor(16, 25, 0, 0, 0); 
     setColor(29, 38, 0, 0, 0); 
     setColor(42, 51, 0, 0, 0); 
    } 
     if (hra_body == 2){
     setColor(2, 12, 255, 165, 0); 
     setColor(15, 25, 255, 165, 0); 
     setColor(28, 38, 255, 165, 0); 
     setColor(41, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(2, 12, 0, 0, 0); 
     setColor(15, 25, 0, 0, 0); 
     setColor(28, 38, 0, 0, 0); 
     setColor(41, 51, 0, 0, 0); 
    } 
     if (hra_body == 1){
     setColor(1, 12, 255, 165, 0); 
     setColor(14, 25, 255, 165, 0); 
     setColor(27, 38, 255, 165, 0); 
     setColor(40, 51, 255, 165, 0); 
     delay(delay_zobrazeni); 
     setColor(1, 12, 0, 0, 0); 
     setColor(14, 25, 0, 0, 0); 
     setColor(27, 38, 0, 0, 0); 
     setColor(40, 51, 0, 0, 0); 
    } 
 }
}

void PATA_CAST() { // OSLAVA



 for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
    int noteDuration = 1000 / noteDurations[i];  // Délka noty v milisekundách
    tone(BUZZER_PIN, melody[i], noteDuration);  // Hraje tón
    int pauseBetweenNotes = noteDuration * 1.25;  // Pauza mezi tóny
    delay(pauseBetweenNotes);  // Čekání mezi notami

  }

if (cerveny_body == hra_body)  {
    setColor(0, 51, 0, 0, 0);
 for (int i = 0; i < 13; i++) {
    leds.setPixelColor(i, leds.Color(255, 0, 0));  // Nastavení barvy (červená)
    leds.show();  // Aktualizace LED pásku
    delay(DELAY_TIME);  // Pauza mezi rozsvícením jednotlivých LED
  }
  delay(50);  // Pauza po rozsvícení všech LED
 
 }

if (bily_body == hra_body)  {
      setColor(0, 51, 0, 0, 0);
 for (int i = 13; i < 26; i++) {
    leds.setPixelColor(i, leds.Color(255, 255, 255));  // Nastavení barvy (bila)
    leds.show();  // Aktualizace LED pásku
    delay(DELAY_TIME);  // Pauza mezi rozsvícením jednotlivých LED
  }
  delay(50);  // Pauza po rozsvícení všech LED
 
 }

if (zluty_body == hra_body)  {
      setColor(0, 51, 0, 0, 0);
 for (int i = 26; i < 39; i++) {
    leds.setPixelColor(i, leds.Color(255, 255, 0));  // Nastavení barvy (žlutá)
    leds.show();  // Aktualizace LED pásku
    delay(DELAY_TIME);  // Pauza mezi rozsvícením jednotlivých LED
  }
  delay(50);  // Pauza po rozsvícení všech LED
 
 }

if (modry_body == hra_body)  {
      setColor(0, 51, 0, 0, 0);
 for (int i = 39; i < 52; i++) {
    leds.setPixelColor(i, leds.Color(0, 0, 255));  // Nastavení barvy (modrá)
    leds.show();  // Aktualizace LED pásku
    delay(DELAY_TIME);  // Pauza mezi rozsvícením jednotlivých LED
  }
  delay(50);  // Pauza po rozsvícení všech LED
 
 }

}
připojená baterie (3.2-4.1V) + pól na analogový vstup A0 - pól na GND Pozor rozmezí připojené baterie musí být 0-5V