talon/User/mode_position2.c

46 lines
1.1 KiB
C
Raw Normal View History

2024-01-13 12:57:51 -05:00
#include "mode_position2.h"
#include "ctre.h"
#include "memecoder.h"
void mode_position2_init(app_state_t *app, mode_position2_state_t *state) {
state->time = 0;
state->zeroed = 0;
state->position = 0;
state->position2 = 0;
}
void mode_position2(app_state_t *app, mode_position2_state_t *state) {
ctre_feed_enable(app->switch_state > 0);
printf("Pos: %d, %d\r\n", state->position, state->position2);
if(app->switch_state > 0) {
if(!state->zeroed) {
if(app->switch_state == 1)
memecoder_set(state->position * 42 / 2048 / 5);
else
memecoder_set(state->position2 * 42 / 2048 / 5);
}
state->zeroed = 1;
} else {
state->zeroed = 0;
}
if(state->time % 20 == 0) {
int mc = memecoder_get();
int cmd_pos = mc * 5 * 2048 / 42;
if(app->switch_state == 1) {
state->position = (state->position * 9 + cmd_pos) / 10;
ctre_position_out(10, state->position);
}
if(app->switch_state == 2) {
state->position2 = (state->position2 * 9 + cmd_pos) / 10;
ctre_position_out(30, state->position2);
}
}
state->time++;
}