www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Kaj počnem - December 2023
Pojdi na stran Prejšnja  1, 2, 3
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Sre Dec 20, 2023 11:20 am    Naslov sporočila:   Odgovori s citatom

Če se ti ne sanja, potem ne tikaj knjižnice Smile
0xFA (hex) = 250 (dec) ampak tega ne spreminjaj, ker tako pač mora biti!

Sicer pa zakaj nebi uporabil sprintf? Saj si sam napisal primer, kako prikazati le eno decimalko.

Ne prikazuj direktno izhod senzorja na println, ampak ga daj v eno neznako (float) in potem z sprintf prikaži le eno decimakno.

Koda:
float T = bmp.readTemperature();
char buf[10];
sprintf(buf, "%.1f", T);  // .1 means: print 1 numbers after the dot

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 11.95
Kraj: Trebnje

PrispevekObjavljeno: Sre Dec 20, 2023 11:31 am    Naslov sporočila:   Odgovori s citatom

Seveda je bila to prva stvar, ki sem jo preizkusil.
Rezultat:


PS.:
Sem še malo "raziskoval" in naletel na tole: (Še za par ur tuhtanja Smile)

KLIK
.....
Now you might be like… “Wait a second now – I thought you said the “s” character formatter was for a string of characters, but the temperature in Fahrenheit is a floating point value – what gives?!”

Well, here’s the deal.

Sprintf() with Arduino cannot handle floating point values. So if you have to print something that has a decimal point, like 3.14 or 156.7, then you need to convert that float value to a character string first, and then print the string. A handy way to do that is with dtostrf(), which converts a floating point value to a string. I won’t get into that now, but be sure to check out our other video on using dtostrf() with Arduino.



17030646429411233019241466175079.jpg
 Opis:
 Velikost datoteke:  3.16 MB
 Pogledana:  1 krat

17030646429411233019241466175079.jpg



_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Sre Dec 20, 2023 12:10 pm    Naslov sporočila:   Odgovori s citatom

Saj si potem na koncu dal:

Koda:
u8g2.println (buf);

se opravičujem, da nisem napisal, se mi je zdelo samoumevno....

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 11.95
Kraj: Trebnje

PrispevekObjavljeno: Sre Dec 20, 2023 1:05 pm    Naslov sporočila:   Odgovori s citatom

Sem ja, potem pa dobim "? °C"

Sem še TOLE šel brati in mi še vedno marsikaj ni jasno. Če dam kak drug argument za "%1" dobim izpis ampak ne pravi, neke 4 mestne številke.
Ta "sprintf" bi moral izpisati natanko to kar želim, ampak...

Se tudi sam opravičujem, ker mogoče sprašujem traparije, ampak se vse te stvari šele učim, pa še to bolj počasi. Smile

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3243
Aktiv.: 33.07

PrispevekObjavljeno: Sre Dec 20, 2023 9:05 pm    Naslov sporočila:   Odgovori s citatom

Najlažje se je igrati v kakem online prevajalniku, npr.:
https://onecompiler.com/c/3zwzaqpyq

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Sre Dec 20, 2023 9:49 pm    Naslov sporočila:   Odgovori s citatom

Probaj tako:
Koda:
float T = bmp.readTemperature();
char buf[10];
sprintf(buf, "%.1f", T);  // .1 means: print 1 numbers after the dot
u8g2.println (buf);
Serial.println (buf);

Tako boš videl tudi naserijskem portu kaj ti izpiše

sicer pa %.1f pomeni izpis na 1. decimalko spremenljivke float

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 11.95
Kraj: Trebnje

PrispevekObjavljeno: Sre Dec 20, 2023 10:45 pm    Naslov sporočila:   Odgovori s citatom

To sem že vse naredil, na serial portu je isto. Tisto "%.1f" mi je jasno, edino kar nisem preizkusil, je še, da v Float vpišem kar neko svojo številko, kot v primeru 2 prispevka višje od mosquita in kakor so na netu primeri.
Poročam jutri.

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1713
Aktiv.: 7.68
Kraj: Ig

PrispevekObjavljeno: Čet Dec 21, 2023 8:19 am    Naslov sporočila:   Odgovori s citatom

float x = 123.456789;
int a, b;

a = (int)x;
b = (int)((x - a) * 10);
printf("%d.%d", a, b);

x = tvoja meritev

printf = sprintf(buff. " Temp: %d.%d", a,b);

LP.

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 11.95
Kraj: Trebnje

PrispevekObjavljeno: Čet Dec 21, 2023 10:26 am    Naslov sporočila:   Odgovori s citatom

RGorazd

That's it!! Dancing sbeer sbeer

Le tukaj mora biti vejica namesto pike:
Koda:

sprintf(buff. " Temp: %d.%d", a,b);
sprintf(buff, " Temp: %d.%d", a,b);


Sedaj ta del pri meni izgleda takole:
Koda:

float x = bmp.readTemperature();
      int a,b;
      a=(int)x;
      b=(int)((x-a)*10);
      sprintf(buf,"%d.%d",a,b);
      u8g2.print(buf);


Hvala tudi ostalim za potrpljenje in pomoč. Nekaj novega sem se pa tudi vmes naučil. Ko končam še ostali prikaz, objavim sliko.

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1713
Aktiv.: 7.68
Kraj: Ig

PrispevekObjavljeno: Čet Dec 21, 2023 2:07 pm    Naslov sporočila:   Odgovori s citatom

Me veseli.
Ja, pisal sem na pamet, kompajler bi me opozoril Wink

LP,

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3243
Aktiv.: 33.07

PrispevekObjavljeno: Čet Dec 21, 2023 7:53 pm    Naslov sporočila:   Odgovori s citatom

Ostanek deljenja z deset lahko izračunaš tudi z opearorjem % (modulo).

b = a % 10;

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 11.95
Kraj: Trebnje

PrispevekObjavljeno: Pet Jan 12, 2024 12:24 pm    Naslov sporočila:   Odgovori s citatom

Sicer bi tile moji prispevki tule lahko romali v Arduino sekcijo...
Končno sem nekaj uspel "spesniti" s tistimle senzorjem in LCDjem:



17050550116828352052291625426472.jpg
 Opis:
 Velikost datoteke:  2.96 MB
 Pogledana:  3 krat

17050550116828352052291625426472.jpg



_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3
Stran 3 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 77 dni


Powered by phpBB © 2001, 2005 phpBB Group