SMF - Just Installed!
Автор Владимир Бендик, Пятница, марта 03, 2023, 06:14:23
void action_cmd(void) //функция, вызываемая по прерыванию с пина rx{char *arg; //указатель на элементы типа char, поскольку именно их присылает bluetooth в rx линиюint action_mode, n_step; //объявление переменных, отвечающих за номер вызываемой команды и количество ее вызововSerial.println("Обработка:"); //ответ в линию tx о том, что запрос принятarg = SCmd.next(); //выставляем указатель на первый элемент в присланном массивеaction_mode = atoi(arg); //первый элемент переводим в тип int и записываем в соответствующую ее переменнуюarg = SCmd.next(); // выставляем указатель на следующий элемент в присланном массивеn_step = atoi(arg); //второй элемент переводим в тип int и записываем в соответствующую ее переменнуюswitch (action_mode) /*обычный свитч, где, исходя из посланной команды, выбирается выполняемый пункт, уточню, что здесь кейсы расписаны полноценными названиями для удобства чтения, а выбор происходит за счет переменной int, сделано это простым define'ом, пропишу его ниже этого кода, в реальном скетче, он, конечно же, выше.*/{case W_FORWARD: Serial.println("Шаг вперёд"); if (!is_stand()) stand(); step_forward(n_step); break;case W_BACKWARD: Serial.println("Шаг назад"); if (!is_stand()) stand(); step_back(n_step); break;case W_LEFT: Serial.println("Поворот влево"); if (!is_stand()) stand(); turn_left(n_step); break;case W_RIGHT: Serial.println("Поворот вправо"); if (!is_stand()) stand(); turn_right(n_step); break;case W_STAND_SIT: Serial.println("Встаем/Садимся"); if (n_step) stand(); else sit(); break;case W_SHAKE: Serial.println("Машем рукой"); hand_shake(n_step); break;case W_WAVE: Serial.println("Машем по-другому"); hand_wave(n_step); break;case W_TEST: do_test(); break;case W_SYNHRONITHATION: setup(); break;default: Serial.println("Ошибка"); break;}#define W_STAND_SIT 0#define W_FORWARD 1#define W_BACKWARD 2#define W_LEFT 3#define W_RIGHT 4#define W_SHAKE 5#define W_WAVE 6#define W_SYNHRONITHATION 7#define W_TEST 8
set_site(2, x_default + x_offset, y_start, z_up);wait_all_reach();set_site(0, turn_x0 - x_offset, turn_y0, z_default);set_site(1, turn_x1 - x_offset, turn_y1, z_default);set_site(2, turn_x0 + x_offset, turn_y0, z_up);set_site(3, turn_x1 + x_offset, turn_y1, z_default);wait_all_reach();
Надо видео. Просто прикрепите файл(ы).
Спасибо!Собачку совсем запугали7