/*
NALOGA 1) 
Napiši program, ki bere niz znakov (3 znake) iz serijskega porta. Uporaba switch-case stavka prinese (1 točko).
- če je znakov več ali manj kot 3, naj se na serijskem portu izpiše: "Napaka, ponovni vnos." (1 točka)
- Ob prvem nizu znakov 111, se prižge LED3, ki je priključena na pin 3. (1 točka)
- Ob drugem nizu znakov 111, se ugasne LED3, ki je priključena na pin 3. (1 točka). 

- če niz znakov ustreza številki 333, začne utripati LED4, ki je priključena na pin 5. (1 točka)
  Za utripanje uporabi funkcijo millis().
- Ob drugem nizu znakov 333, ugasnemo LED4, ki je priključena na pin 5. (1 točka)

- Za utripanje LED uporabi funkcijo void npr. void utripanje, s funkcijo millis ... (1 točka)
- če niz znakov ustreza številki 444, LED4 dioda 10 x utripne, uporabi isto funkcijo void utripanje. (2 točki)
- Priključi LCD display I2C, ki izpisuje posamezna stanja: npr. LED3 vklop, LED3 izklop, LED4 utrip, LED4 izklop (1 točka)
- če je niz znakov aaa, se izpiše na displayu in na serijskem portu napis "konec" (1 točka)
*/

#define led_3_on 111
#define led_3 3
bool Led_3_State = false;

#define led_4_blink 333
#define led_4 5
bool Led_4_blink_State = false;

unsigned long trenutniCas;
int zakasnitev = 500;
unsigned long prejsnjiCas = 0;
int led_state = LOW;

void setup() {
  Serial.begin(115200);
  Serial.println("Vpisi niz stevil: ");
  pinMode(led_3, OUTPUT);
  pinMode(led_4, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    char vpis[4];
    int steviloZnakovVpisa = Serial.readBytes(vpis, 3);
    if (steviloZnakovVpisa == 3) {
      vpis[3] = '\0';
      int stevilka = atoi(vpis);
      switch(stevilka) {
        case led_3_on:
          if(Led_3_State == false){
            Serial.println("sveti");
            digitalWrite(led_3, HIGH);
            Led_3_State = true;
          } else{
            Serial.println("ne sveti");
            digitalWrite(led_3, LOW);
            Led_3_State = false;
          }
          break;

        case led_4_blink:
          if (Led_4_blink_State == false) {
            Led_4_blink_State = true;
          } else {
            Led_4_blink_State = false;
            digitalWrite(led_4, LOW);
          }
          break;
        
        default: /* ce je vec kot tri znaki*/
          Serial.println("Napaka, ponovni vnos.");
          while (Serial.available()) {
            Serial.read();
          }
          break;
      }
    } else {
      Serial.println("Napaka, ponovni vnos.");
      while (Serial.available()) {
        Serial.read();
      }
    }
  }

  if (Led_4_blink_State) {
    unsigned long trenutniCas = millis();
    if (trenutniCas - prejsnjiCas >= zakasnitev) {
      prejsnjiCas = trenutniCas;
      if (led_state == LOW) {
        led_state = HIGH;
      } else {
        led_state = LOW;
      }
      digitalWrite(led_4, led_state);
    }
  }
}