more types of current
This commit is contained in:
Submodule src/bobbycar-protocol updated: b6f0d6a185...28052f8625
15
src/can.h
15
src/can.h
@ -65,10 +65,10 @@ bool parseCanMessage(const can_message_t &message, Controller &controller)
|
|||||||
{
|
{
|
||||||
using namespace bobbycar::can;
|
using namespace bobbycar::can;
|
||||||
case MotorController<isBack, false>::Feedback::DcLink:
|
case MotorController<isBack, false>::Feedback::DcLink:
|
||||||
controller.feedback.left.current = *((int16_t*)message.data);
|
controller.feedback.left.dcLink = *((int16_t*)message.data);
|
||||||
return true;
|
return true;
|
||||||
case MotorController<isBack, true>::Feedback::DcLink:
|
case MotorController<isBack, true>::Feedback::DcLink:
|
||||||
controller.feedback.right.current = *((int16_t*)message.data);
|
controller.feedback.right.dcLink = *((int16_t*)message.data);
|
||||||
return true;
|
return true;
|
||||||
case MotorController<isBack, false>::Feedback::Speed:
|
case MotorController<isBack, false>::Feedback::Speed:
|
||||||
controller.feedback.left.speed = *((int16_t*)message.data);
|
controller.feedback.left.speed = *((int16_t*)message.data);
|
||||||
@ -89,11 +89,22 @@ bool parseCanMessage(const can_message_t &message, Controller &controller)
|
|||||||
controller.feedback.right.angle = *((int16_t*)message.data);
|
controller.feedback.right.angle = *((int16_t*)message.data);
|
||||||
return true;
|
return true;
|
||||||
case MotorController<isBack, false>::Feedback::DcPhaA:
|
case MotorController<isBack, false>::Feedback::DcPhaA:
|
||||||
|
controller.feedback.left.dcPhaA = *((int16_t*)message.data);
|
||||||
|
return true;
|
||||||
case MotorController<isBack, true>::Feedback::DcPhaA:
|
case MotorController<isBack, true>::Feedback::DcPhaA:
|
||||||
|
controller.feedback.right.dcPhaA = *((int16_t*)message.data);
|
||||||
|
return true;
|
||||||
case MotorController<isBack, false>::Feedback::DcPhaB:
|
case MotorController<isBack, false>::Feedback::DcPhaB:
|
||||||
|
controller.feedback.left.dcPhaB = *((int16_t*)message.data);
|
||||||
|
return true;
|
||||||
case MotorController<isBack, true>::Feedback::DcPhaB:
|
case MotorController<isBack, true>::Feedback::DcPhaB:
|
||||||
|
controller.feedback.right.dcPhaB = *((int16_t*)message.data);
|
||||||
|
return true;
|
||||||
case MotorController<isBack, false>::Feedback::DcPhaC:
|
case MotorController<isBack, false>::Feedback::DcPhaC:
|
||||||
|
controller.feedback.left.dcPhaC = *((int16_t*)message.data);
|
||||||
|
return true;
|
||||||
case MotorController<isBack, true>::Feedback::DcPhaC:
|
case MotorController<isBack, true>::Feedback::DcPhaC:
|
||||||
|
controller.feedback.right.dcPhaC = *((int16_t*)message.data);
|
||||||
return true;
|
return true;
|
||||||
case MotorController<isBack, false>::Feedback::Chops:
|
case MotorController<isBack, false>::Feedback::Chops:
|
||||||
controller.feedback.left.chops = *((uint16_t*)message.data);
|
controller.feedback.left.chops = *((uint16_t*)message.data);
|
||||||
|
@ -61,8 +61,14 @@ private:
|
|||||||
struct SpeedText : public virtual TextInterface { public: String text() const override { auto line = String{"speed: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().speed); return line; } };
|
struct SpeedText : public virtual TextInterface { public: String text() const override { auto line = String{"speed: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().speed); return line; } };
|
||||||
struct SpeedKmhText : public virtual TextInterface { public: String text() const override { auto line = String{"speed kmh: "}; if (controller::get().feedbackValid) line += toString(convertToKmh(MotorFeedbackGetter::get().speed)); return line; } };
|
struct SpeedKmhText : public virtual TextInterface { public: String text() const override { auto line = String{"speed kmh: "}; if (controller::get().feedbackValid) line += toString(convertToKmh(MotorFeedbackGetter::get().speed)); return line; } };
|
||||||
struct ErrorText : public virtual TextInterface { public: String text() const override { auto line = String{"error: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().error); return line; } };
|
struct ErrorText : public virtual TextInterface { public: String text() const override { auto line = String{"error: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().error); return line; } };
|
||||||
struct CurrentText : public virtual TextInterface { public: String text() const override { auto line = String{"current: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().current); return line; } };
|
struct DcLinkText : public virtual TextInterface { public: String text() const override { auto line = String{"dcLink: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcLink); return line; } };
|
||||||
struct CurrentFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"current: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().current)) + 'A'; return line; } };
|
struct DcLinkFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcLink: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcLink)) + 'A'; return line; } };
|
||||||
|
struct DcPhaAText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaA: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcPhaA); return line; } };
|
||||||
|
struct DcPhaAFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaA: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcPhaA)) + 'A'; return line; } };
|
||||||
|
struct DcPhaBText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaB: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcPhaB); return line; } };
|
||||||
|
struct DcPhaBFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaB: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcPhaB)) + 'A'; return line; } };
|
||||||
|
struct DcPhaCText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaC: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcPhaC); return line; } };
|
||||||
|
struct DcPhaCFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaC: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcPhaC)) + 'A'; return line; } };
|
||||||
struct ChopsText : public virtual TextInterface { public: String text() const override { auto line = String{"chops: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().chops); return line; } };
|
struct ChopsText : public virtual TextInterface { public: String text() const override { auto line = String{"chops: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().chops); return line; } };
|
||||||
struct HallText : public virtual TextInterface { public: String text() const override { auto line = String{"hall: "}; if (controller::get().feedbackValid) line += hallString(MotorFeedbackGetter::get()); return line; } };
|
struct HallText : public virtual TextInterface { public: String text() const override { auto line = String{"hall: "}; if (controller::get().feedbackValid) line += hallString(MotorFeedbackGetter::get()); return line; } };
|
||||||
};
|
};
|
||||||
|
@ -30,8 +30,14 @@ public:
|
|||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedKmhText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedKmhText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::ErrorText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::ErrorText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::CurrentText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcLinkText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::CurrentFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcLinkFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaAText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaAFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaBText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaBFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaCText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaCFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::ChopsText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::ChopsText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, typename Ttexts::HallText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, typename Ttexts::HallText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
|
||||||
|
@ -76,10 +76,10 @@ void MetersDisplay::redraw()
|
|||||||
|
|
||||||
meters[0].redraw(fixBatVoltage(controllers.front.feedback.batVoltage), 35, 50);
|
meters[0].redraw(fixBatVoltage(controllers.front.feedback.batVoltage), 35, 50);
|
||||||
meters[1].redraw(fixBatVoltage(controllers.back.feedback.batVoltage), 35, 50);
|
meters[1].redraw(fixBatVoltage(controllers.back.feedback.batVoltage), 35, 50);
|
||||||
meters[2].redraw(fixCurrent(controllers.front.feedback.left.current), -10, 10);
|
meters[2].redraw(fixCurrent(controllers.front.feedback.left.dcLink), -10, 10);
|
||||||
meters[3].redraw(fixCurrent(controllers.front.feedback.right.current), -10, 10);
|
meters[3].redraw(fixCurrent(controllers.front.feedback.right.dcLink), -10, 10);
|
||||||
meters[4].redraw(fixCurrent(controllers.back.feedback.left.current), -10, 10);
|
meters[4].redraw(fixCurrent(controllers.back.feedback.left.dcLink), -10, 10);
|
||||||
meters[5].redraw(fixCurrent(controllers.back.feedback.right.current), -10, 10);
|
meters[5].redraw(fixCurrent(controllers.back.feedback.right.dcLink), -10, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MetersDisplay::rotate(int offset)
|
void MetersDisplay::rotate(int offset)
|
||||||
|
@ -253,7 +253,7 @@ void StatusDisplay::BoardStatus::MotorStatus::redraw(const MotorFeedback &motor)
|
|||||||
m_labelError.redraw(String{motor.error});
|
m_labelError.redraw(String{motor.error});
|
||||||
tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||||
|
|
||||||
m_labelCurrent.redraw(String{fixCurrent(motor.current)} + 'A');
|
m_labelCurrent.redraw(String{fixCurrent(motor.dcLink)} + 'A');
|
||||||
m_labelSpeed.redraw(String{convertToKmh(motor.speed)});
|
m_labelSpeed.redraw(String{convertToKmh(motor.speed)});
|
||||||
|
|
||||||
tft.setTextFont(2);
|
tft.setTextFont(2);
|
||||||
|
@ -26,14 +26,14 @@ void pushStats()
|
|||||||
if (controllers.front.feedbackValid)
|
if (controllers.front.feedbackValid)
|
||||||
{
|
{
|
||||||
statistics::frontVoltage.push_back(fixBatVoltage(controllers.front.feedback.batVoltage));
|
statistics::frontVoltage.push_back(fixBatVoltage(controllers.front.feedback.batVoltage));
|
||||||
statistics::frontLeftCurrent.push_back(fixCurrent(controllers.front.feedback.left.current));
|
statistics::frontLeftCurrent.push_back(fixCurrent(controllers.front.feedback.left.dcLink));
|
||||||
statistics::frontRightCurrent.push_back(fixCurrent(controllers.front.feedback.right.current));
|
statistics::frontRightCurrent.push_back(fixCurrent(controllers.front.feedback.right.dcLink));
|
||||||
}
|
}
|
||||||
if (controllers.back.feedbackValid)
|
if (controllers.back.feedbackValid)
|
||||||
{
|
{
|
||||||
statistics::backVoltage.push_back(fixBatVoltage(controllers.back.feedback.batVoltage));
|
statistics::backVoltage.push_back(fixBatVoltage(controllers.back.feedback.batVoltage));
|
||||||
statistics::backLeftCurrent.push_back(fixCurrent(controllers.back.feedback.left.current));
|
statistics::backLeftCurrent.push_back(fixCurrent(controllers.back.feedback.left.dcLink));
|
||||||
statistics::backRightCurrent.push_back(fixCurrent(controllers.back.feedback.right.current));
|
statistics::backRightCurrent.push_back(fixCurrent(controllers.back.feedback.right.dcLink));
|
||||||
}
|
}
|
||||||
#ifdef FEATURE_BMS
|
#ifdef FEATURE_BMS
|
||||||
statistics::bmsVoltage.push_back(bms::voltage);
|
statistics::bmsVoltage.push_back(bms::voltage);
|
||||||
|
@ -303,8 +303,8 @@ void updateAccumulators()
|
|||||||
controller.feedback.right.speed * (controller.invertRight ? -1 : 1);
|
controller.feedback.right.speed * (controller.invertRight ? -1 : 1);
|
||||||
|
|
||||||
sumCurrent +=
|
sumCurrent +=
|
||||||
controller.feedback.left.current +
|
controller.feedback.left.dcLink +
|
||||||
controller.feedback.right.current;
|
controller.feedback.right.dcLink;
|
||||||
|
|
||||||
count +=2;
|
count +=2;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user