Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie silnikami joystickiem z modułem nrf24l01

04 Lut 2019 23:10 282 2
  • Poziom 3  
    Witam

    Otóż rzecz polega na tym, że (prawdopodobnie) w programie odbiornika, w void loop, mam błędnie sformułowane instrukcje do komendy stopp. Problem jaki mam, to gdy pchnę joystick np. do przodu to gdy go puszczę, żeby powrócił do pozycji zero, to silniki kręcą się dalej w tym kierunku , którym był ostatnio wysyłany sygnał, tylko, że wolniej (tak jakby Arduino nie wiedziało co ma zrobić dla pozycji zerowej joysticka).Problem na pewno leży w programie, bo w ramach testu ustawiłem w "void forward" wszystkie silniki na LOW i kiedy pchnąłem joystick do przodu to koła się zatrzymały. Może to chodzi o to, że w kodzie nadajnika nie ma val pod stop stworzonego?   

    Ps.

    Jazda w przód, tył lewo, prawo działa bez zarzutu, tylko zatrzymanie kół nie działa.

    Nadajnik
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Odbiornik
    Kod: c
    Zaloguj się, aby zobaczyć kod
    [/code]
  • BotlandBotland
  • Poziom 32  
    Nie analizowałem całości, ale w tej linijce jest sprzeczność ( (msg[0] >=115 && msg[0] <=125) && (msg[0] >=30 && msg[0] <=40) ) {data = msg[0]; stopp(); }
    To co masz w nawiasach musiałoby być jednocześnie wartością od 115 do 125 i między 30 a 40. To oczywiście niemożliwe, nigdy się nie zatrzyma. Poza tym po każdej odebranej wiadomości powinieneś odpalać licznik czasu (oczywiście nie delay) i mierzyć czy od ostatniej komendy nie minęło więcej niż np. 1000ms, jeśli tak to stop, żebyś np. nie wjechał czołgiem w dom, bo ci pilot wpadł do kałuży lub wyleciała z niego bateria.
  • Poziom 3  
    kaczakat napisał:
    Nie analizowałem całości, ale w tej linijce jest sprzeczność ( (msg[0] >=115 && msg[0] <=125) && (msg[0] >=30 && msg[0] <=40) ) {data = msg[0]; stopp(); }
    To co masz w nawiasach musiałoby być jednocześnie wartością od 115 do 125 i między 30 a 40. To oczywiście niemożliwe, nigdy się nie zatrzyma. Poza tym po każdej odebranej wiadomości powinieneś odpalać licznik czasu (oczywiście nie delay) i mierzyć czy od ostatniej komendy nie minęło więcej niż np. 1000ms, jeśli tak to stop, żebyś np. nie wjechał czołgiem w dom, bo ci pilot wpadł do kałuży lub wyleciała z niego bateria.


    Faktycznie, pomysliłem się i zamiast wstawic || wstawiłem &&, a ca tydzień się z tym główkowałem :D