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? 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 9 cze 2025, o 17:30


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
    Autor Wiadomość
    PostNapisane: 12 sty 2015, o 18:31 
    Offline
    Nowy

    Dołączył(a): 26 sie 2014
    Posty: 24
    Pomógł: 0

    Witam
    Od południa szukam rozwiązania i postanowiłem w końcu poprosić mądrzejsze głowy ode mnie o pomoc :)

    Mianowicie mam floata o wartości 12.876, a potrzebuję z tego zrobić 12.9.

    Po prostu zaokrąglić do jednego miejsca po przecinku.

    funkcja round(); zaokrągla mi liczbę do 13.00.

    Natomiast *100/100 zaokrągla do 12.88.

    Proszę o pomoc
    Marcin



    Ostatnio edytowano 16 sty 2015, o 15:32 przez Marcin_W, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2015, o 18:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sie 2013
    Posty: 119
    Lokalizacja: Cinisi
    Pomógł: 12

    najpierw pomnóż liczbę razy 10 wykonaj funkcję round() a później podziel przez 10 wartość z funkcji round() ;)

    _________________
    sig off :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 sty 2015, o 12:38 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    Witam


    Zainteresuj się tym:


    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    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: 13 sty 2015, o 13:06 
    Offline
    Nowy

    Dołączył(a): 26 sie 2014
    Posty: 24
    Pomógł: 0

    Dzięki Panowie za pomoc! Pomogło.
    Już metoda Nondzu była pomocna, a tą procedurkę to sobie zapamiętam :)

    Pozdrawiam i dzięki za pomoc :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 16:07 
    Offline
    Nowy

    Dołączył(a): 26 sie 2014
    Posty: 24
    Pomógł: 0

    Witam raz jeszcze

    Mianowicie utknąłem na przekazaniu struktury do procedury;

    Mam taką oto strukturę:

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


    Chce ją przekazać (właściwie jej adres) do procedury tworzącej z niej menu:

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


    procedurę wywołuję tak:

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


    Niestety dostaję komunikat błędu: variable or field 'create_menu' declared void.

    Gdy ręcznie chcę zadeklarować objenk "Menu" nie ma problemu:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

    Nie wiem tylko jak przekazać wskaźnik na ten twin do procedury.

    Nie ukrywam że posiłkuję się greenbook'iem i opisaną tam procedurą na używanie menu LCD.
    Nie mniej są to moje początki i części jeszcze nie do końca rozumiem, a część wiedzy przyjmuję na wiarę :)

    Więc proszę się nie śmiać ;) i pomóc przedszkolakowi :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 16:28 
    Offline
    Użytkownik

    Dołączył(a): 20 wrz 2013
    Posty: 647
    Zbananowany użytkownik

    Pomógł: 101

    Marcin_W napisał(a):
    Nie wiem tylko jak przekazać wskaźnik na ten twin do procedury.


    Na struct twin nie podasz bo to jest dopiero deklaracja typu. Za to możesz przekazać wskaźnik do zdefiniowanej zmiennej o typie struct twin (definicja wymaga podania słowa struct a więc prawidlowa definicja to struct twin Menu;) za pomocą operatora pobrania adresu &
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Przy okazji - masz błąd w nagłówku funkcji, m i s to wskaźniki więc trzeba to podać:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę

    _________________
    +++++[>++++<-]>[>++++++<-]>.---------.+++.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sty 2015, o 01:51 
    Offline
    Nowy

    Dołączył(a): 26 sie 2014
    Posty: 24
    Pomógł: 0

    Dzięki za pomoc.
    O jedną cegiełkę wiedzy jestem dalej :)

    Mam jeszcze jedną rzecz której nie rozumiem i może mi wyjaśnicie.

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


    A to wywala błąd:

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


    error: 'TWIN' was not declared in this scope

    Do czego potrzebny jest ten void(*event)(void)?
    Opierałem się na przykładnie tworzenia warstw na LCD z książki Mirka.
    Tam w strukturze ten EVENT pozwala podpiąć jakąś procedurkę z efektem pod daną warstwę, ale mi to nie jest potrzebne... nie mniej nie mogę się tego pozbyć, nawet tak mocno ograniczając procedurę?

    Jak to powinno wyglądać tu w Arduino?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sty 2015, o 10:23 
    Offline
    Użytkownik

    Dołączył(a): 20 wrz 2013
    Posty: 647
    Zbananowany użytkownik

    Pomógł: 101

    Marcin_W napisał(a):
    A to wywala błąd:

    Z listingu nic nie wynika. Powinno być OK (za wyjątkiem tego, że funkcja zadeklarowana jako zwracająca int nie ma returna, ale tu powinien być raczej inny komunikat). Może gdzieś brakuje jakiegoś średnika czy nawiasu (na listingu też nie widać braków, ale może źle skopiowałeś)
    Marcin_W napisał(a):
    o czego potrzebny jest ten void(*event)(void)?

    Marcin_W napisał(a):
    Tam w strukturze ten EVENT pozwala podpiąć jakąś procedurkę z efektem pod daną warstwę, ale mi to nie jest potrzebne

    Sam sobie odpowiedziałeś ;-)


    Autor postu otrzymał pochwałę

    _________________
    +++++[>++++<-]>[>++++++<-]>.---------.+++.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sty 2015, o 11:18 
    Offline
    Nowy

    Dołączył(a): 26 sie 2014
    Posty: 24
    Pomógł: 0

    Witam
    Listing na żywca kopiowany z okna programu. Jedyna różnica między nimi to, własnie ten ten "void event void" na końcu - tu jest, tu nie ma. Dlatego nie rozumiem do czego on jest potrzebny - skoro nie jest używany w strukturze?

    Próbowałem już pisać to od zera i to nie jeden raz. To bardziej skomplikowane struktury, to znowu ograniczone jak ten przykład do jednej zmiennej. Temat w zasadzie wałkuję od prawie tygodnia. Za każdym razem ten sam problem jest event działa, jego brak błąd...
    próbowałem tez od początku przeinstalować środowisko. Nawet instalkę ściągnąłem nową i instalowałem od zera, aby wykluczyć, że się coś pokiełbasiło. Nic...

    Gdy deklarację procedury create_obj zmienię z int na void błąd się zmienia na: variable or field 'create_obj' declared void

    W sumie już pomału mam dość i menu zrobię inaczej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sty 2015, o 12:28 
    Offline
    Użytkownik

    Dołączył(a): 20 wrz 2013
    Posty: 647
    Zbananowany użytkownik

    Pomógł: 101

    No dobra, z punktu widzenia składni języka C czy nawet C++ wszystko gra i buczy, to środowisko Arduino ma swoje odpały ;-) Tu jest wyjaśnienie i remedium: http://forum.arduino.cc/index.php?topic=46139.0

    A więc albo trzeba stworzyć dodatkowy plik .h z definicją typu i inkludować go w pliku głównym:
    (tu miał być obrazek ale znów się nie chce wgrywać więc obraski w załączniku)
    albo (co pewnie ja bym zrobił bo nie znoszę typedefów ;-)) stosować definicję typu w postaci struct twin:
    tu łobrasek "no_typedef.jpg" z załącznika


    Autor postu otrzymał pochwałę

    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

    _________________
    +++++[>++++<-]>[>++++++<-]>.---------.+++.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sty 2015, o 12:40 
    Offline
    Nowy

    Dołączył(a): 26 sie 2014
    Posty: 24
    Pomógł: 0

    Dzięki mistrzu za pomoc i poświęcony czas. Wielki ukłon za to.
    Będę kombinował dalej.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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