22-10-2016, 14:13
Witam! Nie wiem czy założyłem temat w dobrym dziale, także w razie czego proszę o przeniesienie.
Realizuje projekt automatycznego ramienia robota. Konstrukcja już jest, sterowanie padem od konsoli też już jest. Zostało mi niewiele czasu, a chciałbym zrobić jeszcze zapamiętywanie ruchów, aby można by było je potem odtworzyć.
Mniej więcej mój zamysł wygląda tak
Zapis:
- uruchamiam "nagrywanie"
- wykonując ruchy za pomocą pada, zapisują się one na karcie microsd (w każdym cyklu sprawdza czy pozycja któregokolwiek serwa się zmieniła, jeśli serwa pozostają w tej samej pozycji, zaczyna liczyć czas. Jeśli ten czas wynosi więcej niż... powiedzmy 100ms to bierze go pod uwagę i zapisuje pod koniec kroku)
- zakańczam nagrywanie
Jeden krok - jedna linia w pliku na karcie microsd. Format by wyglądał w ten sposób:
gdzie x1 do x6 to pozycje serwomechanizmów (0-180), a czas [ms] to wiadomo (znak @ ma pomagać zidentyfikować krok przy odczytywaniu)
Odczyt:
- uruchamiam "odtwarzanie"
- wczytuje plik z krokami
- tutaj zabawa na stringach, żeby przypisać do odpowiednich zmiennych wartości x1-x6 i czas
- po odczytaniu danych ustawia pozycje serw i jeśli czas>0 to opóźnienie z pomocą funkcji millis
- czytanie kolejnych kroków do końca
I tutaj pojawia się pytanie. Czy przychodzi komuś z Was na myśl szybszy i prostszy sposób na wykonanie tego? Lub czy ta koncepcja jest poprawna? To co wyżej napisałem jest intuicyjne. Inny pomysł nie przyszedł mi do głowy, bo nie znam zbyt wielu funkcji w tym języku programowania. Jestem lekko zmieszany i nie wiem czy brnąć dalej w tą stronę czy zmienić kierunek, dlatego proszę o rady. Pozdrawiam
Realizuje projekt automatycznego ramienia robota. Konstrukcja już jest, sterowanie padem od konsoli też już jest. Zostało mi niewiele czasu, a chciałbym zrobić jeszcze zapamiętywanie ruchów, aby można by było je potem odtworzyć.
Mniej więcej mój zamysł wygląda tak
Zapis:
- uruchamiam "nagrywanie"
- wykonując ruchy za pomocą pada, zapisują się one na karcie microsd (w każdym cyklu sprawdza czy pozycja któregokolwiek serwa się zmieniła, jeśli serwa pozostają w tej samej pozycji, zaczyna liczyć czas. Jeśli ten czas wynosi więcej niż... powiedzmy 100ms to bierze go pod uwagę i zapisuje pod koniec kroku)
- zakańczam nagrywanie
Jeden krok - jedna linia w pliku na karcie microsd. Format by wyglądał w ten sposób:
Kod:
@x1.x2.x3.x4.x5.x6.czas
gdzie x1 do x6 to pozycje serwomechanizmów (0-180), a czas [ms] to wiadomo (znak @ ma pomagać zidentyfikować krok przy odczytywaniu)
Odczyt:
- uruchamiam "odtwarzanie"
- wczytuje plik z krokami
- tutaj zabawa na stringach, żeby przypisać do odpowiednich zmiennych wartości x1-x6 i czas
- po odczytaniu danych ustawia pozycje serw i jeśli czas>0 to opóźnienie z pomocą funkcji millis
- czytanie kolejnych kroków do końca
I tutaj pojawia się pytanie. Czy przychodzi komuś z Was na myśl szybszy i prostszy sposób na wykonanie tego? Lub czy ta koncepcja jest poprawna? To co wyżej napisałem jest intuicyjne. Inny pomysł nie przyszedł mi do głowy, bo nie znam zbyt wielu funkcji w tym języku programowania. Jestem lekko zmieszany i nie wiem czy brnąć dalej w tą stronę czy zmienić kierunek, dlatego proszę o rady. Pozdrawiam