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



Teraz jest 20 kwi 2024, o 16:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 5 lis 2020, o 21:49 
Offline
Nowy

Dołączył(a): 08 kwi 2020
Posty: 8
Pomógł: 0

Cześć,
podstawowy kod, przepisany z książki.
Wszystko fajnie działa gdy kod wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ale wynik odczytu otrzymuję z zakresu 0-254.
Vcc to 5V.
więc zamiast na końcu return ADCH; wpisuje: return ADCH *(5/255);
w ten sposób na LCD powinienem mieć wartości z zakresu 0-100, a tymczasem wyświetla się wartość 0.
Co jest nie tak?
funkcja LCD_Int wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2020, o 22:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2014
Posty: 150
Pomógł: 1

Myślę, że problem lezy w kolejności wykonywania działń.
ADCH *(5/255) -> w pierwszej kolejności wykona się to co w nawiasie czyli 5/255 = 0,01960784313725490196078431372549 czli w zaokrągleniu wychodzi 0 bo nie działasz na typach float. ADCH * 0 = 0.
spróbuj tak (ADCH *5)/255 a najlepiej bez nawiasów.


Autor postu otrzymał pochwałę


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: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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