MicroPythonで使うWio Terminal - machine.DAC
MicroPythonで使うWio Terminal - 目次
machine.DAC (D/Aコンバータ)の使用例
# Wio Terminal machine.DACのサンプル# This code is provided under a CC0 Public Domain License.# http://creativecommons.org/publicdomain/zero/1.0/# 2022年6月19日 佐藤恭一 https://kyoutan.jpn.org
import timefrom machine import DAC, ADC, Pin, Map, LCD
lcd = LCD()lcd.fillScreen(lcd.color.BLACK)lcd.setTextColor(lcd.color.WHITE)lcd.setTextFont(6)adc = ADC(Pin(Map.A0))
# DACを使用したアナログ出力dac = DAC(Pin(Map.DAC0)) # DAC0 と DAC1 ふたつのDACがあるdac.resolution(12) # resolutionで分解能を指定できる。初期値=最大値 12bitdac.resolution(10) # ADCと同じ 10bitに設定# dac.reference(0) # 0 初期値。値を増やすと出力電圧が上がるのだけど、法則がわからない。
dac = DAC(Pin(Map.DAC0), resolution=10, reference=0) # 一行でも設定できる# DAC0の出力をADC0で読み取ってみる# DAC0(pin11)とADC0(pin13)をジャンパ線で接続するfor output in range(0, 1023, 20): dac.write(output) # アナログ出力 lcd.drawString(" {0:>04d} ".format(adc.read()), 0, 5) # 上段計測値 lcd.drawString(" {0:>04d} ".format(output), 0, 48) # 下段出力値 time.sleep_ms(100)
# PWMを使用したアナログ出力# 分解能は 8bit (0 - 255)のみ。resolutionを指定しても無視されるdac0 = DAC(Pin(13)) # PWM0dac1 = DAC(Pin(16)) # PWM1dac2 = DAC(Pin(23)) # PWM2dac3 = DAC(Pin(33)) # PWM3dac4 = DAC(Pin(37)) # PWM4dac5 = DAC(Pin(3)) # PWMピン以外では使えない(エラーにはならない)dac0.write(127)dac1.write(127)dac2.write(127)dac3.write(127)dac4.write(127)dac5.write(127)# PWM出力なので、波形はオシロかロジアナで観測する# アナログ値として使用するなら、ローパスフィルタを通す
""">>> help(DAC)object <class 'DAC'> is of type type write -- <function> resolution -- <function> reference -- <function>"""
DAC0, DAC1を使用したアナログ出力と、PWM0~PWM4を使用したアナログ出力が使用できます。
値を書き込むだけで簡単に使用できました。
PWMを使用したアナログ出力では、周期が 1.8kHzくらいでした。