Witam
Jak w temacie. Jak już odczytam wartość temperatury z czujnika, to co zrobić, aby temp była wyświetlana na 3 wyświetlaczach 7-segmentowych ???Piszę w języku C. Mikrokontroler to Attiny2313.
[C++] ds18b20 wyświetlenie wartości na wyśw 7-segmentowych
Zakładam, że do wyświetlenia temperatury będą potrzebne cztery wyświetlacze 7-mio segmentowe - wyświetlenie znaku dla temperatury ujemnej, i trzy cyfry pokazujące wartość temperatury (np. -12.7).
Obliczoną wartość temperatury dzielę przez 100 - to będzie wartość do wyświetlenia na pozycji 2-giej wyświetlacza. Następnie resztę z dzielenia temperatury przez 100 zapisuję w zmiennej pomocniczej. Dzielę ją przez 10 i to bedzie wartość do wyświetlenia na pozycji 1 a reszta z tego dzielenia ma być wyświetlona na pozycji 0. Zakładam kolejność wyświetlaczy: 3-2-1-0.
Oddzielną kwestią jest rozpoznawanie liczby ujemnej.
Przykład:
cyfra2 = temperatura / 100;
temp_pom = temperatura % 100;
cyfra1 = temp_pom / 10;
cyfra0 = temp_pom % 10;
Obliczoną wartość temperatury dzielę przez 100 - to będzie wartość do wyświetlenia na pozycji 2-giej wyświetlacza. Następnie resztę z dzielenia temperatury przez 100 zapisuję w zmiennej pomocniczej. Dzielę ją przez 10 i to bedzie wartość do wyświetlenia na pozycji 1 a reszta z tego dzielenia ma być wyświetlona na pozycji 0. Zakładam kolejność wyświetlaczy: 3-2-1-0.
Oddzielną kwestią jest rozpoznawanie liczby ujemnej.
Przykład:
cyfra2 = temperatura / 100;
temp_pom = temperatura % 100;
cyfra1 = temp_pom / 10;
cyfra0 = temp_pom % 10;
Możesz się wzorować na tym: http://mikrokontrolery.blogspot.com/201 ... ersja.html
to od razu zarobisz dodatkowo 1,5kB pamięci programu wyrzucając float.
to od razu zarobisz dodatkowo 1,5kB pamięci programu wyrzucając float.
Skoro uparłeś się na używanie liczb zmiennoprzecinkowych typu FLOAT, to musisz jeszcze zrobić to: http://mikrokontrolery.blogspot.com/201 ... lanie.htmlmaxxxior pisze:hmm, no coś mi nie działa... tą wartość temp mam w float, a tablica z cyframi wyswietlaczy jest na int'ach... nawet jak rzutuje tą wartość temp na int to i tak nic nie wyświetla :/
odświeżam. Mam problem z tym 'wyłuskaniem' cyfr z liczby. Mam np temperaturę 34,5. i teraz robię tak:
dziesiatki = temperatura/10;
jednosci = temperatura %10;
a cyfra po przecinku? nie mam pojęcia... pomocy
ok, chyba znalazłem rozwiązanie, cyfra po przecinku będzie wynosić (temperatura/0.1)%10, tak?
dziesiatki = temperatura/10;
jednosci = temperatura %10;
a cyfra po przecinku? nie mam pojęcia... pomocy
ok, chyba znalazłem rozwiązanie, cyfra po przecinku będzie wynosić (temperatura/0.1)%10, tak?