MicroPython:Библиотеки/pyb/Класс DAC: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 5 промежуточных версий 1 участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=Класс DAC – цифро-аналоговое преобразование<ref>[ http://docs.micropython.org/en/latest/library/pyb.DAC.html docs.micropython.org - class DAC – digital to analog conversion]</ref>=
=Класс DAC – цифро-аналоговое преобразование<ref>[http://docs.micropython.org/en/latest/library/pyb.DAC.html docs.micropython.org - class DAC – digital to analog conversion]</ref>=


''Класс DAC'' используется для вывода аналоговых значений (напряжения) на контакты ''X5'' или ''X6''. Диапазон напряжения – ''между 0 и 3.3 вольтами''.
''Класс DAC'' используется для вывода аналоговых значений (напряжения) на контакты ''X5'' или ''X6''. Диапазон напряжения – ''между 0 и 3.3 вольтами''.


{{Спойлер|'''Примечание''': В будущем [[API]] этого модуля ждут изменения.}}
{{Примечание1|В будущем [[API]] этого модуля ждут изменения.}}


Пример использования:  
Пример использования:  


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
from pyb import DAC
from pyb import DAC


Строка 24: Строка 24:
Чтобы вывести непрерывную синусоиду:
Чтобы вывести непрерывную синусоиду:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
import math
import math
from pyb import DAC
from pyb import DAC
Строка 40: Строка 40:
Чтобы вывести непрерывную синусоиду в ''12-битном разрешении'':
Чтобы вывести непрерывную синусоиду в ''12-битном разрешении'':


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
import math
import math
from array import array
from array import array
Строка 65: Строка 65:
* [[MicroPython:Библиотеки/pyb/Класс DAC/DAC.write()|DAC.write(value)]]
* [[MicroPython:Библиотеки/pyb/Класс DAC/DAC.write()|DAC.write(value)]]
* [[MicroPython:Библиотеки/pyb/Класс DAC/DAC.write_timed()|DAC.write_timed(data, freq, *, mode=DAC.NORMAL)]]
* [[MicroPython:Библиотеки/pyb/Класс DAC/DAC.write_timed()|DAC.write_timed(data, freq, *, mode=DAC.NORMAL)]]
* DAC.deinit() – денициализирует цифро-аналоговый преобразователь (ЦАП), освобождая его контакты для использования в других целях.
* DAC.noise(freq) – генерирует псевдо-случайный шумовой сигнал. Он будет записан на DAC-вывод с частотой freq.
* DAC.triangle(freq) – генерирует треугольный импульс. Значение на DAC-выводе меняется на частоте freq и проходит через полный 12-битный диапазон (вверх и вниз). В результате частота самой повторяющейся треугольной волны будет в 8912 раза меньше.
* DAC.write(value) – прямой доступ к DAC-выводу. Минимальное значение – «0». Максимальное значение – 2**``bits``-1, где bits задается либо при создании объекта DAC, либо при использовании метода init().
* DAC.write_timed(data, freq, *, mode=DAC.NORMAL) – выделяет пакет RAM-памяти под DAC-данные при помощи передачи данных DMA. Входные данные воспринимаются как массив байтов в 8-битном режиме или массив беззнаковых полуслов (массив с кодом ‘H’) в 12-битном режиме.
В аргументе freq может быть целое число, задающее частоту записи порций ЦАП-данных (при помощи таймера 6), или уже инициализированный объект Timer, используемый для инициации записи ЦАП-данных. Для этого подходят таймеры 2, 4, 5, 6, 7 и 8.
В аргументе mode может быть DAC.NORMAL или DAC.CIRCULAR.
Пример одновременного использования обоих цифро-аналоговых конвертеров:
<syntaxhighlight lang="python" enclose="div">
dac1 = DAC(1)
dac2 = DAC(2)
dac1.write_timed(buf1, pyb.Timer(6, freq=100), mode=DAC.CIRCULAR)
dac2.write_timed(buf2, pyb.Timer(7, freq=200), mode=DAC.CIRCULAR)
</syntaxhighlight>


=См.также=
=См.также=

Текущая версия от 17:31, 24 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс DAC – цифро-аналоговое преобразование[1]

Класс DAC используется для вывода аналоговых значений (напряжения) на контакты X5 или X6. Диапазон напряжения – между 0 и 3.3 вольтами.

Примечание

В будущем API этого модуля ждут изменения.

Пример использования:

from pyb import DAC

dac = DAC(1)            # создаем «dac» на контакте X5
dac.write(128)          # записываем значение на «dac»
                        # (на X5 появится напряжение 1.65 вольт)

dac = DAC(1, bits=12)   # используем 12-битное разрешение
dac.write(4095)         # задаем максимальное значение (3.3 вольта)

Чтобы вывести непрерывную синусоиду:

import math
from pyb import DAC

# создаем буфер, содержащий синусоиду:
buf = bytearray(100)
for i in range(len(buf)):
    buf[i] = 128 + int(127 * math.sin(2 * math.pi * i / len(buf)))

# задаем синусоиду при 400 Гц:
dac = DAC(1)
dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR)

Чтобы вывести непрерывную синусоиду в 12-битном разрешении:

import math
from array import array
from pyb import DAC

# создаем буфер, содержащий синусоиду, при помощи полуслов:
buf = array('H', 2048 + int(2047 * math.sin(2 * math.pi * i / 128)) for i in range(128))

# выводим синусоиду при 400 Гц:
dac = DAC(1, bits=12)
dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR)

Конструкторы

Методы

См.также

Внешние ссылки