Warszawa
ZAP II – Zasady programowania strukturalnego
Założenia programu 1 Planowane postępy 1 Instrukcja obsługi etapu pierwszego 1
Głównym zadaniem oprogramowania jest ustawianie gniazda w zadanym kierunku poprzez odpowiednie sterowanie silnikami krokowymi.
Dodatkowo, ma możliwość sekwencyjnego wykonywania listy poleceń wczytanej z pliku oraz zapisywania historii ruchów do pliku.
W zależności od możliwości czasowych zostaną dodane pomniejsze funkcjonalności.
W pierwszym etapie program powinien:
- umieć precyzyjnie poruszać silnikami krokowymi
- wczytywać listę poleceń z pliku tekstowego
commands.txt - zapisywać wykonane ruchy do pliku tekstowego
history.txt
Hash commitu pierwszego etapu: c1a1512.
W drugim etapie program powinien:
- Wspierać regulację prędkości na zasadzie "rampy"
- Mieć możliwość poruszania dwoma silnikami na raz
- Wspierać niektóre G kody zamiennie z komendami
up,down, itd.
Program może działać tylko na urządzeniu wyposażonym w piny GPIO, które są niezbędne do komunikacji ze sterownikami silników.
Wykonać komendę:
$ git clone https://github.com/V3lectronics/stepper-motor-control.gitAlternatywnie można pobrać lub skopiować kod z repozytorium.
Nadać uprawnienia i uruchomić program
$ chmod +x stepper-motor-control
$ ./stepper-motor-controlW razie potrzeby, program można skompilować przy użyciu komendy:
$ g++ main.cpp linked-list.cpp -o stepper-motor-control -l
wiringPiWygodnym sposobem na uruchamianie programu jest korzystanie ze skryptu automate-testing.sh. Pobiera on najnowszą wersję repozytorium, podejmuję próbę kompilacji a następnie uruchamia program. W przypadku niepowodzenia kompilacji, uruchamia poprzednią skompilowaną wersję programu.
[!danger] Ostrożnie Przerwanie działania programu (e.g. przez CTRL+C) może spowodować pozostawienie niektórych pinów GPIO w stanie wysokim, co powoduje ciągłe doprowadzanie zasilania do cewek, co z kolei może przegrzać silnik.
Zachowanie programu może być konfigurowane w pliku motor.conf o następującym formacie:
command_file_dir
<ścieżka_do_pliku_z_komendami>
history_file_directory
<ścieżka_do_pliku_historii>
name <nazwa_pierwszego_silnika>
degrees_per_full_step <ilość_stopni_na_1_krok>
name <nazwa_drugiego_silnika>
degrees_per_full_step <ilość_stopni_na_1_krok>Po uruchomieniu program zacznie sekwencyjnie wykonywać polecenia.
Możliwe jest wykonanie następujących poleceń:
up <stopnie>down <stopnie>left <stopnie>right <stopnie>sleep <czas w ms>
Dodatkowo, istnieje polecenie end 0 - sygnalizuje ono zakończenie pliku z komendami.
Program wczytuje listę poleceń z pliku commands.txt określonego na początku pliku motor.conf. Format pliku z poleceniami:
<polecenie> <argument>
W przypadku poleceń ruchu, argumentem jest ilość kroków, które mają zostać wykonane, zaś w przypadku polecenia sleep, argumentem jest ilość milisekund, do odczekania przed wykonaniem następnej komendy.
Przykład pliku commands.txt:
sleep 1000
up 5
sleep 750
right 5
sleep 500
down 5
sleep 250
left 5
end 0