class DAC – digital to analog conversion¶
The DAC is used to output analog values (a specific voltage) on pin P6. The voltage will be between 0 and 3.3V.
This module will undergo changes to the API.
from pyb import DAC dac = DAC('P6') # create DAC on pin P6 dac.write(128) # write a value to the DAC (makes P6 1.65V) dac = DAC('P6', bits=12) # use 12 bit resolution dac.write(4095) # output maximum value, 3.3V
To output a continuous sine-wave:
import math from pyb import DAC # create a buffer containing a sine-wave buf = bytearray(100) for i in range(len(buf)): buf[i] = 128 + int(127 * math.sin(2 * math.pi * i / len(buf))) # output the sine-wave at 400Hz dac = DAC('P6') dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR)
To output a continuous sine-wave at 12-bit resolution:
import math from array import array from pyb import DAC # create a buffer containing a sine-wave, using half-word samples buf = array('H', 2048 + int(2047 * math.sin(2 * math.pi * i / 128)) for i in range(128)) # output the sine-wave at 400Hz dac = DAC('P6', bits=12) dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR)
Construct a new DAC object.
portcan be a pin object. DAC(‘P6’) is on pin P6 (PA5).
bitsis an integer specifying the resolution, and can be 8 or 12. The maximum value for the write and write_timed methods will be 2**``bits``-1.
Reinitialize the DAC.
bitscan be 8 or 12.
Generate a pseudo-random noise signal. A new random sample is written to the DAC output at the given frequency.
Generate a triangle wave. The value on the DAC output changes at the given frequency, and the frequency of the repeating triangle wave itself is 2048 times smaller.
Direct access to the DAC output. The minimum value is 0. The maximum value is 2**``bits``-1, where
bitsis set when creating the DAC object or by using the
write_timed(data, freq, *, mode=DAC.NORMAL)¶
Initiates a burst of RAM to DAC using a DMA transfer. The input data is treated as an array of bytes in 8-bit mode, and an array of unsigned half-words (array typecode ‘H’) in 12-bit mode.
freqcan be an integer specifying the frequency to write the DAC samples at, using Timer(6). Or it can be an already-initialized Timer object which is used to trigger the DAC sample. Valid timers are 2, 4, 5, 6, 7 and 8.