РЕШЕНО Работа с внешним цап screw terminal (troyka-модуль)

Тема в разделе "Arduino & Shields", создана пользователем perdman, 30 сен 2021.

  1. perdman

    perdman Нуб

    Здравствуйте! приобрел Внешний ЦАП Screw Terminal (Troyka-модуль), подключил через Troyka Slot Shield как в инструкции http://wiki.amperka.ru/products:troyka-dac-screw-terminal, скачал библиотеку https://github.com/adafruit/Adafruit_MCP4725 (ссылка из инструкции).
    Загружаю пример: trianglewave

    #include <Wire.h>
    #include <Adafruit_MCP4725.h>
    Adafruit_MCP4725 dac;
    void setup(void) {
    Serial.begin(9600);
    Serial.println("Hello!");
    dac.begin(0x62);

    Serial.println("Generating a triangle wave");
    }

    void loop(void) {
    uint32_t counter;
    // Run through the full 12-bit scale for a triangle wave
    for (counter = 0; counter < 4095; counter++)
    {
    dac.setVoltage(counter, false);
    }
    for (counter = 4095; counter > 0; counter--)
    {
    dac.setVoltage(counter, false);
    }
    }

    ВЫЛЕЗАЕТ ОШИБКА:
    Arduino: 1.8.15 (Mac OS X), Плата:"Arduino Leonardo"
    In file included from /Users/vladimirsedykh/Documents/Arduino/libraries/Adafruit_MCP4725-master/examples/trianglewave/trianglewave.ino:18:0:
    /Users/vladimirsedykh/Documents/Arduino/libraries/Adafruit_MCP4725-master/Adafruit_MCP4725.h:10:10: fatal error: Adafruit_BusIO_Register.h: No such file or directory
    #include <Adafruit_BusIO_Register.h>
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    exit status 1
    Ошибка компиляции для платы Arduino Leonardo.

    Удалил директорию с библиотекой, зашел в менеджер библиотек установил от туда Adafruit_MCP4725-master версию 2.0, при установке выяснилось что нужна еще одна библиотека Adafruit BusIO, устанавливаю все. Код "trianglewave" заработал вольтаж на выходе начал прыгать.

    Вопрос 1) Пожалуйста объясните зачем в примере "Serial.println("Generating a triangle wave");" стоит в разделе "void setup", а не в void loop ведь его не видно так????

    Вопрос 2) Если не сложно подскажите простейший код как управлять напряжением цап потенциометром
     
  2. perdman

    perdman Нуб

    по сути пока дописал тут уже все сделал.
    Код (Text):
    #include <Wire.h>
    #include <Adafruit_MCP4725.h>
    #define pot A0

    Adafruit_MCP4725 dac;

    void setup(void) {
      Serial.begin(9600);
      pinMode(pot, INPUT);
      dac.begin(0x62);
     
    }

    void loop(void) {
        uint32_t counter;
        // Run through the full 12-bit scale for a triangle wave

        int potval = analogRead(pot);
        counter = int(potval /1024.0 * 4095);
        dac.setVoltage(counter, false);
        Serial.println(counter);
     
    }
     
    Последнее редактирование модератором: 30 сен 2021
  3. perdman

    perdman Нуб

    В коде что выше я сделал ошибку, да и много лишнего там, поэтому приведу пример в читаемом виде.

    Также хочу сказать важное замечания, что входы А4 и А5 заняты шиной I2C, поэтому их нельзя занимать, чуть позже заметил что 2 и 3 пин тоже занят "TWI/I²C: пины SDA и SCL", у меня плата leonardo, на других наверное по-разному, Тему думаю закрывать не буду если у кого будут вопросы пишите, решим.

    Код (C++):
    #include <Wire.h>
    #include <Adafruit_MCP4725.h>
    Adafruit_MCP4725 dac;

    void setup(void) {
    Serial.begin(9600);
    dac.begin(0x62);
    }
    void loop(void) {
    uint32_t counter;
    int pot = analogRead(A0);
    counter = pot * 4;
    dac.setVoltage(counter, false);
    Serial.println(counter);
    }
     
    Последнее редактирование: 2 окт 2021