Как управлять 6 серводвигателями с помощью платы Arduino Mega?
Я пытаюсь сделать автономный гексапод с помощью платы Arduino Mega. Я следовал механизму движения гексапода трипода. Сначала я мог одновременно управлять ногами (0, 2, 4) и (1, 3, 5) по отдельности, но всякий раз, когда я пытался объединить их, т. е. управлять 6 ногами одновременно, я не мог видеть никакого движения в гексаподе. Даже в IDE я не получаю никаких ошибок.
Я подключил ножки (0–5) к сигнальным контактам (2–7) соответственно. Я подключил общее напряжение +5 В и общее напряжение заземления к отдельным ножкам с помощью макетной платы. Может ли кто-нибудь дать мне правильное решение для преодоления этой проблемы, и еще хотелось бы узнать, как управлять несколькими сервоприводами и исходный код для этого?
Вот мой исходный код Arduino для управления 6 серводвигателями.
#include <Servo.h>
Servo myservo[6];
int f=0;// создаем объект сервопривода для управления сервоприводом
//[0] -большеберцовая кость, [1] -бедренная кость, [2] -тазочковидные моторы
void setup() {
myservo[0].attach(2);
myservo[1].attach(3);
myservo[2].attach(4);
myservo[3].attach(5);
myservo[4].attach(6);
myservo[5].attach(7);
}
void loop() {
//альтернативный вариант - заставить гексапода стоять на своем месте
//f — это просто переменная-флаг, которая останавливает его
if(f==0) {
myservo[0].write(130);
myservo[2].write(130);
myservo[4].write(90);
myservo[1].write(130);
myservo[3].write(90);
myservo[5].write(0);
f=1;
}
}
Обратите внимание, что значения, добавленные выше, рассчитываются отдельно для отдельных ножек, устанавливаемых на землю.
@Likhith R, 👍1
Обсуждение2 ответа
В том необычном случае, если вы на самом деле питаете свои (маленькие?) сервоприводы напрямую через Arduino: вам понадобится внешний источник питания для ваших сервоприводов.
Arduino Mega может обрабатывать максимум 40 мА на контактах ввода/вывода и 200 мА на контактах 5 В/GND. Шесть сервоприводов будут потреблять гораздо больше тока, чем максимум в 200 мА. Вы можете попробовать подключить питание сервопривода к отдельному источнику питания, а контакты данных — к Arduino. Надеюсь, это поможет!
- Кнопка двойного состояния Nextion
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Запуск двух шаговых двигателей с двумя поворотными энкодерами
- Мой код Arduino компилируется, когда я не вижу в нем ничего плохого
- Программирование пользовательских Arduino Mega с Arduino Uno
- Перепрограммировать Atmega 16u2 на Arduino Mega с помощью Arduino IDE?
- Arduino 1.6.4 не показывает никаких /tty/ опций в последовательных портах
- Использование библиотеки Arduino fix_fft или arduinoFFT для фильтрации определенного звука?
Если вы настроили свой код на управление 6 сервоприводами, будет ли он работать, если вы подключите только 3 сервопривода? Если да, то проблема может быть в том, что ваш блок питания недостаточно мощный для питания 6 сервоприводов., @Edgar Bonet
@EdgarBonet спасибо, все работает нормально при подключении к внешнему источнику питания, @Likhith R
Я хочу управлять 18 сервоприводами и на основе вашего кода я бы добавил еще 14 сервообъектов. Есть ли окончательный код, который вы уже закончили с 6 сервоприводами?, @Ecko