Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 10 kwi 2026, o 16:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 5 gru 2013, o 10:41 
Offline
Nowy

Dołączył(a): 06 gru 2011
Posty: 2
Pomógł: 0

Witam wszystkich,

Mam taki problem: zliczam impulsy, 185 impulsów = przesunięciu o 1mm, 1000 impulsów to jest około 5,4 mm. Nie mogę sobie poradzić z napisaniem kodu aby nie używać zmiennych typu float. Dokładność jaka mnie interesuje to jedno miejsce po przecinku. Próbowałem w podobny sposób postępować jak w bluebook'u w rozdziale o ADC ale mi to nie wychodzi.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 gru 2013, o 10:56 

Pomógł: 0

No ale co ci nie wychodzi, napisz dokładnie. Po za tym oglądałeś poradniki Mirka nt. ADC masz tam dosy dobrze wytłumaczone jak postępować by sobie poradzić bez floatów.
Po za tym jest jeszcze rozdział o DS18x20 tam też jest "myk" jak poradzic sobie bez floatów.

Sam stosuje po prostu zależnie od potrzeb albo uint32_t, albo jak starczy to uint16_t, przecież procesorowi wszystko jedno czy liczy 1234,65 czy 123465 z punktu widzenia samej liczby to to samo ;), tylko przecinek jest przesunięty i nie masz + 2K kodu.
Co za problem potem sobie to przekształcić na część znaczącą i tą po przecinku w celu wyświetlenia czy wysłania po RS232 :).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 5 gru 2013, o 12:40 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

A może napiszę jeszcze czytelniej, bo sam kiedyś z tym miałem problem.

Wynik, który chciałeś mieć w float mnożysz przez 100 i zapisujesz w zmiennej typu int (lub uint jeśli bez znaku - nazwijmy ją liczba100)
A potem jeśli chcesz ten wynik pokazać na wyświetlaczu to tworzysz 2 zmienne (dla części całkowitej i ułamkowej)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a potem przy wypisywaniu na LCD sklejasz te liczby z 3 elementów
liczba_c, kropki lub przecinka w zależności co chcesz pokazać, liczba_u
Obie te liczby są całkowite, ale po takim zabiegu zobaczysz jakby były float.

a te impulsy czy mm obliczasz sobie z proporcji (zresztą tak jak obliczyłeś to 5,4mm) - tylko to trzeba odpowiednio zapisać


Autor postu otrzymał pochwałę


Ostatnio edytowano 5 gru 2013, o 12:46 przez iwi, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 gru 2013, o 12:42 

Pomógł: 0

No dokładnie jak kolega iwi napisał, jak pogrzebiesz po forum to znajdziesz nawet gotowe kody w C, moje albo kolegów.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 5 gru 2013, o 21:14 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Cytuj:
a potem przy wypisywaniu na LCD sklejasz te liczby z 3 elementów

Czasem z 4 elementów. Jak masz liczbę 1234,65 przechowywaną jako 123456 to w porządku, bo 123456 / 100 = 1234 oraz 123456 % 100 = 56 co po sklejeniu daje 1234,56 natomiast jak masz liczbę 123401 to z działań otrzymasz 1234 i 1 i wtedy dodatkowo należy dodać warunek, że jak druga liczba jest mniejsza niż 10 to jeszcze trzeba dopisać 0.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2013, o 14:00 
Offline
Nowy

Dołączył(a): 06 gru 2011
Posty: 2
Pomógł: 0

Dziękuje bardzo za pomoc, już wiem o co chodzi :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO