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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 30 kwi 2025, o 22:02


    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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