ЦАП MCP4725 — это 12-разрядный цифро-аналоговый преобразователь управляемый через I2C. Так как мини компьютеры Raspberry Pi, Banana Pi, Orange Pi, Nano Pi, Odroid и т.п. имеют встроенного ЦАП, MCP4725 может быть использован, чтобы получить точный аналоговый сигнал.
В Pi4J есть библиотека для работы с ЦАП MCP4725 по I2C/TWI из Java на Raspberry Pi, Banana Pi, Orange Pi, Nano Pi и Odroid. Все классы и интерфейсы находятся в пакете com.pi4j.gpio.extension.mcp.*;.
Пока не все возможности ЦАП MCP4725 реализованы, нет возможности записывать данные в EEPROM — эта функция позволяет ЦАП MCP4725 самостоятельно сохранять значения данных и восстанавливать их при включении питания.
- 1 Класс DacGpioProviderBase
- 1.1 DacGpioProviderBase(Pin[])
- 1.2 setPercentValue(Pin, Number)
- 1.3 setPercentValue(GpioPinAnalogOutput, Number)
- 1.4 setValue(Pin, Number)
- 1.5 shutdown()
- 1.6 setShutdownValue(Number, Pin … )
- 1.7 getShutdownValue(Pin)
- 1.8 setShutdownValue(Number, GpioPinAnalogOutput …)
- 1.9 getShutdownValue(GpioPinAnalogOutput)
- 2 Класс MCP4725GpioProvider
- 3 Класс MCP4725Pin
- 4 Схема подключения ЦАП MCP4725 к Orange Pi
- 5 Примеры программ с ЦАП MCP4725 на Pi4J
- 6 Материалы
- 7 Похожие записи
Класс DacGpioProviderBase
Этот базовый поставщик GPIO определяет требуемые интерфейсы и реализует базовую функциональность для микросхем расширения ЦАП (цифро-аналоговых) как родные выводы Pi4J GPIO.
DacGpioProviderBase(Pin[])
Конструктор по умолчанию.
public DacGpioProviderBase(Pin[] pins)
Параметры
pins — совокупность всех выводов GPIO, используемых с реализацией этого поставщика ЦАП.
Возвращает
новый экземпляр DacGpioProviderBase
setPercentValue(Pin, Number)
Устанавливает текущее значение в процентах от доступного диапазона вместо необработанного значения.
public void setPercentValue(Pin pin, Number percent)
Параметры
pin — вывод GPIO.
percent — процентное значение от 0 до 100.
setPercentValue(GpioPinAnalogOutput, Number)
Устанавливает текущее аналоговое значение в процентах от доступного диапазона вместо необработанного значения (масштабированное число в диапазоне значений АЦП).
public void setPercentValue(GpioPinAnalogOutput pin, Number percent)
Параметры
pin — вывод GPIO.
percent — процентное значение от 0 до 100.
setValue(Pin, Number)
Устанавливает аналоговое выходное значение (необработанное значение) на выходной контакт ЦАП.
public void setValue(Pin pin, Number value)
Параметры
pin — номер пина ЦАП.
value — необработанное значение для отправки на ЦАП.
shutdown()
Этот метод используется платформой для отключения экземпляра ЦАП. Этот метод также закроет шину I2C для подключенного ЦАП.
public void shutdown()
setShutdownValue(Number, Pin … )
Устанавливает значение отключения, которое ЦАП должен применять к данному выводу GPIO, когда экземпляр класса уничтожается.
public void setShutdownValue(Number value, Pin ... pin)
Параметры
value — значение отключения, применяемое к данному выводу (-ам).
pin — вывод аналогового выхода (один или несколько выводов).
getShutdownValue(Pin)
Возвращает значение отключения, которое ЦАП должен применять к указанному выводу GPIO при уничтожении класса.
public Number getShutdownValue(Pin pin)
Параметры
pin — аналоговый выход.
Возвращает
значение отключения, применяемое к данному выводу.
setShutdownValue(Number, GpioPinAnalogOutput …)
Устанавливает значение отключения, которое ЦАП должен применять к данному выводу GPIO, когда экземпляр класса уничтожается.
public void setShutdownValue(Number value, GpioPinAnalogOutput ... pin)
Параметры
value — значение отключения, применяемое к данному выводу (-ам).
pin — вывод аналогового выхода (один или несколько выводов).
getShutdownValue(GpioPinAnalogOutput)
Возвращает значение отключения, которое ЦАП должен применять к указанному выводу GPIO при уничтожении класса.
public Number getShutdownValue(GpioPinAnalogOutput pin)
Параметры
pin — аналоговый выход.
Возвращает
значение отключения, применяемое к данному выводу.
Класс MCP4725GpioProvider
Этот GPIO провайдер расширяет абстрактный класс DacGpioProviderBase и реализует интерфейс DacGpioProvider, для работы с пином MCP4725, как с родным пином Pi4J.
MCP4725GpioProvider(int, int)
Это конструктор по умолчанию.
public MCP4725GpioProvider(int busNumber, int address) throws UnsupportedBusNumberException, IOException
Параметры
busNumber — номер шины.
address — I2C адрес устройства.
Возвращает
новый экземпляр MCP4725GpioProvider
Бросает
UnsupportedBusNumberException — если данный номер шины не поддерживается базовой системой.
IOException — если сообщение с шиной I2C не работает.
MCP4725GpioProvider(I2CBus, int)
Это альтернативный конструктор, который можно использовать для создания экземпляра MCP4725.
public MCP4725GpioProvider(I2CBus bus, int address) throws IOException
Параметры
busNumber — I2C шина.
address — I2C адрес устройства.
Возвращает
новый экземпляр MCP4725GpioProvider
Бросает
IOException — если сообщение с шиной I2C не работает.
setValue(Pin, double)
Устанавливает аналоговое выходное значение на выходной контакт на ЦАП.
public void setValue(Pin pin, double value)
Параметры
pin — номер пина ЦАП.
value — необработанное значение для отправки на ЦАП. (Между: 0..4095).
getName()
Получает имя экземпляра поставщика ЦАП.
public String getName()
Возвращает
имя экземпляра поставщика ЦАП.
shutdown()
Этот метод используется платформой для отключения экземпляра ЦАП MCP4725. Этот метод также закроет шину I2C для подключенного MCP4725.
public void shutdown()
getMinSupportedValue()
Возвращает минимальное поддерживаемое аналоговое значение ЦАП.
public double getMinSupportedValue()
Возвращает
минимальное поддерживаемое аналоговое значение.
getMaxSupportedValue()
Возвращает максимальное поддерживаемое аналоговое значение для реализации ЦАП. (Например, максимальное значение 10-разрядного АЦП составляет 1023, а максимальное значение 12-разрядного АЦП — 4095.
public double getMaxSupportedValue()
Возвращает
максимальное поддерживаемое аналоговое значение.
Класс MCP4725Pin
Этот провайдер GPIO реализует 12-разрядный цифро-аналоговый преобразователь MCP4725 в качестве собственных выводов GPIO Pi4J. MCP4725 подключен через I2C к Raspberry Pi и имеет 1 аналоговый выход GPIO.
createAnalogOutputPin(int, String)
Создаёт и возвращает новый экземпляр класса PinImpl
, для работы с аналоговым выводом MCP4725.
private static Pin createAnalogOutputPin(int address, String name)
Параметры
address — номер вывода.
name — имя пина.
Возвращает
новый экземпляр класса PinImpl
.
Схема подключения ЦАП MCP4725 к Orange Pi
MCP4725 можно подключить на любой доступный I2C порт.
Примеры программ с ЦАП MCP4725 на Pi4J
Генерация прямоугольной волны/Меандр
Приведённая ниже программа генерирует прямоугольную волну (Меандр), а для проверки использовал цифровой осциллограф DSO138. Для отправки данных на чип использовалась функция setValue()
.
import com.pi4j.gpio.extension.base.DacGpioProvider; import com.pi4j.gpio.extension.mcp.MCP4725GpioProvider; import com.pi4j.gpio.extension.mcp.MCP4725Pin; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinAnalogOutput; import com.pi4j.io.i2c.I2CBus; import com.pi4j.util.Console; public class MCP4725SquareWave { public static void main(String args[]) throws Exception { System.out.println("<--Pi4J--> MCP4725 DAC Example ... started."); final Console console = new Console(); console.promptForExit(); /* * создаем gpio контроллер */ GpioController gpio = GpioFactory.getInstance(); /* * создаем пользовательский provider GPIO MCP4725 */ final DacGpioProvider provider = new MCP4725GpioProvider(I2CBus.BUS_0, MCP4725GpioProvider.MCP4725_ADDRESS_1); /* * создаём аналоговый выходной пин от MCP4725 */ final GpioPinAnalogOutput output = gpio.provisionAnalogOutputPin(provider, MCP4725Pin.OUTPUT); /* * устанавливаем начальное значение (значение запуска) для выходного вывода */ output.setValue(0); /* * устанавливаем значение выключения для выходного вывода */ provider.setShutdownValue(MCP4725GpioProvider.MAX_VALUE, output); new Thread() { @Override public void run() { /* * генерируем прямоугольную волну на выходе */ while (console.isRunning()) { output.setValue(provider.getMaxSupportedValue()); mySleep(1); output.setValue(provider.getMinSupportedValue()); mySleep(1); } } private void mySleep(long milis) { try { sleep(milis); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); console.waitForExit(); /* * останавливаем все действия / потоки GPIO, отключая контроллер GPIO (этот * метод принудительно завершает работу всех потоков мониторинга GPIO и * запланированных задач) */ gpio.shutdown(); System.out.println("Exiting MCP4725GpioExample"); } }
Проверяем код:
- создаём java файл и вставляем код:
nano MCP4725SquareWave.java
- компилируем файл:
javac -classpath .:classes:/opt/pi4j/lib/'*' MCP4725SquareWave.java
- запускаем программу:
sudo java -classpath .:classes:/opt/pi4j/lib/'*' MCP4725SquareWave
Результат
Генерация синусоиды
Данный пример кода генерирует синусоиду, на выход модуля подключил DSO138. Для отправки данных использовалась функция setPercentValue()
.
import com.pi4j.gpio.extension.base.DacGpioProvider; import com.pi4j.gpio.extension.mcp.MCP4725GpioProvider; import com.pi4j.gpio.extension.mcp.MCP4725Pin; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinAnalogOutput; import com.pi4j.io.i2c.I2CBus; import com.pi4j.util.Console; public class MCP4725SinusWave { public static void main(String args[]) throws Exception { System.out.println("<--Pi4J--> MCP4725 DAC Example ... started."); final Console console = new Console(); console.promptForExit(); /* * создаем gpio контроллер */ final GpioController gpio = GpioFactory.getInstance(); /* * создаем пользовательский provider GPIO MCP4725 */ final DacGpioProvider provider = new MCP4725GpioProvider(I2CBus.BUS_0, MCP4725GpioProvider.MCP4725_ADDRESS_1); /* * создаём аналоговый выходной пин от MCP4725 */ final GpioPinAnalogOutput pinAnalogOutput = gpio.provisionAnalogOutputPin(provider, MCP4725Pin.OUTPUT); /* * устанавливаем начальное значение (значение запуска) для выходного вывода */ pinAnalogOutput.setValue(0); /* * устанавливаем значение выключения для выходного вывода */ provider.setShutdownValue(MCP4725GpioProvider.MIN_VALUE, pinAnalogOutput); new Thread() { @Override public void run() { /* * генерируем синусоиду на выходе */ for (int i = 0; i < 360 && console.isRunning(); i++) { double y = Math.sin(Math.toRadians(i)); y = (y / 2 + 0.5) * 100; /* * задаём процентное значение вместо необработанного значения (мы * должны использовать вспомогательный метод внутри поставщика, а не * непосредственно на экземпляре вывода) */ provider.setPercentValue(pinAnalogOutput, y); /* * повторяем */ if (i == 359) { i = 0; } } } }.start(); console.waitForExit(); /* * останавливаем все действия / потоки GPIO, отключая контроллер GPIO (этот * метод принудительно завершает работу всех потоков мониторинга GPIO и * запланированных задач) */ gpio.shutdown(); System.out.println("Exiting MCP4725GpioExample"); } }
Проверяем код:
- создаём java файл и вставляем код:
nano MCP4725SinusWave.java
- компилируем файл:
javac -classpath .:classes:/opt/pi4j/lib/'*' MCP4725SinusWave.java
- запускаем программу:
sudo java -classpath .:classes:/opt/pi4j/lib/'*' MCP4725SinusWave
Результат
Материалы
Установка Pi4J на Raspberry Pi и Orange Pi, Banana Pi
The Pi4J Project
MCP4725 — Datasheet 22039d.pdf
MCP4725 — Цифро-аналоговый преобразователь (ЦАП)
Bạn đang tìm kiếm thông tin về lịch thi đấu v-league 2024 hôm nay?
1 win.com 1 win.com .
mostbets https://shorts.borda.ru/?1-18-0-00000397-000-0-0/ .
1вин сайт официальный 1вин сайт официальный .
мос бет http://shorts.borda.ru/?1-18-0-00000397-000-0-0 .
зайти в 1вин https://www.boardwars.forum24.ru/?1-10-0-00000406-000-0-0 .
мостбет войти мостбет войти .
1win rossvya http://www.boardwars.forum24.ru/?1-10-0-00000406-000-0-0 .
мостбет скачать на андроид https://tagilshops.forum24.ru/?1-4-0-00000205-000-0-0/ .
скачать mostbet на телефон скачать mostbet на телефон .
1вин официальный сайт https://yamama.forum24.ru/?1-11-0-00000459-000-0-0-1742818616/ .
мостбет мобильная версия скачать мостбет мобильная версия скачать .
1 win казино 1 win казино .
1win вход на сайт mymoscow.forum24.ru/?1-6-0-00026928-000-0-0 .
мос бет http://maksipolinovtsu.forum24.ru/?1-1-0-00000194-000-0-0-1742815870/ .
1win зайти 1win зайти .
1 win регистрация https://dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
мотбет https://corgan.borda.ru/?1-0-0-00000265-000-0-0/ .
1вин официальный сайт https://www.dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
mostbet игры mostbet игры .
мосбет казино ashapiter0.forum24.ru/?1-19-0-00001444-000-0-0-1742819001 .
1win прямой эфир http://zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050/ .
mostbet промокод ashapiter0.forum24.ru/?1-19-0-00001444-000-0-0-1742819001 .
1вин. [url=https://www.zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050]https://www.zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050[/url] .
Узнайте мнение тех, кто уже прошел процедуру банкротства и списал свои долги https://bankrotstvo-v-moskve123.ru .
1win.pro knowledge.forum24.ru/?1-0-0-00000101-000-0-0-1742817704 .
мостбет скачать андроид мостбет скачать андроид .
1win на телефон 1win на телефон .
скачать mostbet на телефон http://www.mostbet6004.ru .
1win kg http://belbeer.borda.ru/?1-6-0-00001583-000-0-0/ .
мостбет промокод https://www.girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
1win вход 1win вход .
служба поддержки мостбет номер телефона http://girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
мостбет зеркало http://hiend.borda.ru/?1-16-0-00000259-000-0-0-1743052953 .
mostbet игры mostbet игры .
mostbet apk скачать mostbet apk скачать .
мостбет https://alfatraders.borda.ru/?1-0-0-00004917-000-0-0-1743053068/ .
1winn http://fanfiction.borda.ru/?1-0-0-00029708-000-0-0-1743051664 .
mostbet kg скачать https://cah.forum24.ru/?1-3-0-00000096-000-0-0-1743053764/ .
что такое 1win https://fanfiction.borda.ru/?1-0-0-00029708-000-0-0-1743051664 .
1 вин вход 1 вин вход .
1win ракета https://realistzoosafety.forum24.ru/?1-11-0-00001540-000-0-0-1742816894 .
mostbet скачать на телефон бесплатно андроид https://www.mostbet6007.ru .
сайт 1win официальный сайт вход сайт 1win официальный сайт вход .
отзывы о банкротстве отзывы о банкротстве .
банкротство физических лиц отзывы банкротство физических лиц отзывы .
1win win http://www.1win6051.ru .
1win сайт вход https://www.1win6005.ru .
мостбет http://mostbet6030.ru/ .
сайт 1win официальный сайт вход https://1win6054.ru/ .
1win sportsbook 1win sportsbook .
casino en 1 win casino en 1 win .
служба поддержки мостбет номер телефона mostbet6031.ru .
1 win сайт http://1win6042.ru .
1 win md https://www.1win5010.ru .
мостбет скачать казино https://mostbet6032.ru/ .
1win играть 1win играть .
mostbet скачать на телефон бесплатно андроид http://mostbet6011.ru .
1вин rossvya https://1win6008.ru/ .
1win на телефон https://www.1win6043.ru .
скачать mostbet скачать mostbet .
1 win официальный сайт вход http://www.1win6044.ru .
most bet http://mostbet6034.ru .
1win официальный http://1win6045.ru/ .
1win молдова 1win молдова .
мостбет официальный сайт mostbet6034.ru .
скачать mostbet mostbet6035.ru .
cazino md https://1win5014.ru/ .
1 вин вход https://1win6045.ru/ .
cazino md http://www.1win5015.ru .
mosbet https://mostbet6036.ru .
1вин http://1win7002.ru .
1 вин вход в личный кабинет http://www.1win7014.ru .
мостбет кыргызстан скачать https://www.mostbet5001.ru .
1win site http://1win16.com.ng .
mostbet kg скачать https://www.mostbet5002.ru .
mostbet.kg mostbet5003.ru .
1winn http://1win5030.ru .
1 vin официальный сайт 1win7004.ru .
1win bet 1win bet .
мостбет chrono https://mostbet6038.ru/ .
1win регистрация 1win регистрация .
мостбет кыргызстан https://mostbet7001.ru/ .
register with 1win website [url=http://1win18.com.ng/]http://1win18.com.ng/[/url] .
jocuri de noroc online moldova http://1win5027.ru .
мостбет кыргызстан скачать http://www.1win5028.ru .
1win скачать kg https://1win7006.ru .
казино онлайн kg https://www.mostbet6033.ru .
motbet mostbet7003.ru .
1 vin 1 vin .
1vin pro https://1win7009.ru/ .
мостбет chrono https://www.mostbet5009.ru .
mostbet kg скачать http://mostbet5010.ru .
Наша компания предлагает быстро приобрести диплом, который выполнен на оригинальной бумаге и заверен мокрыми печатями, штампами, подписями официальных лиц. Диплом способен пройти любые проверки, даже при использовании специального оборудования. babygirls040.copiny.com/question/details/id/1087162
pin. up pin. up .
pin up azerbaycan pin up azerbaycan .
mostbet chrono https://mostbet6040.ru .
скачать мостбет на андроид бесплатно старая версия https://mostbet6041.ru/ .
крутая музыка крутая музыка .
1win site https://www.1win706.ru .
сет музыкальный клубный сет музыкальный клубный .
мосбет https://mostbet6042.ru/ .
1win официальный сайт казино https://www.1win707.ru .
https://receptmult.ru/
москва камера хранения вещей москва камера хранения вещей .
Мы готовы предложить дипломы любых профессий по приятным тарифам. Купить диплом в Копейске — kyc-diplom.com/geography/kopejsk.html
Заказать диплом ВУЗа!
Мы изготавливаем дипломы любой профессии по приятным ценам— imgbooking.ru
1win պաշտոնական կայք https://1win5034.ru/ .
как активировать бонусы 1win http://www.1win8002.ru .
win1 aviator http://1win8003.ru/ .
заработок на гемблинге http://1win8006.ru/ .
Thanks for the article – really informative and well-written!
промокоды для 1win 1win8005.ru .
клубная музыка клубная музыка .
высокие вазоны для цветов для дома напольные высокие вазоны для цветов для дома напольные .
купить кашпо напольное для цветов купить кашпо напольное для цветов .
кашпо напольное размеры кашпо напольное размеры .
сет музыкальный клубный сет музыкальный клубный .
мостбет официальный вход http://www.mostbet8003.ru .
1win moldova download https://1win5050.ru/ .