Ako se ne smisli nesto efektnije, jedna od sporijih komandi koja moze da posluzi je standardna C funkcija sprintf().
Da ne objasnjavam sta sve ta funkcija radi, potrazite opis (ima dosta parametara) samo cu ukratko da kazem da ona sluzi za razna "formatiranja" brojeva i stringova.
Ovaj problem sa brojevima moze da se resi izmedju ostalog tako sto se upisuju "vodece nule" (leading zero), tako da na primer broj "123" postane "000123" gde smo rezervisali 6 mesta za prikaz.
Primer dela programa za formatiranje brojeva za LCD bi izgledao ovako:
Sprintf() funkcija moze takodje da prikaze i sa "leading space", dakle umesto nula da ispisuje space (prazan) karakter, moze sa leve strane, moze sa desne, moze svasta zato sam spomenuo da se obavezno pogleda dokumentacija za tu funkciju, svi racunari i sve platforme imaju tu C funkciju, kao i printf(), atoi(), itoa() ... na sve te funkcije ce da natrcite jednog dana ... ako dodjete do REGEXP, e onda ste na nekom semaforu skrenuli pogresno, trebalo je u suprotnu stranu kako god da izaberes : )
Stringovi se koriste samo kada se mora za prikaz u nama citljivom i "naviknutom" nacinu, kada ne mora, recimo za komunikaciju izmedju dva uredjaja uvek je bolje koristiti RAW/HEX format jer ima daleko vise prednosti nego string koji je limitiran sa svojim osobinama. Recimo samo kada se predje na UTF-8 to pravi takav problem da je to ludnica, nije vise jedan karakter jedan byte nego 2, 3, 4 ... sva logika koju imas se razbuca ako to na osnovnom nivou ne odradis kako treba, vazdan problema sa stringovima ...
Da ne objasnjavam sta sve ta funkcija radi, potrazite opis (ima dosta parametara) samo cu ukratko da kazem da ona sluzi za razna "formatiranja" brojeva i stringova.
Ovaj problem sa brojevima moze da se resi izmedju ostalog tako sto se upisuju "vodece nule" (leading zero), tako da na primer broj "123" postane "000123" gde smo rezervisali 6 mesta za prikaz.
Primer dela programa za formatiranje brojeva za LCD bi izgledao ovako:
Code:
#include <stdio.h> //biblioteka, postaviti na pocetku programa
char moj_buffer [40] = ""; //definicija buffera duzine 40 karaktera (40 da bi stao text i za "scroll")
moj_broj = 123; //variabla koja drzi nas podatak
//formatiraj poruku, %06d znaci da ispise broj sa do 6 "leading zero", poravnati sa leve strane broja
//pogledaj dokumentaciju za sprintf() za ostale raspolozive formate
sprintf(moj_buffer, "Pos=%06d mm", moj_broj);
lcd.clear(); //ocisti sve sa LCD, cursor na 0,0
lcd.print(moj_buffer); //ispisi sadrzaj bufera na LCD u prvom redu
//trebalo bi da se pokaze na LCD "Pos=000123 mm"
Sprintf() funkcija moze takodje da prikaze i sa "leading space", dakle umesto nula da ispisuje space (prazan) karakter, moze sa leve strane, moze sa desne, moze svasta zato sam spomenuo da se obavezno pogleda dokumentacija za tu funkciju, svi racunari i sve platforme imaju tu C funkciju, kao i printf(), atoi(), itoa() ... na sve te funkcije ce da natrcite jednog dana ... ako dodjete do REGEXP, e onda ste na nekom semaforu skrenuli pogresno, trebalo je u suprotnu stranu kako god da izaberes : )
Stringovi se koriste samo kada se mora za prikaz u nama citljivom i "naviknutom" nacinu, kada ne mora, recimo za komunikaciju izmedju dva uredjaja uvek je bolje koristiti RAW/HEX format jer ima daleko vise prednosti nego string koji je limitiran sa svojim osobinama. Recimo samo kada se predje na UTF-8 to pravi takav problem da je to ludnica, nije vise jedan karakter jedan byte nego 2, 3, 4 ... sva logika koju imas se razbuca ako to na osnovnom nivou ne odradis kako treba, vazdan problema sa stringovima ...