//Program lahko iz serijskega porta prebere do 50 znakov in jih zapiše v seznam tipa char.
//Vsebino seznama zapišemo na serijski port
//Program dopolni s števcem vejc
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define MAKSstevloZnakov 50
char seznam[MAKSstevloZnakov];
bool novPodatek = false;
int stevec = 0;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
lcd.init();
lcd.setCursor(0,0);
lcd.print("Vpiši niz znakov: ");
Serial.begin(9600);
Serial.println("Vpiši niz znakov: ");
}
void loop() {
if (Serial.available()) {
Serial.readBytesUntil('\n', seznam, MAKSstevloZnakov); // preberemo vse znake
novPodatek = true;
}
if (novPodatek) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Vpisani znaki:");
lcd.setCursor(0,1);
lcd.print(seznam);
Serial.print("Vpisani znaki: ");
Serial.println(seznam);
// Število vejic v seznamu
for(int i = 0; i < MAKSstevloZnakov; i++){
if(seznam[i] == ',') stevec++;
}
Serial.print("Število vejic: ");
Serial.println(stevec);
// Seznam se mora izbrisati
for(int i = 0; i < MAKSstevloZnakov; i++) seznam[i] = 0;
stevec = 0;
novPodatek = false;
}
}
//7. s pomočjo funkcije strtok() razdeli seztnam na posamezne popdseznamse
//Ločilni znak vjecija
/*
char imena [] = "Janko! Panko? Marko.,00";
char deli[] = ",.!? ";
void setup(){
Serial.begin(9600);
Serial.println("Razdeli seznam na posamezna imena.");
char *token = strtok(imena, deli);
while(token != NULL){
Serial.println(token);
token = strtok(NULL,deli);
}
}
void loop(){
}
*/
//8. program prebere zanke (števke) iz serijskega porta; uporabi Serial.readBytesUntil(). Med znaki se nahajajo tudi vejice.
// Seznam razdeli na besede (številke) kot določajo. Številke na koncu pretvori v intiger.
/*
# define MAKS_STEVILK 5 // največ 5 številk
#define BUFFER_SIZE 50 // število znakov začasnega seznama za branje znakov
void setup(){
Serial.begin(9600);
Serial.println("Vpiši niz znakov");
}
int indeks = 0;
int seznamStevilk[MAKS_STEVILK];
void loop(){
if(Serial.available()){
char buffer[BUFFER_SIZE];
Serial.readBytesUntil('\n', buffer, BUFFER_SIZE );
Serial.println(buffer);
// sezname razdelimo na številke, ločene z vejico
char *token = strtok(buffer, ",");
indeks = 0; // Ponastavimo indeks za vsako novo branje
while(token != NULL && indeks < MAKS_STEVILK ){
seznamStevilk[indeks++] = atoi(token); // Pretvorimo znak v število in ga shranimo v seznam
token = strtok (NULL, ",");
}
// izpis vsebine seznama seznamStevilk
Serial.println("Seznam številk:");
for (int i = 0; i < indeks; i++) {
Serial.println(seznamStevilk[i]);
}
}
}
*/