Здравствуйте! приобрел Внешний ЦАП 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) Если не сложно подскажите простейший код как управлять напряжением цап потенциометром
по сути пока дописал тут уже все сделал. Код (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); }
В коде что выше я сделал ошибку, да и много лишнего там, поэтому приведу пример в читаемом виде. Также хочу сказать важное замечания, что входы А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); }