ЦАП 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?
mostbets https://shorts.borda.ru/?1-18-0-00000397-000-0-0/ .
мос бет http://shorts.borda.ru/?1-18-0-00000397-000-0-0 .
мостбет войти мостбет войти .
мостбет скачать на андроид https://tagilshops.forum24.ru/?1-4-0-00000205-000-0-0/ .
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 .
1win зайти 1win зайти .
мотбет https://corgan.borda.ru/?1-0-0-00000265-000-0-0/ .
mostbet игры mostbet игры .
1win прямой эфир http://zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050/ .
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 .
мостбет скачать андроид мостбет скачать андроид .
скачать mostbet на телефон http://www.mostbet6004.ru .
мостбет промокод https://www.girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
служба поддержки мостбет номер телефона http://girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
mostbet игры mostbet игры .
мостбет 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 .
что такое 1win https://fanfiction.borda.ru/?1-0-0-00029708-000-0-0-1743051664 .
mostbet скачать на телефон бесплатно андроид https://www.mostbet6007.ru .
отзывы о банкротстве отзывы о банкротстве .
банкротство физических лиц отзывы банкротство физических лиц отзывы .
1win сайт вход https://www.1win6005.ru .
мостбет http://mostbet6030.ru/ .
casino en 1 win casino en 1 win .
служба поддержки мостбет номер телефона mostbet6031.ru .
1 win официальный сайт вход http://www.1win6044.ru .
скачать mostbet mostbet6035.ru .
mosbet https://mostbet6036.ru .
1win site http://1win16.com.ng .
1winn http://1win5030.ru .
мостбет кыргызстан https://mostbet7001.ru/ .
motbet mostbet7003.ru .
1win официальный сайт казино https://www.1win707.ru .
1win պաշտոնական կայք https://1win5034.ru/ .
mostbet скачать на андроид официального сайта http://mostbet8007.ru .
промокод продамус на 5000 https://www.prodams-promokod.ru .
магазин аккаунтов социальных сетей купить аккаунт
маркетплейс аккаунтов соцсетей купить аккаунт
маркетплейс аккаунтов соцсетей купить аккаунт с прокачкой
1win promokod 1win10020.ru .
Account Purchase Accounts market
Account exchange Secure Account Sales
1win что за контора http://1win10006.ru .
Sell Account Account Sale
Social media account marketplace Verified Accounts for Sale
Account marketplace Ready-Made Accounts for Sale
sell account accounts for sale
website for selling accounts sell accounts
buy account sell pre-made account
buy accounts sell accounts
find accounts for sale https://buycheapaccounts.com
profitable account sales account exchange
sell account account selling platform
marketplace for ready-made accounts buy pre-made account
website for selling accounts account sale
secure account sales sell account
account trading account market
sell pre-made account account acquisition
account trading platform account store
find accounts for sale account buying platform
social media account marketplace account trading platform
промокод продамус промокод продамус .
database of accounts for sale secure account purchasing platform
account exchange service buy pre-made account
guaranteed accounts account sale
buy account https://accounts-offer.org
gaming account marketplace https://accounts-marketplace.xyz
account exchange service social-accounts-marketplaces.live
account trading https://accounts-marketplace.live
verified accounts for sale https://social-accounts-marketplace.xyz
account market https://buy-accounts.space
account trading platform account market
account exchange service accounts market
account selling platform https://social-accounts-marketplace.live
secure account purchasing platform accounts marketplace
account buying service https://accounts-marketplace-best.pro
оказание услуг по охране объектов https://chop-ohrana.com/czeny-na-uslugi-ohrany/ .
покупка аккаунтов https://akkaunty-na-prodazhu.pro/
продать аккаунт https://rynok-akkauntov.top
купить аккаунт akkaunt-magazin.online
маркетплейс аккаунтов https://akkaunty-market.live/
круглосуточная охрана стоимость https://chop-ohrana.com/czeny-na-uslugi-ohrany .
установка шкафов на машиноместо установка шкафов на машиноместо .
продать аккаунт https://akkaunty-optom.live/
магазин аккаунтов https://online-akkaunty-magazin.xyz
маркетплейс аккаунтов соцсетей https://kupit-akkaunt.online/
стоимость охраны стоимость охраны .
дренаж санкт петербург https://vc.ru/services/1913096-kak-sdelat-drenazh-na-uchastke-v-sankt-peterburge/ .
facebook ad accounts for sale facebook ad account buy
buy facebook ads manager https://buy-ad-accounts.click
cheap facebook account https://buy-ad-account.top
купить дрова 30 см http://www.vc.ru/rejting/1604662-zakazat-drova-v-sergievom-posade/ .
скачать треки уннв скачать треки уннв .
buy aged fb account buy aged facebook ads accounts
facebook ad account buy buy facebook advertising
пластиковые окна пвх 02stroika.ru .
займ на кредитную карту онлайн мгновенно https://vc.ru/rejting/1964646-kredity-na-kartu-na-god-s-plokhoy-istoriey .
скачать мостбет на андроид бесплатно старая версия http://mostbet22005.ru .
микрозайм взять займ на карту онлайн http://www.vc.ru/rejting/1964646-kredity-na-kartu-na-god-s-plokhoy-istoriey .
fb accounts for sale https://ad-accounts-for-sale.work
old google ads account for sale buy google adwords account
buy aged google ads accounts https://ads-account-for-sale.top
buy aged google ads account https://ads-account-buy.work/
бонус код 1win https://www.1win22005.ru .
деньга займ онлайн на карту оформить https://www.vc.ru/rejting/1964646-kredity-na-kartu-na-god-s-plokhoy-istoriey .
buy google ads threshold account sell google ads account
buy google ads agency account google ads account seller
buy adwords account https://buy-verified-ads-account.work
facebook business manager buy buy-business-manager.org
buy verified bm facebook buy-business-manager-acc.org
buy verified business manager https://buy-verified-business-manager.org/
самые точные прогнозы на хоккей самые точные прогнозы на хоккей .
facebook business manager account buy https://business-manager-for-sale.org/
facebook business manager account buy buy-bm.org
дренажные работы ленинградская область drenazh-uchastka-1122.ru .
facebook bm buy facebook bm account
facebook business manager account buy https://buy-business-manager-accounts.org/
buy tiktok business account https://buy-tiktok-ads-account.org
tiktok ads account buy https://tiktok-ads-account-buy.org
buy tiktok ads accounts https://tiktok-ads-account-for-sale.org
tiktok ads account for sale https://tiktok-agency-account-for-sale.org
buy tiktok ads accounts https://buy-tiktok-ads-accounts.org
продвинуть сайт в москве https://prodvizhenie-sajtov-v-moskve231.ru/ .
тарифы интернет и телевидение екатеринбург
ekaterinburg-domashnij-internet001.ru
интернет по адресу дома
tiktok ads account for sale https://buy-tiktok-ads.org
buy tiktok ads https://tiktok-ads-agency-account.org
парковка на участке парковка на участке .
1вин вывод средств https://www.1win22068.ru .
натяжной потолок с установкой в липецке http://potolkilipetsk.ru .
переезд через канаву на даче http://www.doroga-k-uchastku-1122.ru/ .
заезд к дому http://parkovka-dlya-mashiny-1122.ru/ .
заезд на участок под ключ московская область цена http://www.proezd-k-uchastku-1122.ru/ .
обустройство заезда на участок http://www.vezd-na-dachnyj-uchastok-1122.ru .
сантехника в днр santehnika-doneck-1.ru .
разровнять участок разровнять участок .
сделать заезд на участок через канаву цена .
въезд на дачный участок .
zaezd-pod-klyuch-1122.ru .
купить септик для частного дома недорого в московской http://septik-pod-klyuch-1.ru .
магазин сантехники в донецке https://www.santehnika-doneck-1.ru .
Правда ли, что можно купить диплом с отличием и это никак не повлияет на прохождение проверки при приёме на работу? Купить диплом о среднем образовании
В 2025 году наличие диплома всё ещё остаётся основным фактором при приёме на работу, повышении по службе или получении лицензии. И если у вас нет необходимого документа — это не повод терять годы.
✅ Выход есть — оформление диплома на заказ, полностью соответствующего оригиналу:
С печатями, подписями, голограммами,
С занесением в архив (по запросу),
Любой ВУЗ, колледж — по всей России и СНГ.
Для кого подойдёт?
Вас выгнали, но обучение практически завершено?
Поступили на хорошую работу, но нет диплома?
Нужен диплом для лицензирования, повышения, тендера?
Мы работаем без предоплаты (по договору или поэтапно) и гарантируем полную конфиденциальность. У нас нет шаблонов — каждый документ готовится индивидуально, с учётом всех нюансов.
Наши гарантии:
Реалистичный диплом, неотличимый от оригинала
Настоящие данные выпускника (по вашей анкете)
Быстрая и надежная доставка по России и СНГ
Юридически грамотно оформленный договор (по желанию)
Мы сотрудничаем с квалифицированными специалистами, которые знают, как должен выглядеть официальный документ — вплоть до мельчайших деталей. У нас много лет опыта и более random00..3999] довольных клиентов.
банкротство граждан bankrotstvo-grajdan.ru .
drenazh-pod-klyuch-812.ru .
строительный лифт строительный лифт .
какой банк даёт кредит с плохой кредитной историей какой банк даёт кредит с плохой кредитной историей .
купить пластиковые окна с завода https://02stroika.ru .
Мы предлагаем оформление дипломов ВУЗов в Москве — с печатями, подписями, приложением и возможностью архивной записи (по запросу).
Документ максимально приближен к оригиналу и проходит визуальную проверку.
Мы даем гарантию, что в случае проверки документа, подозрений не возникнет.
— Конфиденциально
— Доставка 3–7 дней
— Любая специальность
Уже более 1048 клиентов воспользовались услугой — теперь ваша очередь.
Дипломы о высшем образовании купить — ответим быстро, без лишних формальностей.
Мы предлагаем оформление дипломов ВУЗов в Москве — с печатями, подписями, приложением и возможностью архивной записи (по запросу).
Документ максимально приближен к оригиналу и проходит визуальную проверку.
Мы гарантируем, что в случае проверки документа, подозрений не возникнет.
— Конфиденциально
— Доставка 3–7 дней
— Любая специальность
Уже более 2219 клиентов воспользовались услугой — теперь ваша очередь.
Купить диплом о среднем профессиональном образовании — ответим быстро, без лишних формальностей.
деньги срочно на карту без отказа деньги срочно на карту без отказа .
drenazh-fundamenta-812.ru .
drenazh-otmostki-812.ru .
отзывы https://niksolovov.ru/services/camcard 2025
в какие клиники можно обратиться за психологической помощью https://www.psihiatry-nn-1.ru .
ustrojstvo-drenazha-812.ru .
пластиковые окна пластиковые окна .
Here’s more on the topic https://upsskirt.ru/
дренаж дачного участка под ключ .
Thanks for the article. Here’s more on the topic https://great-galaxy.ru/
скачать песни бесплатно популярные скачать песни бесплатно популярные .
Here’s more on the topic https://my-caffe.ru/
пластиковые окна заказать пластиковые окна заказать .
окна пвх rehau 02stroika.ru .
Thanks for the article. Here’s more on the topic https://adventime.ru/
слушать музыку бесплатно онлайн в хорошем качестве и без регистрации без остановки слушать музыку бесплатно онлайн в хорошем качестве и без регистрации без остановки .
servicios de la cl?nica de cosmetolog?a en Marbella clinics-marbella-1.com .
drenazh-10-sotok-812.ru .
слушать музыку бесплатно онлайн в хорошем качестве и без регистрации без остановки слушать музыку бесплатно онлайн в хорошем качестве и без регистрации без остановки .
проверика организации https://proverit-kontragenta.ru .
kupit-drova-v-spb-365.ru .
Thanks for the article. Here’s more on the topic https://mehelper.ru/