Работа с копиями объектов. Допустима ли такая запись?
- Войдите на сайт для отправки комментариев
Вс, 16/06/2019 - 16:13
Есть функция управления двигателями. Правильно я объект копирую а потом использую? Сколько не читаю книг, ни как не запомню как пользоваться ссылками...
#include <AccelStepper.h>
....
AccelStepper AS_Right_Leg(AccelStepper::FULL2WIRE, RightLegDirPin, RightLegStepPin);
AccelStepper AS_Left_Leg(AccelStepper::FULL2WIRE, LeftLegDirPin, LeftLegStepPin);
...
void loop()
{
Rotate(AS_Right_Leg,'2',0);
]
bool Rotate(AccelStepper &myStepper, char rotating, int param)
{
AccelStepper *motor;
motor = &myStepper;
switch (rotating)
{
case '1':
break;
case '2':
motor->setMaxSpeed(6000);
motor->setAcceleration(5000);
break;
}
motor->run();
}
Никакого копирования объекта тут нет. Я вижу копирование указателя с неясной целью. С тем же успехом можно делать myStepper.run().
Ну мне важен сам принцип. На самом деле окончательный код будет немного другим.
void loop() { Rotate(AS_Right_Leg,'2',0); ] bool Rotate(char rotating, int param) { AccelStepper *motor; switch (rotating) { case '1': break; case '2': motor = &AS_Right_Leg; motor->setMaxSpeed(6000); motor->setAcceleration(5000); break; } motor->run(); }Вапще хрень какая то.
Что сделать то хотите ?
В общем история такая. Есть клавиатура с n-клавишами и m шаговых приводов. Нужно чтобы с кнопок этой клавиатуры запускать M[I] привод по или против часовой стрелке.
Клавиатура с логикой 4х4
Densl,да фигня вопрос. Другое дело что у Ваши "программистские мускулы" никуда не годятся.Да и базовые знания маловаты. Вот в этом у Вас затык.
Какое нибудь такое рукожопство подойдет ? (я фиг знает... не пробовал так)
AccelStepper *m[4]; bool Rotate(int num, char rotating, int param) { m[num]->setMaxSpeed(... m[num]->setAcceleration(... ... m[num]->run(); } voide setup() { m[0] = new AccelStepper(AccelStepper::FULL2WIRE, ... m[1] = new AccelStepper(AccelStepper::FULL2WIRE, ... m[2] = new AccelStepper(AccelStepper::FULL2WIRE, ... m[3] = new AccelStepper(AccelStepper::FULL2WIRE, ... }Какое нибудь такое рукожопство подойдет ? (я фиг знает... не пробовал так)
AccelStepper *m[4]; bool Rotate(int num, char rotating, int param) { m[num]->setMaxSpeed(... m[num]->setAcceleration(... ... m[num]->run(); } voide setup() { m[0] = new AccelStepper(AccelStepper::FULL2WIRE, ... m[1] = new AccelStepper(AccelStepper::FULL2WIRE, ... m[2] = new AccelStepper(AccelStepper::FULL2WIRE, ... m[3] = new AccelStepper(AccelStepper::FULL2WIRE, ... }Спасибо большое! Вы прям чувствуется что на ты с классами)