Делаю проект на Pololu Mini Maestro 18-канальный USB(http://www.robototehnika.ru/e-store/catalog/249/883/). Проект включает в себя управление двумя сервоприводами. Первый сервопривод управляется потенциометром, второй тремя кнопками, каждая кнопка - заданный угол. В чем собственно проблема: при управление кнопками надо убрать цикличность, а так же не получается совместить программу управления потенциометром и программу управления кнопками в одно целое.
Какой нужен результат, управление кнопками производится в такой последовательности, не 1-2-3 по кругу, а из положения 1 переход в положение 2, из положения 2 переход в положение 1 или 3, в зависимости от нажатой кнопки, из положения 3 переход в положение 2, не могу сам написать команду выбора варианта после перехода в положение 2. Потенциометр управляет первой сервой, кнопки управляют второй сервой, подскажите, как две эти программы записать в одну, чтобы они функционировали независимо друг от друга.
Прикрепляю то, что получилось сделать. Программа для управления потенциометром:
Скрытый текст
begin 5 get_position 4 times 4000 plus 0 servo repeat
Программа для управления кнопками:
Скрытый текст
begin button_a if sequence_a endif button_b if sequence_b endif button_c if sequence_c endif button_d if sequence_d endif repeat sub button_a 15 get_position 500 less_than return sub wait_for_button_a_press wait_for_button_a_open_10ms wait_for_button_a_closed_10ms return sub wait_for_button_a_open_10ms get_ms begin button_a if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_a_closed_10ms get_ms begin button_a if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub button_b 16 get_position 500 less_than return sub wait_for_button_b_press wait_for_button_b_open_10ms wait_for_button_b_closed_10ms return sub wait_for_button_b_open_10ms get_ms begin button_b if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_b_closed_10ms get_ms begin button_b if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub button_c 17 get_position 500 less_than return sub wait_for_button_c_press wait_for_button_c_open_10ms wait_for_button_c_closed_10ms return sub wait_for_button_c_open_10ms get_ms begin button_c if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_c_closed_10ms get_ms begin button_C if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub button_d 16 get_position 500 less_than return sub wait_for_button_d_press wait_for_button_d_open_10ms wait_for_button_d_closed_10ms return sub wait_for_button_d_open_10ms get_ms begin button_d if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_d_closed_10ms get_ms begin button_d if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub sequence_a wait_for_button_a_press 4400 1 servo return sub sequence_b wait_for_button_b_press 6000 1 servo return sub sequence_c wait_for_button_c_press 7200 1 servo return sub sequence_d wait_for_button_d_press 6000 1 servo return
Программа для управления кнопками(2 вариант):
Скрытый текст
goto main_loop sub button_a 15 get_position 500 less_than return sub wait_for_button_a_press wait_for_button_a_open_10ms wait_for_button_a_closed_10ms return sub wait_for_button_a_open_10ms get_ms begin button_a if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_a_closed_10ms get_ms begin button_a if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub button_b 16 get_position 500 less_than return sub wait_for_button_b_press wait_for_button_b_open_10ms wait_for_button_b_closed_10ms return sub wait_for_button_b_open_10ms get_ms begin button_b if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_b_closed_10ms get_ms begin button_b if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub button_c 17 get_position 500 less_than return sub wait_for_button_c_press wait_for_button_c_open_10ms wait_for_button_c_closed_10ms return sub wait_for_button_c_open_10ms get_ms begin button_c if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_c_closed_10ms get_ms begin button_C if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat sub button_d 16 get_position 500 less_than return sub wait_for_button_d_press wait_for_button_d_open_10ms wait_for_button_d_closed_10ms return sub wait_for_button_d_open_10ms get_ms begin button_d if drop get_ms else get_ms over minus 10 greater_than if drop return endif endif repeat sub wait_for_button_d_closed_10ms get_ms begin button_d if get_ms over minus 10 greater_than if drop return endif else drop get_ms endif repeat main_loop: begin 4400 frame_a 6000 frame_b 7200 frame_C 6000 frame_d repeat sub frame_a wait_for_button_a_press 1 servo return sub frame_b wait_for_button_b_press 1 servo return sub frame_c wait_for_button_c_press 1 servo return sub frame_d wait_for_button_d_press 1 servo return
Впервые столкнулся с программированием. Очень нуждаюсь в вашей помощи. Спасибо!