Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Maciej_ZG

Strony: [1]
1
Cytuj
Zbyt przewymiarowany. Malinę widziałbym w znacznie bardziej wymagających scenariuszach, jak symulacja samego pulpitu, czy komunikacja przez LAN.
Ale jak działa i zbytnio się nie grzeje, to pół biedy.

Mi tu chodziło o bardziej generyczne rozwiązanie (polecam zajrzeć do kodu co udostępniłem). Malina robi za proxy pomiędzy różnymi transportami (TCP i UART) i formatami danych (binarny maszyny + inne w fazie testowania). Arduina są niezależne i realizują wymagane funkcję. Oczywiście można byłoby zoptymalizować / zmienić na np ESP32 / cokolwiek, ale mi głównie chodziło o logiczne rozdzielenie funkcji. Nikomu nie narzucam swojego rozwiązania.

2
Ja też korzystam w swoim pulpicie od EU07 z tych samych silniczków i mam podobne problemy.
Funkcja update (https://github.com/clearwater/SwitecX25/blob/master/SwitecX12.cpp#L147) wykonuje ruch (advance) co określony czas (microDelay), który pochodzi z tabeli defaultAccelTable. Można pobawić się z wartościami w tej tabeli, bo mają one wpływ na płynność ruchu, ale chyba najważniejszym jest odpowiednie skorelowanie odbioru danych z funkcją ruchu. Jeśli dane przychodzą np. z I2C poprzez kod wykonywany z przerwania - można pokusić się o użycie właśnie advance zamiast update (a przynajmniej ja mam taki plan).

Jest jeszcze "blokująca" funkcja stepTo() ze stałym delayem pomiędzy krokami.

Duży wpływ na płynność mają też dane z samego symulatora. Jako że dostajemy je co pewien interwał czasowy, poszczególne dane mają również swój "skok", który może powodować widoczne szarpanie zamiast płynnej zmiany wartości.
Aktualnie walcze z tym problemem u siebie, jak będę miał coś wystarczająco satysfakcjonującego - podziele się rozwiązaniem.


Strony: [1]