Управление 2 ESC с потенциометром с ардуино
У меня есть 2 ESC (электронных регулятора скорости), которые управляют этими бесщеточными двигателями: Hobbyking Donkey ST3511 Бесщеточный двигатель
Я бы хотел заставить их работать с помощью потенциометра под Arduino.
У меня есть программа, но она работает только с одним движком. Вот программа :
#include <Servo.h>//Использование сервобиблиотеки для управления ESC
Servo esc;
Servo esc2;
//Создание класса сервопривода с именем в виде esc
void setup()
{
esc.attach(9); //Укажите вывод сигнала esc, здесь как D8
esc.writeMicroseconds(1000); //инициализируем сигнал значением 1000
Serial.begin(9600);
esc2.attach(9); //Укажите вывод сигнала esc, здесь как D8
esc2.writeMicroseconds(1000); //инициализируем сигнал значением 1000
Serial.begin(9600);
}
void loop()
{
int val; //Создаем переменную val
val= analogRead(A0); //Читаем входные данные с аналогового контакта a0 и сохраняем в val
val= map(val, 0, 1023,1000,2000); //сопоставление значений минимума и максимума (измените при необходимости)
esc.writeMicroseconds(val); //используем val как сигнал для выхода
esc2.writeMicroseconds(val);
}
Помощи в Интернете не нашел, заранее спасибо.
@Pierre Portron, 👍0
Обсуждение1 ответ
▲ 1
Если вы хотите, чтобы один потенциометр управлял скоростью ОБОИХ регуляторов скорости, вы можете использовать этот код:
//Использование сервобиблиотеки для управления ESC
#include <Servo.h>
//Запуск сервоприводов
Servo esc1;
Servo esc2;
void setup() {
esc1.attach(9); // Используйте вывод ШИМ для сервопривода, в данном случае 9
esc1.writeMicroseconds(1000); //инициализируем сигнал значением 1000
esc2.attach(10); // Выбираем другой ШИМ для другого, в данном случае 10
esc2.writeMicroseconds(1000); //инициализируем сигнал значением 1000
Serial.begin(9600);
}
void loop() {
int val; //Создаем переменную val
val= analogRead(A0); //Читаем входные данные с аналогового контакта a0 и сохраняем в val
val= map(val, 0, 1023,1000,2000); //сопоставление значения минимума и максимума (значение AnalogRead варьируется от 0 до 1023, а значение AnalogWrite — от 0 до 255, проверьте характеристики вашего сервопривода)
esc1.writeMicroseconds(val); // записываем в первый ESC
esc2.writeMicroseconds(val); // записываем во второй ESC
delay(100); // Обычно мы устанавливаем небольшую задержку, чтобы избежать чрезмерных показаний или перегрева, но это необязательно...
}
Если вам нужно использовать два потенциометра, по одному для каждого ESC, тогда вам придется запустить другую переменную для чтения значения второго потенциометра и использовать ее для записи на второй ESC, вот и все! :)
,
@MonneratRJ
Смотрите также:
- Библиотека DHT.h не импортируется
- Как эмулировать аналоговый потенциометр с помощью ШИМ
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
- Сброс Arduino UNO с помощью SIM800L
- ЖК-дисплей странные символы
- Как узнать, нужно ли мне использовать резистор в цепи?
- Невозможно получить и распечатать SMS на последовательном мониторе с помощью Arduino Uno и SIM900A.
- Как контролировать скорость двухпроводного вентилятора с помощью Arduino и только потенциометра?
В вашем коде вы прикрепляете оба объекта esc к одному и тому же выводу (контакт 9). Это не может быть тем, что вы сделали. Используйте две разные булавки., @chrisl
О, и вы запускаете последовательный интерфейс также дважды. Проблема с копипастом?, @chrisl
Я бы сказал да, это проблема копирования-вставки, так как в ОП просто продублировали код, не понимая, что нужно изменить., @Duncan C
Вам необходимо назначить два разных аппаратных контакта для двух разных контроллеров скорости. Хотите ли вы, чтобы один потенциометр (потенциометр) управлял обоими двигателями, или отдельный потенциометр для каждого двигателя?, @Duncan C