Soporte DAC: Clase DAC
La clase DAC permitirá crear objetos que representan la salida analógica de la placa.
Constructor
La clase posee un constructor que recibe un solo argumento, este argumento es el número de salida analógica que controlará. Solo existe una salida, por lo que el valor que debe pasarse siempre es 1.
Métodos
write(val) : Escribe el valor en cuentas (0 a 1023) en la salida con un fondo de escala de 3.3V
noise(f): Genera una señal de ruido pseudo aleatorio de 256 muestras a la frecuencia especificada (de 1 a 400000)
triangle(f): Genera una señal triangular de 256 muestras a la frecuencia especificada (de 1 a 400000)
write_timed(data,freq,mode): Genera una señal utilizando como muestras el array de datos pasado como argumento (data) a la frecuencia dada (freq de 1 a 400000) utilizando DMA. El argumento mode puede ser pyb.DAC.NORMAL (solo genera la señal una vez) o pyb.DAC.CIRCULAR (al terminar vuelve a empezar)
Ejemplo generación de una señal senoidal
import pyb
import math
dac = pyb.DAC(1)
# sine
buf = bytearray(200) #100 samples. 2 bytes per sample
j=0
for i in range (0,len(buf)/2):
v = 512 + int(511 * math.sin(2 * math.pi * i / (len(buf)/2) ) )
buf[j+1] = (v >> 8) & 0xff
buf[j] = v & 0xff
j=j+2
# output the sine-wave at 400Hz
print("sine created")
dac.write_timed(buf, 400*(int(len(buf)/2)), mode=pyb.DAC.CIRCULAR)
while True:
pyb.delay(1000)