Управление 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);
}

Помощи в Интернете не нашел, заранее спасибо.

, 👍0

Обсуждение

В вашем коде вы прикрепляете оба объекта esc к одному и тому же выводу (контакт 9). Это не может быть тем, что вы сделали. Используйте две разные булавки., @chrisl

О, и вы запускаете последовательный интерфейс также дважды. Проблема с копипастом?, @chrisl

Я бы сказал да, это проблема копирования-вставки, так как в ОП просто продублировали код, не понимая, что нужно изменить., @Duncan C

Вам необходимо назначить два разных аппаратных контакта для двух разных контроллеров скорости. Хотите ли вы, чтобы один потенциометр (потенциометр) управлял обоими двигателями, или отдельный потенциометр для каждого двигателя?, @Duncan C


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, вот и все! :)

,