PCA9685(6 сервоприводов) + Arduino Uno и 6 потенциометров

blooree

✩✩✩✩✩✩✩
19 Июн 2024
1
0
Приветствую, в общем проблема такая, необходимо подключить 3 сервопривода SG90 и 3 MG996R к модулю PCA9685, чтобы каждый из них отдельно управлялся потенциометром(потенциометры подключены к аналоговым портам ардуино уно), но когда подключаю более 4-х потенциометров ничего не работает.
C++:
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

#define MIN_PULSE_WIDTH       650
#define MAX_PULSE_WIDTH       2350
#define FREQUENCY             50

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

int controlA = A0;
int controlB = A1;
int controlC = A2;
int controlD = A3;
int controlE = A4; // Новый потенциометр E
int controlF = A5; // Новый потенциометр F

int motorA = 0;
int motorB = 4;
int motorC = 8;
int motorD = 12;
int motorE = 6;  // Новый сервопривод E
int motorF = 10; // Новый сервопривод F

void setup()
{
  pwm.begin();
  pwm.setPWMFreq(FREQUENCY);
}


void moveMotor(int controlIn, int motorOut)
{
  int pulse_wide, pulse_width, potVal;
  potVal = analogRead(controlIn);
  pulse_wide = map(potVal, 0, 1023, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
  pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
  pwm.setPWM(motorOut, 0, pulse_width);
}

void loop() {

  moveMotor(controlA, motorA);
  moveMotor(controlB, motorB);
  moveMotor(controlC, motorC);
  moveMotor(controlD, motorD);
  moveMotor(controlE, motorE); // Добавляем управление новым сервоприводом E
  moveMotor(controlF, motorF); // Добавляем управление новым сервоприводом F
}
 
Изменено:

Bruzzer

★★★✩✩✩✩
23 Май 2020
472
134
@blooree,
Вы прикрепили код для 4-х устройств, т.е. который работает?
А где который не работает?

@blooree,
Как подключен PCA9685 в рабочем и не рабочем случае?
Выводы SDA и SCL для UNO это A4 и A5
 
Изменено: