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 23 maja 2025, o 06:00


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 1 lip 2018, o 21:11 
    Offline
    Użytkownik

    Dołączył(a): 25 lut 2015
    Posty: 43
    Pomógł: 1

    Cześć. Mam taki problem, że całkuje sobie prędkość kątową z żyroskopu żeby otrzymać kąt obrotu. O ile całkowanie prędkości ujemnej wychodzi poprawnie, tzn po obrocie i zatrzymaniu żyra scałkowany kąt jest poprawny i stoi w miejscu. To przy obrocie w drugą stronę kiedy prędkość jest dodatnia, po zatrzymaniu żyroskopu kąt natychmiast zaczyna spadać aż do zera. Zejście do zera z 90stopni zajmuje gdzieś ok. 10 sekund. Ja już nie wiem gdzie może być błąd, rozebrałem kod, podpatrywałem na sucho wartości prędkości i wydawały się być ok. Może Wy coś doradzicie z góry dziękuję.

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


    Potem tylko wyrzucam ang_z na seriala z częstotliwością 10Hz



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2018, o 20:18 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2013
    Posty: 296
    Lokalizacja: Szczecin
    Pomógł: 47

    Mnożysz zmienne int16 z double i podstawiasz wynik do int16, co niekoniecznie może dawać wynik, którego oczekujesz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lip 2018, o 09:02 
    Offline
    Użytkownik

    Dołączył(a): 06 maja 2016
    Posty: 28
    Pomógł: 2

    J.w kolega już opisał.

    Jeżeli chcesz liczyć na AVRku przesuń sobie przecinek i daj nawet uint32. By ci się zmieściły liczby z wynikami.
    W przypadku 8bitowych ciężko jest ogarnąć na nich wydajne liczenie zmiennoprzecinkowych. Po za tym zawsze następują błędy obliczeń. W przypadku jak przesuniesz przecinek i będziesz operować na dużych liczbach bez wartości ułamkowych, błędy będą dużo mniejsze, a i same obliczenia szybsze.
    Sama biblioteka zmiennoprzecinkowa zajmowała z tego co pamiętam ok 2kb na AVRku. Nie mówiąc już o wykorzystaniu sporych zasobów ramu do ich obliczania.



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

    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