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



Teraz jest 9 lis 2024, o 02:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 24 ] 
Autor Wiadomość
PostNapisane: 7 lip 2013, o 16:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Witam wymyśliłem sobie progres bar na wyświetlaczu 4x16 znaków

każde pole przeznaczone na znak podzieliłem jeszcze na 5 otrzymując 80 segmentów zdefiniowałem odpowiednie znaki itd
napisałem odpowiednia funkcję ale nie jestem zadowolony do końca,
ponieważ nie wiem jak zrobić aby funkcja po podzieleniu wartości licznika przez 80 działa również prawidłowo z wartościami niecałkowitymi
bo nie mogę zapalać np 0.8 znaku :) maksymalna wartość licznika wynosi 99999

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 17:15 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Int od razu zaokrągla się do liczby całkowitej. Potrzebujesz na progress barze aż takiej dokładności?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Nie potrzebuje jakiejś super dokładności to jest raczej poglądowo :)
ale chciałbym aby to jakoś estetycznie wyglądało :)

Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 17:51 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

A jak na razie to wygląda?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 17:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Dziele licznik przez 80 i tyle segmentów zapalam na jedna inkrermentacje licznika.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 17:58 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Mam nadzieję, że chodzi o coś takiego:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Niestety pisane na szybko, mam nadzieję, że działa :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 18:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

No dzięki właśnie mam to tak zrobione :)

Cały problem polega na tym, że nie działa mi funkcja kiedy wynik z dzielenia przez 80 jest nie całkowity np 0.8 itd
Funkcja mi działa :) wspomniałem o tym w 1 poście :)

Reszta mi śmiga :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 18:39 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

A spróbuj tak:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 20:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Chyba zrobię jakąś animacje na LCD-ku bo nie znajduje rozwiązania :(

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 20:29 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Móglbys wyslac caly kod? Latwiej bedzie Ci pomóc

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2013, o 23:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Wrzucam kod :)

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie działa z wartościami niecałkowitymi poza tym fajnie chodzi :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 07:23 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

A może zrób jakieś rzutowanie do uint16_t wyniku dzielenia? Może to coś zmieni.



Ostatnio edytowano 8 lip 2013, o 08:18 przez Wilu88, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 07:52 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

stachu napisał(a):
Witam wymyśliłem sobie progres bar na wyświetlaczu 4x16 znaków

każde pole przeznaczone na znak podzieliłem jeszcze na 5 otrzymując 80 segmentów zdefiniowałem odpowiednie znaki itd
napisałem odpowiednia funkcję ale nie jestem zadowolony do końca,
ponieważ nie wiem jak zrobić aby funkcja po podzieleniu wartości licznika przez 80 działa również prawidłowo z wartościami niecałkowitymi
bo nie mogę zapalać np 0.8 znaku :) maksymalna wartość licznika wynosi 99999


Niepełne znaki wrzuć do tablicy. 0.8 znaku to 4/5 a to oznacza że n % 5 = 4 czyli należy wyświetlić int(n/5) pełnych znaków plus 4 znak z tablicy niepełnych, gdzie n to wartość do wyświetlenia na progresbarze.

Pzdr
Perlon

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 10:48 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Cytuj:
0.8 znaku to 4/5 a to oznacza że n % 5 = 4 czyli należy wyświetlić int(n/5) pełnych znaków plus 4 znak z tablicy niepełnych, gdzie n to wartość do wyświetlenia na progresbarze.


Mój kod robi właśnie coś takiego :D
Stachu, na pewno go próbowałeś?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 12:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Albo ja coś robię nie tak albo twój kozik nie do końca działa

bo np u mnie val jest z zakresu 0d 0 do 99999 :)

Tak to u wygląda ale niestety nie do końca jest ok

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 12:56 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

A czemu akurat:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

?

Jeśli masz dane z zakresu 0 - 99999 to można łatwo je sobie zamienić (co prawda nie jest to specjalnie dokładne) dzieląc je przez 1250.
W programie, gdy wywołujesz progress bara, dziel licznik przez 1250:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jako, że progress bar przyjmuje zmienną typu unsigned char, wynik dzielenia zostanie zaokrąglona do liczby całkowitej.
Kod progress bara poradzi sobie również z wyświetlaniem wartości niepodzielnych przez 5 :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Chmm... kombinuje i nie wiem czy dobrze wykombinowałem, a może sobie życie utrudniam :)

A gdyby tak zliczać ułamki i czekać aż będzie to wartość

1, 2, 4, 5, 8, 10, 16, 20, 40, 80

czyli dzielnik całkowity liczby 80 ?

Tylko nie wiem czy w każdym przypadku będzie to działało ?

Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:09 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Mówię Ci, wystarczy, że podzielisz licznik przez 1250 przy wywoływaniu funkcji prorgress_bar2();

Np.: gdy licznik będzie miał wartoś 34257 po podzieleniu będzie wynosił 27.4, ale zaokrągli się do 27.
Funkcja podzieli 27 przez 5 i wyjdzie 5 - narysuje 5 pełnych znaków.
Funkcja obliczy resztę z dzielenia 27 przez 5 i wyjdzie 2 - jako ostatni znak narysuje belkę 2x8.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Chyba zapomniałeś o 2 rzeczach o inkrementacji pozycji kursora i o jego cofaniu bo jeśli wpisujesz znak w pole to kursor przeskakuje o 1 pole dalej :)

Ale oczywiście mogę się mylić :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:25 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Sorry, dawno nie programowałem LCD z Arduino.
Kursor inkrementuje się sam, więc nie ma problemu. Trzeba jednak na początku funkcji dopisać:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Reszta działa?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Niestety rysuje tylko 1 pełny znak i nic więcej :(

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:38 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Licznik w pętli inkrementujesz i wywołujesz funkcję progress_bar2()?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 14:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Mam 2 liczniki do 1 wprowadza się wartość i ta wartość jest stała a drugi jest inkrementowany i porównywany

Wstawiam do funkcji wartość stałą no chyba że mam wstawić to zmienną ?

Cyba dam sobie spokój ładnie zrobię to sobie na PC tam niem takich problemów :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 16:07 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 paź 2012
Posty: 18
Pomógł: 1

Wstaw do funkcji wartosc zmienna

_________________
sig off ;(



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

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