/* 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;
}
}
}