arduino due 带有2个12位的DA转换器,利用数模转换可以随意做波形发生器。代码如下:
void setup() {
// put your setup code here, to run once:
analogWriteResolution(12);
}
void loop() {
for(int i=0;i<50;i++){
analogWrite(DAC0,(sin(i*2*3.14/50)+1)*4096/2);
}
}
analogWriteResolution(12)函数用来指定数模转换为12位,默认为8位;analogWrite()用来输出模拟值,analogWrite(DAC0,(sin(i*2*3.14/50)+1)*4096/2)是将正弦波的值转换为0到4094的整数值,然后在DAC0口输出改模拟值。
由于arduino的I/O端口读写的最大频率约为150KHZ,因此一个周期要是打50个点的话,那么该正弦波的频率约为300HZ。
|