/*Napiši program, ki prebere niz znakov iz serijskega porta(4 števila).
če niz znakov ustreza številki 5461, 
se izpiše na serijskem portu izklop in prižge LED dioda.

#define LED 8
#define KODA 5461

void setup() {
  Serial.begin(9600);
  Serial.println("Vpiši kodo");
  pinMode(LED, OUTPUT);
}

void loop() {
  if (Serial.available()){
    char vpis[5];
    int steviloZnakovVpis=Serial.readBytes(vpis,4);// vpiše prve 4 znake v opis steviloZV šteje koliko znakov je vpisanih
    if (steviloZnakovVpis==4){
      vpis[4]= '\0'; // terminator seznama vpis(uporabljamo za zaključevanje seznama)
      int stevilka=atoi(vpis);
      if(stevilka==KODA){
        Serial.println("dostop je");
        digitalWrite(LED, HIGH);
      }
      else{
        Serial.println("poskusi ponovno");
        digitalWrite(LED, LOW);
        while(Serial.available()) Serial.read(); //preberemo če je v seral kakšen znak, nato z read izpraznimo
      }
    }
  }

}*/


/*Napiši program, ki prebere niz znakov iz serijskega porta(4 števila).
če niz znakov ustreza številki 
-5461 se iziše (vklop LED1), 
-5460 se iziše (izklop LED1),
-1234 se iziše (vklop LED2),
-1230 se iziše (izklop LED3),
-4545 se izpiše (utripanje LED3),
-4540 se izpiše (izklop LED3)
*/
#include <LiquidCrystal_I2C.h>

#define LED1 8
#define LED2 7
#define LED3 6

#define L1on 5461
#define L1off 5460
#define L2on 1234
#define L2off 1230
#define L3on 4545
#define L3off 4540

static bool i = false;

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Vpiši kodo");
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  lcd.init();                      // Inicializacija LCD-ja
  lcd.backlight();                 // Vklop osvetlitve
  lcd.setCursor(0, 0);             // Nastavitev položaja kazalca
  lcd.print("Vpisi kodo");
}

void loop() {
  if (Serial.available()){
    char vpis[5];
    int steviloZnakovVpis=Serial.readBytes(vpis,4);// vpiše prve 4 znake v opis steviloZV šteje koliko znakov je vpisanih
    if (steviloZnakovVpis==4){
      vpis[4]= '\0'; // terminator seznama vpis(uporabljamo za zaključevanje seznama)
      int stevilka=atoi(vpis);
      switch(stevilka){
        case L1on:
          Serial.println("LED1 vklop");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LED1 vklop");
          digitalWrite(LED1, HIGH);
          break;
        case L1off:
          Serial.println("LED1 izklop");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LED1 izklop");
          digitalWrite(LED1, LOW);
          break;
        case L2on:
          Serial.println("LED2 vklop");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LED2 vklop");
          digitalWrite(LED2, HIGH);
          break;
        case L2off:
          Serial.println("LED2 izklop");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LED2 izklop");
          digitalWrite(LED2, LOW);
          break;
        case L3on:
          Serial.println("LED3 utripanje");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LED3 utripanje");
          i=true;
          break;
        case L3off:
          Serial.println("LED3 izklop");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("LED3 izklop");
          digitalWrite(LED3,LOW);
          i=false;
          break;
        default:
          Serial.println("Poskusi ponovno");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Poskusite");
          lcd.setCursor(0,1);
          lcd.print("ponovno");
          while(Serial.available()) Serial.read();
          break;
      }
    }
  }
  static unsigned long trenutniCas;
  int zakasnitev=200;
  static bool m=false;
  if ((millis()-trenutniCas)>zakasnitev && i){
    trenutniCas=millis();
    m=!m;
    digitalWrite(LED3,m);
  }
}