Arduino UNO R3では、analogWrite()でPWMを出力して疑似アナログ出力としていますが、Arduino UNO R4(WiFi)には、独立したDACが内蔵されています。
DACの分解能は12bitですが、analogWriteResolution()でビット数を指定することができます。この関数でDACの分解能を指定することによりDACが使用可能になります。出力先はA0です。
まず、テストとしてDAC out(A0)に分解能10bitで、1023の値で出力してみます。次のスケッチを書き、コンパイル書き込みをします。
----------------------------------------------
void setup(){
analogWriteResolution(10);
analogWrite(DAC,1023);
}
void loop(){}
----------------------------------------------
出力された電圧です。4.76Vでした。
次に、分解能を12bitにして、同じ値1023をDACで出力してみます。
----------------------------------------------
void setup(){
analogWriteResolution(12);
analogWrite(DAC,1023);
}
void loop(){}
----------------------------------------------
当然ですが、1/4の値1.19Vが出力されました。
次にDACの出力電圧を変化させて、鋸歯状波を作ってみます。
スケッチです。分解能は10bitで、0~1023の値を連続して出力します。
----------------------------------------------------
void setup() {
analogWriteResolution(10);
}
void loop() {
for(int i=0;i<1024;i++ ){
analogWrite(DAC,i);
}
}
----------------------------------------------------
analogWriteResolution(10);
}
void loop() {
for(int i=0;i<1024;i++ ){
analogWrite(DAC,i);
}
}
----------------------------------------------------
出力された波形です。周波数は97Hzです。
かなりギザギザした鋸歯状波(ノコギリ波)が出力されました。
分解能を12bitにして、0~4095の値をDACから出力してみた時の波形です。
周波数は24Hzです。
スケッチ例にある「SineWave.ino」を書き込んで出力波形を見てみました。
周波数は、約290Hzです。