/* Program lahko iz serijskega porta prebere do 50 znakov in jih zapiše v seznam tipa char.
Vsebino seznama izpišemo na serijski port.*/
/*Program dopolni, da prešteje število vejic*/



/*
#define maxStev 50
char sez[maxStev];
bool novPodatek = false; // ali smo prebrali vse znake?
int stevecVejic;

void setup() {
  Serial.begin(115200);
  Serial.println("Vnesi besedilo: ");
}

void loop() {
  if (Serial.available()) {
    Serial.readBytesUntil('\n', sez, maxStev); // končni znak, seznam, maks vnosov v seznam
    novPodatek = true;
  }
  if (novPodatek) {
    novPodatek = false;
    Serial.print("Vpisani znaki so: ");
    Serial.println(sez);
    for (int i = 0; i < maxStev; i ++) {
      if (sez[i] == ','){
        stevecVejic ++;
      }
      sez[i] = 0;
    }
    Serial.print("Število vejic: ");
    Serial.println(stevecVejic);
    stevecVejic = 0;
  }
}
*/


/*
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27
#define LCD_COLUMNS 20
#define LCD_LINES   4
#define maxStev 50

LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);

char sez[maxStev];
bool novPodatek = false; // ali smo prebrali vse znake?
int stevecVejic;

void setup() {
  Serial.begin(115200);
  lcd.init();
  lcd.setCursor(0, 0);
  lcd.print("Vnesi besedilo");
}

void loop() {
  if (Serial.available()) {
    Serial.readBytesUntil('\n', sez, maxStev); // končni znak, seznam, maks vnosov v seznam
    novPodatek = true;
  }
  if (novPodatek) {
    novPodatek = false;
    lcd.setCursor(0, 0);
    lcd.print("Vpisani znaki so: ");
    for (int i = 0; i < sizeof(sez); i++) {
      lcd.setCursor(i%16, 1);
      lcd.print(sez[i]);
      delay(100);
    }
    
    for (int i = 0; i < maxStev; i ++) {
      if (sez[i] == ','){
        stevecVejic ++;
      }
      sez[i] = 0;
    }
    Serial.print("Število vejic: ");
    Serial.println(stevecVejic);
    stevecVejic = 0;
  }
}
*/



/* S pomočjo funkcije string token (strtok()) razdeli seznam na posamezne podsezname. Ločilni znak je vejica. */
/*
char imena[] = "Janko! Meta,00, Nika?";
char deli[] = ",.!? ";

void setup() {
  Serial.begin(115200);
  Serial.println("Razdeli seznam na posamezna imena.");

  char *token = strtok(imena, deli);
  while (token != NULL) {
    Serial.println(token);
    token = strtok(NULL, deli);
  }
}

void loop() {

}
*/

/* Program prebere znake (števke) iz serijskega porta. (Uporabi Serial.readBytesUntil())
Med znaki se nahajajo tudi vejice. 
Seznam razdeli na posamezne besede (številke) kot določajo vejice
številke na koncu pretvori v int ter shrani v seznam. */

#define MaxStev 5
#define MaxSez 50

char buffer[MaxSez];

void setup() {
  Serial.begin(115200);
  Serial.println("Vpiši niz znakov: ");
}

int index;
int sez[MaxSez];

void loop() {
  if (Serial.available()) {
    memset(buffer, 0, sizeof(buffer)); // namesto for zanke buffer[i] = 0;
    Serial.readBytesUntil('\n', buffer, MaxSez);
    Serial.println(buffer);
    // seznam razdelimo
    char *token = strtok(buffer, ',');
    while (token != NULL && index < MaxStev) {
      sez[index++] = atoi(token);
      token = strtok(NULL, ',');
    }
    Serial.println("Seznam stevilk: ");
    for (int i = 0; i < index; i ++) {
      Serial.println(sez[i]);
      sez[i] = 0;
    }
  }
}