Enables scheduling a sequence of pre-planned motions towards given coordinate points, the system will create linearly interpolating motion between the input points.
#define module_driver
#include "stepdance.hpp"
void setup() {
output_a.
begin(OUTPUT_A);
output_b.
begin(OUTPUT_B);
enable_drivers();
channel_a.
begin(&output_a, SIGNAL_E);
channel_b.
begin(&output_b, SIGNAL_E);
axidraw_kinematics.
begin();
axidraw_kinematics.
output_a.
map(&channel_a.input_target_position);
axidraw_kinematics.
output_b.
map(&channel_b.input_target_position);
rpc.enroll("go_to_xy", go_to_xy);
rpc.enroll("corner_test", corner_test);
rpc.enroll("draw_letter_h_at", draw_letter_h_at);
dance_start();
}
void loop() {
dance_loop();
}
void go_to_xy(float x, float y, float v) {
tbi.
add_move(GLOBAL, v, x, y, 0, 0, 0, 0);
}
void corner_test() {
tbi.
add_move(GLOBAL, 10, 0, 0, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, 50, 0, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, 50, 30, 0, 0, 0, 0);
}
void draw_letter_h_at(float x_start, float y_start) {
tbi.
add_move(GLOBAL, 10, x_start, y_start, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 10, y_start, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 10, y_start + 20, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 30, y_start + 20, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 30, y_start, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 40, y_start, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 40, y_start + 50, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 30, y_start + 50, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 30, y_start + 30, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 10, y_start + 30, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start + 10, y_start + 50, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start, y_start + 50, 0, 0, 0, 0);
tbi.
add_move(GLOBAL, 10, x_start, y_start, 0, 0, 0, 0);
}