ドライブナット。私は次のことがうまくいかない理由は見当たりません。値自体ではなく、常に値のアドレスを返します。ポインタが機能していない戻り値はアドレスではありません
私はポインタを初期化し、ポインタを参照して無駄にする方法を数多く試しました。
初期化とループ
//INIT the Motors
//Motor MOTORNAME(PWM_SHIELD_POSITION, POINTER TO PWM SHIELD)
Motor LFUpper;
Motor* ptr1 = &LFUpper;
Motor LFLower;
Motor* ptr2 = &LFUpper;
Motor RFUpper;
Motor* ptr3 = &LFUpper;
Motor RFLower;
Motor* ptr4 = &RFLower;
Motor BRUpper;
Motor* ptr5 = &BRUpper
Motor BRLower;
Motor* ptr6 = &BRLower
Motor BLUpper;
Motor* ptr7 = &BLUpper
Motor BLLower;
Motor* ptr8 = &BLLower
//Init The Menu System
Menu MenuSys(ptr1, ptr2, ptr3, ptr4, ptr5, ptr6, ptr7, ptr8);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial2.begin(9600);
Serial.print("HELLO");
ptr1->INIT(FRONT_UPPER_LEFT_MOTOR);
ptr1->INIT(FRONT_LOWER_LEFT_MOTOR);
ptr1->INIT(FRONT_UPPER_RIGHT_MOTOR);
ptr1->INIT(FRONT_LOWER_RIGHT_MOTOR);
ptr1->INIT(BACK_UPPER_RIGHT_MOTOR);
ptr1->INIT(BACK_LOWER_RIGHT_MOTOR);
ptr1->INIT(BACK_UPPER_LEFT_MOTOR);
ptr1->INIT(BACK_LOWER_LEFT_MOTOR);
}
void loop() {
// put your main code here, to run repeatedly:
// Poll The Menu For Changes
MenuSys.MenuPoll();
}
メニューハンドラ
Menu::Menu(Motor *LFUpper1, Motor *LFLower1, Motor *RFUpper1, Motor *RFLower1, Motor *RBUpper1, Motor *RBLower1, Motor *LBUpper1, Motor *LBLower1)
{
LFUpper = LFUpper1;
LFLower = LFLower1;
RFUpper = RFUpper1;
RFLower = RFLower1;
LBUpper = LBUpper1;
LBLower = LBLower1;
RBUpper = RBUpper1;
RBLower = RBLower1;
}
void Menu::MenuPoll()
{
if (Serial2.available())
{
String readVal;
int rw = 0;
readVal = Serial2.readString();
Serial.println(readVal);
if (readVal.startsWith("W"))
{
rw = 1;
}
else
{
rw = 0;
}
int MenuCommand = readVal.substring(1, 4).toInt();
int Value = readVal.substring(4, readVal.length()).toInt();
MenuHandler(rw, MenuCommand, Value);
}
}
void Menu::MenuHandler(int rw, int MenuCommand, int Value)
{
Serial.println(rw);
Serial.println(MenuCommand);
Serial.println(Value);
switch (MenuCommand) {
case 111:
if (rw == 1)
{
Serial.print(LFUpper->pwmMIN);
LFUpper->pwmMIN = Value;
}
ラインSerial.print(LFUpper->pwmMIN);
は、あなたが間違ったオブジェクトのアドレスを取っているように見えます正しい値
何の価値がありますか、どんな価値がありますか? – chbchb55