-
11. Data: 2014-04-24 20:04:54
Temat: Re: Działająca biblioteka do BMP085
Od: "Pszemol" <P...@P...com>
"Atlantis" <m...@w...pl> wrote in message
news:ljb6vm$mdt$1@portraits.wsisiz.edu.pl...
> W dniu 2014-04-24 01:31, Pszemol pisze:
>
>> Podejrzewałbym następujące linie Twojego kodu:
>>
>> 1) itoa(pressure, result, 10);
>
> Dokładnie, ta diagnoza okazała się być poprawną. Najpierw nie
> zauważyłem, że itoa() przyjmuje short inta, a potem przeoczyłem literkę
> "l" w tokenie obsługującym przesyłaną wartość w sprintf_P. Zaowocowało
> to takim samym błędem.
>
> Teraz wszystko działa, otrzymuję ciśnienie o prawdopodobnej wartości.
No to fajnie :-)) Cieszę się, że mi kryształowa kula wciąż działa dobrze ;-)
> Jeśli chodzi o temperaturę, to zastosowana biblioteka zwraca ją jako
> double. Myślę, że nie będę się już bawił w jej przerabianie, zresztą
> miło byłoby, gdyby wynik był zwracany w normalnych jednostkach, a nie
> 0,1 stopnia C.
>
> Włączanie operacji zmiennoprzecinkowych w stdio.h raczej nie chodzi w
> grę. Nie dosyć, że kod od tego tyje, to jeszcze zużywane są cykle
> procesora.
>
> Dobrze pamiętam tę sztuczkę?
>
> double temperature = bmp085_gettemperature();
> int16_t intpart = (int16_t)temperature;
> int16_t decpart = ((int16_t)(temperature*2)%2);
> sprintf_P(pAnswer, PSTR("+TEMP: %d.%d\r\n"), intpart, decpart);
Hm... Sprawdźmy na szybko... :-)
Temperatura pokojowa, załóżmy 21,563C.
Mamy więc wartość zmiennej 'temperature' w dziesiątych Celciusza: 215.63
A więc wartość intpart jest automagicznie 215, tu OK.
Wartość decpart obliczamy, w kolejności, mnożąc 215.63*2 = 431.26
Teraz rzutujemy takiego doubla do inta, mamy 431.
Reszta z dzielenia tego 431 przez 2 wyjdzie nam 1.
Czyli sprintf wyświetli 215.1 zamiast 215.63 - kiepsko.
Lepiej chyba zrobić tak:
double dblTemperature = bmp085_gettemperature();
int iTemperature = ( dblTemperature < 0 ) ? dblTemperature - 0.5 :
dblTemperature + 0.5;
sprintf(pAnswer, "+TEMP: %d.%d\r\n"), iTemperature, iTemperature%10);
Podstawmy nasz przykład z dblTemperature = 215.63.
iTemperature = (int)(216.13);
Zatem
iTemperature = 216
Dla wartości z przedziału < xx.5, np dblTemperature = 215.33.
iTemperature = (int)(215.83);
Zatem
iTemperature = 215
Dla temperatur ujemnych, np dblTemperature = -215.63.
iTemperature = (int)(-216.13);
Zatem
iTemperature = -216
Ale nie bardzo rozumiem czemu skoro już masz typ zmiennej double
w swoim kodzie, a więc musiałeś włączyć takie liczby, nie?
Czemu więc nie zrobisz po prostu tak:
double dblTemperature = bmp085_gettemperature();
sprintf_P(pAnswer, PSTR("+TEMP: %.1f\r\n"), dblTemperature/10.0);
I od razu uwaga, pewnie zauważyłeś dodałem przedrostki oznaczające
typ zmiennej... Tak się po prostu łatwiej czyta kod, zwłaszcza jak używasz
zmiennych o bardzo różnych typach które dawałyby niebezpieczne efekty
przy cichym (domyślnym) rzutowaniu przez kompilator...
Takie przedrostki to popularna konwencja zwana "notacją węgierską",
warto się jej od razu nauczyć i trzymać nawet w małych programach
a jak wejdzie Ci w nawyk to będziesz miał później jak znalazł ;-)
http://pl.wikipedia.org/wiki/Notacja_w%C4%99gierska
-
12. Data: 2014-04-24 21:01:00
Temat: Odp: Działająca biblioteka do BMP085
Od: Sylwester Łazar <i...@a...pl>
Ładnie chłopcy pomujecie ten produkt :-)
No muszę przyznać, że zupełny profesjonalizm!
I są gotowe przykłady i miła obsługa...
Jednak dorzuciłbym ten klaser:
http://www.kamami.pl/index.php?ukey=product&productI
D=203517
To jest niezwykle ciekawa rzecz i cena niemal ta sama.
Poważnie piszę.
S.
-
13. Data: 2014-04-24 21:01:53
Temat: Odp: Działająca biblioteka do BMP085
Od: Sylwester Łazar <i...@a...pl>
Ładnie chłopcy pompujecie ten produkt :-)
Muszę przyznać, że zupełny profesjonalizm!
I są gotowe przykłady i miła obsługa...
Jednak dorzuciłbym ten klaser:
http://www.kamami.pl/index.php?ukey=product&productI
D=203517
To jest niezwykle ciekawa rzecz i cena niemal ta sama.
Poważnie piszę.
S
-
14. Data: 2014-04-24 21:05:14
Temat: Re: Działająca biblioteka do BMP085
Od: Pszemol <P...@P...com>
Sylwester Łazar <i...@a...pl> wrote:
> Ładnie chłopcy pompujecie ten produkt :-)
> Muszę przyznać, że zupełny profesjonalizm!
> I są gotowe przykłady i miła obsługa...
A Ty znowu zapomniałeś dziś zażyć lekarstwa i masz te swoje chore urojenia?
;-)
-
15. Data: 2014-04-24 21:10:13
Temat: Re: Działająca biblioteka do BMP085
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Pszemol <P...@P...com> napisał(a):
> Podał przecież... Cytuję:
> "że wartość ciśnienia jest nieprawidłowa - wychodzi jakieś 300 HPa..."
Nie podał. Pytałem o wartości trzech bajtów odebranych po I2C, a nie końcowy
wynik obliczeń.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 13 days, 19 hours, 23 minutes and 58 seconds
-
16. Data: 2014-04-24 21:14:31
Temat: Odp: Działająca biblioteka do BMP085
Od: Sylwester Łazar <i...@a...pl>
> > Ładnie chłopcy pompujecie ten produkt :-)
> > Muszę przyznać, że zupełny profesjonalizm!
> > I są gotowe przykłady i miła obsługa...
>
> A Ty znowu zapomniałeś dziś zażyć lekarstwa i masz te swoje chore
urojenia?
> ;-)
Dlaczego jesteś taki szorstki?
Wolę, żebys tutaj się udzielał niż w wątku ze zwykłymi życzeniami, który
dzięki Tobie rozrósł się do ćwierć tysiąca postów (!!!).
Doceń to, jak ja doceniam Twoją pracę.
S.
-
17. Data: 2014-04-24 21:28:44
Temat: Re: Działająca biblioteka do BMP085
Od: Pszemol <P...@P...com>
Sylwester Łazar <i...@a...pl> wrote:
>>> Ładnie chłopcy pompujecie ten produkt :-)
>>> Muszę przyznać, że zupełny profesjonalizm!
>>> I są gotowe przykłady i miła obsługa...
>>
>> A Ty znowu zapomniałeś dziś zażyć lekarstwa i masz te swoje chore urojenia?
>> ;-)
> Dlaczego jesteś taki szorstki?
Zgrywasz niewiniątko? Oskarżasz mnie tu znowu o jakies pompowanie
produktu... Nawiazujesz do tych swoich wcześniejszych urojeń o tym że ja
niby jakimś sprzedawcą części itp, itd... Weź przestań bo tylko
niepotrzebny swąd robisz takimi wypowiedziami!
> Wolę, żebys tutaj się udzielał niż w wątku ze zwykłymi życzeniami, który
> dzięki Tobie rozrósł się do ćwierć tysiąca postów (!!!).
Ty narzekasz?? Ty?? Gdyby nie Twoje nachalne kontynuacje życzeń i wpychanie
sie na tą grupę pogróżkami religijnymi to w ogóle by tego wątka nie było...
Pij więc piwo które sobie sam naważyłeś! :-)
-
18. Data: 2014-04-24 21:28:45
Temat: Re: Działająca biblioteka do BMP 085
Od: Pszemol <P...@P...com>
"Grzegorz Niemirowski" <g...@p...onet.pl> wrote:
> Pszemol <P...@P...com> napisał(a):
>> Podał przecież... Cytuję:
>> "że wartość ciśnienia jest nieprawidłowa - wychodzi jakieś 300 HPa..."
>
> Nie podał. Pytałem o wartości trzech bajtów odebranych po I2C, a nie
> końcowy wynik obliczeń.
Twoja kryształowa kula jest zepsuta...
Mojej wystarczyło to co podał :-D
-
19. Data: 2014-04-24 21:31:48
Temat: Re: Działająca biblioteka do BMP 085
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Pszemol <P...@P...com> napisał(a):
> Twoja kryształowa kula jest zepsuta...
> Mojej wystarczyło to co podał :-D
Zgadza się :) Ja się skupiłem na samym pobieraniu danych po I2C, a Ty się
prawidłowo domyśliłeś, że problem jest znacznie później, przy prezentacji.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 13 days, 19 hours, 43 minutes and 31 seconds
-
20. Data: 2014-04-24 23:15:13
Temat: Re: Działająca biblioteka do BMP 085
Od: Pszemol <P...@P...com>
"Grzegorz Niemirowski" <g...@p...onet.pl> wrote:
> Pszemol <P...@P...com> napisał(a):
>> Twoja kryształowa kula jest zepsuta...
>> Mojej wystarczyło to co podał :-D
>
> Zgadza się :) Ja się skupiłem na samym pobieraniu danych po I2C, a Ty się
> prawidłowo domyśliłeś, że problem jest znacznie później, przy prezentacji.
Dużo łatwiej byłoby pomóc gdyby proszący o pomoc napisali ciut więcej niż
im się wydaje niezbędne...
Ale z drugiej strony gdy się uda poprawnie odgadnąć przyczynę problemu przy
małej ilości podpowiedzi to potem satysfakcja większa :-)