/*
NALOGA 8
Program prebere zanke(števke) iz serijskega porta uporabi Serial.readBytesUntil().
Med znaki se nahajajo tudi vejice.
Seznam razdeli na posamezne besede(številke) kot določajo vejice; uporabi strtok().
Številke na koncu pretvori v integear in shrani v seznam tipa integear
*/
#define BUFFER_SIZE 50 // št. znakov začasnega seznama za branje znakov
#define MAKS_STEVILK 5 // največ 5 številk
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];
char buffer[BUFFER_SIZE];
Serial.readBytesUntil('\n',buffer,BUFFER_SIZE);
Serial.println(buffer);
// seznam razdelimo na številke, ločene z vejico
char *token = strtok(buffer,',');
while(token != NULL && indeks < MAKS_STEVILK){
seznamStevilk[indeks++] = atoi(token);
token = strtok(NULL,',');
}
// izpis vsebine seznama seznamStevilk
Serial.println("Seznam številk");
for(int i = 0; i < indeks; i++)Serial.println(seznamStevilk[i]);
memset(buffer,0,sizeof(buffer)); //namesto for zanke buffer[i] = 0
Serial.println();
}
}
/*Naloga 7
Spomočjo funkcije strtok() razdeli seznam na posamezne podsezname ločilni znak je vejica
char imena[] = "Janko!,Meta?,00,Nika";
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(){
}
*/
/*
naloga 6.
program 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 VEJIC
#include <LiquidCrystal.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 2
#define MAKSsteviloZnakov 50
char seznam[MAKSsteviloZnakov];
bool novPodatek = false; // preberemo vse podatke iz porta
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() {
int stevec = 0;
if(Serial.available()){
Serial.readBytesUntil('\n',seznam,MAKSsteviloZnakov); // preberemo vse znake
novPodatek = true;
}
if(novPodatek){
lcd.setCursor(0,0);
lcd.print("Vpisani znaki so: ");
lcd.setCurosr(0,1);
lcd.print(seznam);
Serial.print("Vpisani znaki so: ");
Serial.println(seznam);
novPodatek = false;
// seznam se mora izbrisati
for(int i = 0; i < MAKSsteviloZnakov; i++){
if(seznam[i] == ',') stevec++;
}
Serial.println(stevec);
for(int i = 0; i < MAKSsteviloZnakov; i++) seznam[i] = 0;
}
}
*/