// program, prebere 3 znake (ASCII koda), ki jih pretvorimo v številčno vrednost
/*
int ledPin = 11;
int utrip = 0;
int vrednost;

void setup() {
  Serial.begin(115200);;
  Serial.println("Vpiši število: ");
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (Serial.available()) {       // available() se uporablja za preverjanje če pride kakšen znak v mikrokontroler
    char znak = Serial.read();
    if (znak >= '0' && znak <= '9') {     // '0' = 48    '' je za znak oz. za črke
      vrednost = (vrednost * 10) + (znak - '0');
    }
    else if (znak == 10) {    // ENTER po ASCII = '10'
      utrip = vrednost;
      Serial.println(utrip);
      vrednost = 0;
    }
  }
  utripanje(utrip);
}

void utripanje(int x) {
  digitalWrite(ledPin, HIGH);
  delay(x);
  digitalWrite(ledPin, LOW);
  delay(x);
}
*/

// z uporabo SWITCH CASE stavka
// 1 - izpiše se 1 - utrip 1x
// 2 - izpiše se 2 - utrip 2x
// + - izpiše se + - LED turn on
// - - izpiše se - - LED turn off

/*
int ledPin = 11;

void setup() {
  Serial.begin(115200);
  Serial.println("Vpiši število: ");
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (Serial.available()) {       
    char znak = Serial.read();
    switch(znak) {
      case '1':
        Serial.println("ena");
        utripanje();
        break;
      case '2':
        Serial.println("dve");
        utripanje();
        utripanje();
        break;
      case '+':
        Serial.println("+");
        digitalWrite(ledPin, HIGH);
        break;
      case '-':
        Serial.println("-");
        digitalWrite(ledPin, LOW);
        break;
      default:
        Serial.println("Ni pravi znak.");
        break;
    }
  }
}

void utripanje() {
  digitalWrite(ledPin, HIGH);
  delay(250);
  digitalWrite(ledPin, LOW);
  delay(250);
}*/


// Preko serijskega porta preberi niz znakov in jih zapiši v seznam (tipa)
// Končni seznam pretvori v celo število
/*
int ledPin = 11;
int utrip = 0;
char seznam[6]; // seznam znakov
int index = 0;  //indeks seznama

void setup() {
  Serial.begin(115200);
  Serial.println("Vpiši niz števil:");
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    char znak = Serial.read();
    if (index < 5 && znak >= '0' && znak <= '9') {
      seznam[index++] = znak;
    }
    else {
      seznam[index] = 0;
      utrip = atoi(seznam);     // pretvorba STR -> INT
      Serial.println(utrip);
      index = 0;
    }
  }
  utripanje(utrip);
}

void utripanje(int x) {
  digitalWrite(ledPin, HIGH);
  delay(x);
  digitalWrite(ledPin, LOW);
  delay(x);
}
*/

/*
// Preberi 3 števila, ki so ločena z vejico (oblika zapisa: 45,123,66)

#define SEZNAMstevil 3
int seznamIndex = 0;    // indeks posameznega števila ločenega z vejico
int stevilo[SEZNAMstevil];  // seznam v katerega zapisemo vsa števila

void setup() {
  Serial.begin(115200);
  Serial.println("Vpiši 3 števila, ločena z vejico:");
}

void loop() {
  if (Serial.available()) {
    char znak = Serial.read();
    if (znak >= '0' && znak <= '9') {
      stevilo[seznamIndex] = (stevilo[seznamIndex] * 10) + (znak - '0');
    }
    else if (znak == ',') {
      if (seznamIndex < (SEZNAMstevil -1)) seznamIndex ++;
    }
    else {
      Serial.print("Seznam števil: ");
      Serial.println(seznamIndex + 1);
      for (int i = 0; i < seznamIndex; i++) {
        Serial.println(stevilo[i]);
        stevilo[i] = 0;   //  lahko preberemo naslednji niz števil
      }
      seznamIndex = 0;    // preberemo nova 3 števila
    }
  }
}
*/

/*
// Program prebere iz predpomnilnika serijske komunikacije znak ( ASCII ), če prebere znak:
// Prebrane znake pretvorimo številčno vrednost i jo izpišemo na 
// Vrednost določa frekvenco utripanja LED diode

#define LED 11
int vrednost = 0;

void setup() {
  Serial.begin(115200);
  Serial.println("Vpiši število: ");
  pinMode(LED, OUTPUT);
}

void loop() {
  static int m = 0;
  if (Serial.available()) {
    char znak = Serial.read();
    if (znak >= '0' && znak <= '9') {
      vrednost = (vrednost * 10) + (znak - '0');
    }
    else if (znak == 10) {
      Serial.println(vrednost);
      m = vrednost;
      vrednost = 0;
    }
  }
  utripanje(m);
}

void utripanje(int x) {
  digitalWrite(LED, HIGH);
  delay(x);
  digitalWrite(LED, LOW);
  delay(x);
}
*/

// Podobno kot zgornja naloga, vendar z omejitvijo vnosa MAX 5 znakov

#define LED 11
#define MAX 5 // 5 prebranih znakov 
int vrednost = 0;
int indeks = 0;  // indeks seznama
char seznam[6];
int utrip = 0;

void setup() {
  Serial.begin(115200);
  Serial.println("Vpiši število: ");
  pinMode(LED, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    char znak = Serial.read();
    if (znak >= '0' && znak <= '9' && indeks < MAX) {
      seznam[indeks] = znak;
      indeks++;
    }
    else {
      seznam[indeks] = 0;  // seznam zaključimo z NULL terminatorjem
      utrip = atoi(seznam);
      Serial.println(utrip);
      indeks = 0;  // prepišemo znake v seznamu z novim vnosom
    }
  }
  utripanje(utrip);
}

void utripanje(int x) {
  digitalWrite(LED, HIGH);
  delay(x);
  digitalWrite(LED, LOW);
  delay(x);
}


uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
r1:1
r1:2
led1:A
led1:C