Closed Matheus-de-Sousa closed 1 month ago
Essa alteração pode ser feita adiconando ao arquivo RobotStatus.cpp adições ao código como o mostrado abaixo:
parameterName = new DataAbstract<bool>("parameterName", name, false); // Inicializa o parâmetro especificado e aloca memória para ele
dataManager->registerParamData(parameterName); // Registra o parâmetro especificado em uma lista para que ele possa ser identificado pela dashboard
E no arquivo RobotStatus.h adições ao código como o mostrado abaixo:
DataAbstract<bool> *parameterName; // Cria um novo parâmetro na classe
Com essas alterações feitas os novos parâmetros serão criados e identificados pela dashboard, faltando apenas adicionar a lógica ao código para que esses parâmetros sejam interpretados pelo robô. Isso será feito alterando o construtor da classe SpeedService.cpp em que será necessário desenvolver uma lógica para ao ler o parâmetro relacionado à inversão da leitura dos encoders, as portas utilizadas para ler os encoders são invertidas caso ele seja verdadeiro e caso contrário, serão mantidas como estão, como no código abaixo:
if(robot->getStatus()->parameterName->getData()) // Lê parâmetro da dash
{
enc_motEsq.attachFullQuad(ENC_MOT_ESQ_B, ENC_MOT_ESQ_A); // Inverte leitura do encoder esquerdo
enc_motDir.attachFullQuad(ENC_MOT_DIR_B, ENC_MOT_DIR_A); // Inverte leitura do encoder direito
}
else
{
enc_motEsq.attachFullQuad(ENC_MOT_ESQ_A, ENC_MOT_ESQ_B); // Mantém leitura do encoder esquerdo
enc_motDir.attachFullQuad(ENC_MOT_DIR_A, ENC_MOT_DIR_B); // Mantém leitura do encoder direito
}
Já a inversão da rotação dos motores será feita alterando o construtor da classe PIDService.cpp em que será necessário desenvolver uma lógica para ao ler o parâmetro relacionado à inversão da rotação dos motores as portas utilizadas para acionar os motores são invertidas, como no código abaixo:
if(status->parameterName->getData()) // Lê parâmetro da dash
{
motors.attachMotors(DRIVER_AIN2, DRIVER_AIN1, DRIVER_PWMA, DRIVER_BIN1, DRIVER_BIN2, DRIVER_PWMB); // Inverte rotação
}
else
{
motors.attachMotors(DRIVER_AIN1, DRIVER_AIN2, DRIVER_PWMA, DRIVER_BIN2, DRIVER_BIN1, DRIVER_PWMB); // Mantém a rotação
}
Portanto, devem ser adicionados 2 novos parâmetros editáveis pela dash no código do robô e a lógoca para a interpretação deles deve ser implementada nas classes descritas acima.
Incluir parâmetros "booleanos" no código para a inversão da rotação dos motores e da leitura dos encoders pela dashboard, esses parâmetros podem ser incluídos na classe de status do robô. Ao inicializar o robô carregará os parâmetros na dashboard apenas uma vez até a próxima inicialização.