logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wyswietlanie ujemnych temperatur ds18b20

qudi 17 Gru 2011 00:33 1728 2
REKLAMA
  • #1 10269100
    qudi
    Poziom 15  
    Witam !
    
    
    		temp = ((~scratchpad[1])*16) + (((~scratchpad[0])+1)*0.0625);
    		temp_calosci = temp;
    		poprzecinku = (temp - temp_calosci)*10;
    
    // dzięki temu można pozbyć się minusa gdy jest-0.0625 st.C bo i tak wyświetla 
    // do częsci dziesiętnych więc byłoby -0.0 st C <-- troche bez sensu
    
    		if((temp_calosci+poprzecinku)==0)
    		sprintf(tablica,"%d"".""%d", temp_calosci, poprzecinku);
    		else
    		sprintf(tablica,"-""%d"".""%d", temp_calosci, poprzecinku);
    


    co jest nie tak z tym kodem, wypluwa głupoty dla ujemnych...

    Dodano po 52 [sekundy]:

    temp jest typu float
    temp_calosci typu int
    poprzecinku typu int
  • REKLAMA
  • #2 10293364
    maczar
    Poziom 13  
    Prawdopodobnie dlatego że ten czujnik używa kodu U2.

    Tutaj więcej informacji. Link

    EDIT:
    Napisz jeszcze co oznaczają zmienne (szczególnie scratchpad)
  • #3 10301970
    siwekyhy
    Poziom 14  
    Akurat też buduje termometr na ds18b20 tylko że w Bascomie, ja też miałem problem z ujemną temperatura. Co do ujemnej temperatury trzeba do obliczeń zamienić ujemną liczbę na dodatnią bo ds podaje np . dla 0 stopni zwraca wartość 0 co mnoży się dalej * 0,0625 daje 0 ale dalej dla ujemnych daje wartość -1 , -2 , -3 itd. Trzeba otrzymany wynik zamienić na dodatni np. przez moduł liczby w Bascomie ABS() lub po prostu pomnożyć przez * -1 . A następnie np. na wyświetlaczu umieścić minus .
REKLAMA