 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Ned Jan 22, 2012 1:24 pm Naslov sporočila: "Floating point" |
|
|
Pozdravljeni!
Imam težavo in sicer bi rad izpisal število z decimalno piko. Izdelujem si volt meter ter sem ga usposobil ampak števila povprečim ter delim med sabo. potem vsako število posebej izpišem. Rad bi malo večjo natančnost.
Najlepša hvala za odgovore ter prijeten dan! |
|
Nazaj na vrh |
|
 |
RUros Član


Pridružen-a: Čet 09 Mar 2006 22:26 Prispevkov: 1031 Aktiv.: 4.39
|
Objavljeno: Ned Jan 22, 2012 1:50 pm Naslov sporočila: |
|
|
In v čem točneje je težava ? Če te prav razumem narediš več meritev, katerih rezultate shraniš in iz tega izračunaš povprečno številko. In te številke ti ne gre izpisati ? Na kakšen način pa izpisuješ ? Če računaš vse s floati potem lahko s printf enostavno izpišeš float mar ne ? Je pa res da je računanje s floati zahteven zalogaj za c. |
|
Nazaj na vrh |
|
 |
snow Član


Pridružen-a: Tor 27 Dec 2005 14:02 Prispevkov: 341 Aktiv.: 1.44 Kraj: Ljubljana || Velenje
|
Objavljeno: Ned Jan 22, 2012 2:10 pm Naslov sporočila: |
|
|
Lepo pusti zadeve v int, jih seštej, množi z 10/100/1000 ter deli s številom vzorcev. Po možnosti naj bo število vzorcev večkratnik števila 2, če gre za mikrokontroler brez hardwarskega deljenja. Pri izpisu pa na ustreznem mestu prikaži decimalno vejico.
Bolje pa bi bilo, da bi bolj natančno predstavil svoj problem - število vzorcev, AD vrednosti, kaj te vrednosti pomenijo, itd. |
|
Nazaj na vrh |
|
 |
Jan Član


Pridružen-a: Sob 10 Jun 2006 14:19 Prispevkov: 313 Aktiv.: 1.35 Kraj: Dolenjska
|
Objavljeno: Ned Jan 22, 2012 6:57 pm Naslov sporočila: |
|
|
Če programiraš v C-ju z avr-gcc lahko uporabiš printf funkcijo in delaš kar z floating point števili, namesto s celimi.
Res pa je printf malo požrešna glede velikosti programa.
lp
Jan |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Ned Jan 22, 2012 7:00 pm Naslov sporočila: |
|
|
Integer namesto float, shift namesto deljenja.
Drugače boš par k flasha porabil samo za izračun in izpis
Je pa treba malo mislit zraven... _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
S53DZ Član



Pridružen-a: Čet 28 Apr 2011 9:27 Prispevkov: 951 Aktiv.: 5.52 Kraj: Ljubljana
|
Objavljeno: Ned Jan 22, 2012 7:47 pm Naslov sporočila: |
|
|
Delaš z integer v resoluciji x10 ali x100 ... potem pa cifre ustrezno izpišeš levo in desno od decimalke. |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3360 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Ned Jan 22, 2012 11:36 pm Naslov sporočila: |
|
|
Ne vem, s kakšnim orodjem programiraš. Vsako ima svojo rešitev za tvoj problem.
V Bascomu bi to bilo tako:
Če imaš recimo napetost v Voltih v integer variabli in sicer tako, da imaš za 3.5V v variabli integer 35, potem enostavno preneseš vsebino integer variable v single variablo in jo potem izpišeš:
Koda: |
dim napetosti as integer
dim napetost as single
napetosti = 35 ' primer vsebine
napetost = napetosti ' prenost v single variaglo
napetost = napetost / 10
print napetost |
_________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Pon Jan 23, 2012 7:58 am Naslov sporočila: |
|
|
hvala na primeru. Programiram v C-ju, se bom pa potrudil probat tudi bascom-u
vilko je napisal/a: |
Ne vem, s kakšnim orodjem programiraš. Vsako ima svojo rešitev za tvoj problem.
V Bascomu bi to bilo tako:
Če imaš recimo napetost v Voltih v integer variabli in sicer tako, da imaš za 3.5V v variabli integer 35, potem enostavno preneseš vsebino integer variable v single variablo in jo potem izpišeš:
Koda: |
dim napetosti as integer
dim napetost as single
napetosti = 35 ' primer vsebine
napetost = napetosti ' prenost v single variaglo
napetost = napetost / 10
print napetost |
|
|
|
Nazaj na vrh |
|
 |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Pon Jan 23, 2012 8:00 am Naslov sporočila: |
|
|
hvala za vse odgovore. Zadevo sem enkrat rešil tako:
Koda: |
//napetost=res1*0.0048828125*1000; //0,0048828125 sem dobil z Vin/1024
st1 = trunc(res1*0.0048875855*10);
st2 = trunc(res1*0.0048875855*100) -10*st1;
st3 = trunc(res1*0.0048875855*1000) - 100*st1 - 10*st2;
st4 = trunc(res1*0.0048875855*10000) - 1000*st1 - 100*st2 - 10*st3;
LCDWriteStringXY(0,0,"V= ");
LCDWriteStringXY(4,0,".");
LCDWriteIntXY(2,0,st1,2);
LCDWriteIntXY(5,0,st2,1);
LCDWriteIntXY(6,0,st3,1);
LCDWriteStringXY(7,0,"V"); |
vendar zadeva ni preveč natančna... Po moje zaradi zaokrožitve (trunc funkcije) |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Pon Jan 23, 2012 8:18 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Pon Jan 23, 2012 8:40 am Naslov sporočila: |
|
|
Kroko je napisal/a: |
Namesto množenja
raje uporabi
|
se opravičujem ampak ne razumem Vi ste mislili da bi pomnožil vhodno napetost (5V) z rezultatom ADC ter nato vse to "zašiftal" 10 mest na levo ? |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Pon Jan 23, 2012 8:51 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Pon Jan 23, 2012 8:56 am Naslov sporočila: |
|
|
Kroko je napisal/a: |
Deljenje z 1024 je isto kot shift za 10 v desno. |
super! tega pa nisem vedel hvala lepa! |
|
Nazaj na vrh |
|
 |
|
|
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: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|