Arduino Due и PCA9685

Тема в разделе "Arduino & Shields", создана пользователем Hamulus, 9 сен 2016.

Метки:
  1. Hamulus

    Hamulus Нуб

    Подскажите, как заставить работать Arduino Due и контролером PCA9685.

    Использую вот эту библиотеку

    https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

    Сам контроллер точно рабочий, с Мегой всё работает.
    А вот на Due проблема

    Покопался на иностранных форумах, наткнулся вот на эту тему
    https://forum.arduino.cc/index.php?topic=345971.0

    Но там проблема так и не решена.

    Также есть такой симптом: если использовать вот этот скетч
    http://playground.arduino.cc/Main/I2cScanner
    то на пинах SCL1/SDA1 не определяется устройство
    но если подключить к пинам SDA/SCL находится 2 устройства с адресами 0x40 and 0x70
     
  2. ZAZ-965

    ZAZ-965 Гуру

    @Hamulus, в Adafruit-PWM-Servo-Driver-Library в заголовочном файле есть строки
    Код (C++):
    #if defined(ARDUINO_SAM_DUE)
    #define WIRE Wire1
    #else
    #define WIRE Wire
    #endif
    т.е. библиотека ожидает, что устройство подключено к SCL1/SDA1
    Если в I2cScanner тоже добавить такое определение, то на Due контроллер PCA9685найдется на SCL1/SDA1
     
  3. Hamulus

    Hamulus Нуб

    спасибо, с использованием Wire1 сканер устройство находит
    однако проблему неработоспособности это не решает
     
  4. Hamulus

    Hamulus Нуб

    В итоге все работает если OE вообще ни к чему не подключен (хотя в даташите написано, что его надо подключать к плюсу, а в инструкции для других ардуин - что к минусу:) ) , а SDA и SCL подтянуты к плюсу питания резисторами 4,7К. Изменения библиотеки не потребовалось.
     
  5. Ser8191

    Ser8191 Нерд

    Здравствуйте, научите пожалуйста пользоваться вот этим шилдом.
    [​IMG]
    Подключил пять сервоприводов, 0-4

    Код (C++):
    #include <Wire.h>
    #include <Adafruit_PWMServoDriver.h>
    Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);

    void setup() {
    Serial.begin(9600);

    pwm1.begin();
    pwm1.setPWMFreq(1600); // This is the maximum PWM frequency
    }


    void loop() {
    Как мне, к примеру, повернуть сервопривод 0 на 60 градусов.
    }
     
  6. Ser8191

    Ser8191 Нерд

    Код (C++):
    #include <iarduino_MultiServo.h>     //  Подключаем библиотеку
    iarduino_MultiServo MSS;             //  Объявляем переменную MSS, для работы с библиотекой (объект класса iarduino_MultiServo).

    void setup() {
    // MSS.servoSet(10,180,130,470);     //  Ручное позиционирование сервопривода (Подключён к выводу 10. Максимальный угол поворота 180°. ШИМ для 0° = 130. ШИМ для 180° = 470)
    // MSS.servoSet(11,180,140,480);     //  Ручное позиционирование сервопривода (Подключён к выводу 11. Максимальный угол поворота 180°. ШИМ для 0° = 140. ШИМ для 180° = 480)
       MSS.servoSet(15, SERVO_SG90);     //  Авто   позиционирование сервопривода (Подключён к выводу 15. Название сервопривода)
                                         //  Функция servoSet() вызывается для каждого сервопривода.
                                         //  Если ко всем выводам подключены одинаковые сервоприводы, то допускается вызвать функцию servoSet() один раз, указав вместо номера вывода: SERVO_ALL
                                         //  - Пример_1: MSS.servoSet(SERVO_ALL, SERVO_SG90); // Ко всем выводам подключены сервоприводы SG90
                                         //  - Пример_2: MSS.servoSet(SERVO_ALL,180,140,480); // Ко всем выводам подключены одинаковые сервоприводы, параметры которых заданы вручную
       MSS.begin();                      //  Инициализация модуля (Адрес по умолчанию = 0x40. Частота по умолчанию = 50Гц)
    }

    void loop(){
       MSS.servoWrite(15,0);             //  Повернуть сервопривод, подключённый к 15 выводу, на 0°
       delay(3000);                      //  Ждём 3 сек.
       MSS.servoWrite(15,180);           //  Повернуть сервопривод, подключённый к 15 выводу, на 180°
       delay(3000);                      //  Ждём 3 сек.
    }
    Или вот так, ужасно шумит и дёргается
     
  7. Dicollars

    Dicollars Нуб

    А может кто подсказать как аккумулятором запитать это дело?
    Но вот решил я собрать сервобота например,какой аккумулятор лучше использовать? и сервоприводы потребляют достаточно много тока,может какой то DC-DC преобразователь нужен который может выдавать 2А стабильно или что то в этом роде (плохо разбираюсь в теме питания,помогите)