несколько индивидуальных сервоуправлений Arduino
Я хочу объявить в своем коде 11 серводвигателей. Есть ли лучший способ сделать это, чем просто объявить всех друг под другом. Причина в том, что у меня есть код, который будет устанавливать вращение по одному за раз. Лучше всего будет список, чтобы я мог перебирать сервер, который хочу переместить.
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
//и т. д
void moveServo(int n,int deg){
servo[n].write(deg); //что-то вроде этого
}
@vegiv, 👍-1
Обсуждение2 ответа
Рассмотрите возможность использования определенного процессора/платы Arduino. В этой теме есть ссылки на использование платы Arduino 1280 с Библиотека сервоприводов Arduino для управления до 48 сервоприводов с использованием комбинации аппаратного и программного обеспечения.
В C++, когда вы "создаете экземпляр" класса, вы эффективно используете пространство памяти, поскольку на самом деле вы не создаете повторяющийся код. Все, что вы создаете, — это копии переменных, необходимых для поддержки каждого экземпляра. В памяти должна быть только одна копия кода. Для повторения каждого экземпляра можно использовать оператор switch/case.. р>
Во-первых: ваш код не будет работать, поскольку servo
не определен и, следовательно, не является массивом для повторения. Вам нужно будет сначала определить массив, а затем заполнить его элементами Servo.
Servo servo[11];
void setup(){
for(int i=0;i<11;i++){
servo[i] = new Servo();
}
}
Различные объекты Servo
создаются динамически. В большинстве случаев использовать динамическое размещение на микроконтроллере с небольшим объемом оперативной памяти плохо, но это нормально, если вы используете его только один раз при запуске.
- Как повторить кусок кода
- Как заставить сервопривод вращаться на угол больше 180°
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
- Бесполезная проводка коробки и код
- Почему сервопривод не перемещается по углам должным образом
- Микро сервопривод не работает с Arduino UNO
- поворот позиционного серводвигателя более чем на 180 градусов
Как правило, для управления серводвигателем вам необходимо разработать довольно хорошо синхронизированную последовательность импульсов. Обычно вы используете оборудование PWM внутри процессора. Последствия использования программного обеспечения? Импульсы могут немного дрожать, и это приводит к дрожанию сервоприводов. Если вы хотите использовать правильное оборудование (процессор), есть способы обойти это. Вы желаете такого ответа?, @st2000
Это для руки робота, поэтому я хочу отправить сообщение от Raspberry Pi, что я хочу переместить сервопривод [1] на 20 градусов. так что я могу двигаться косяк за раз., @vegiv
В зависимости от конкретного процессора в Arduino, который вы используете, аппаратных генераторов ШИМ может не хватить для обеспечения последовательности импульсов для управления 11 сервоприводами. Вы можете прибегнуть к использованию программного обеспечения для создания последовательностей импульсов. Но это может привести к некоторому дрожанию серводвигателей. Скорее всего, во время последовательной связи с Raspberry Pi., @st2000
Библиотека Servo.h может управлять 12 сервоприводами в '328P и 48 в 2560., @CrossRoads