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



Teraz jest 9 lis 2024, o 03:19


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