DAコンバーターの使いかた【Arduino】より

解決


ワッキー  URL  2020-12-01 08:04:06  No: 149424  IP: [192.*.*.*]

Wire.write((value >> 8) & 0x0F);
この分の意味を知りたいです。
また、自分は今レーザーセンサーの距離に応じてI2C通信でDACが距離を受信し、その距離によって電圧を変えたいと思っているのですが、ビット演算子などがいまいちわかりません。
宜しくお願い致します。

編集 削除
papy  2020-12-01 08:25:23  No: 149425  IP: [192.*.*.*]

>>
は右シフト

&   
は論理積(AND)

0x0F
は16進表記です。10進数にすると15。2進数にすると1111となります。
C言語、C++言語の基礎ですので、詳細はGoogleで解説サイトを探した方が良いと思います。

※文章だけだとわかりにくいので「図解」があるところがわかりやすいです。


編集 削除
papy  2020-12-01 08:30:48  No: 149426  IP: [192.*.*.*]

その他はデータシートも確認すると良いかもです。

MCP4726搭載12ビットトD/A変換モジュール
https://akizukidenshi.com/download/ds/akizuki/AE_MCP4726.pdf
https://akizukidenshi.com/download/ds/microchip/MCP4726.pdf

編集 削除
ワッキー  URL  2020-12-03 02:13:56  No: 149442  IP: [192.*.*.*]

papy様、回答ありがとうございます。
英語のデータシートにも徐々に慣れていきたいと思います。
もう一つ聞きたいのですが、実行例の()の中身はどのような数式で出されているのでしょうか?
宜しくお願い致します。

編集 削除
papy  2020-12-03 04:59:41  No: 149446  IP: [192.*.*.*]

電圧:2.50V(512)の512の事でしたら、
analogRead(A0)の戻り値です。

analogRead(pin)に関しては、こちらが詳しく解説されています。
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2113


トップページはこちらです。

Arduino 日本語リファレンス
http://www.musashinodenpa.com/arduino/ref/

編集 削除
ワッキー  URL  2020-12-09 02:05:01  No: 149463  IP: [192.*.*.*]

Serial.print(vout / 1024.0 * 5.0);
VOUTに出力された電圧を取得するの部分の、
1024.0はなんとなくわかっているのですが、
なぜ5.0をかけているのか教えていたでけないでしょうか。  
宜しくお願い致します。

編集 削除
papy  2020-12-09 07:51:21  No: 149466  IP: [192.*.*.*]

5.0はArduino Unoの動作電圧が5Vだからです。

Arduino Uno R3
https://www.switch-science.com/catalog/789/

--- analogRead(pin)の解説より引用 ---
Arduinoボードは10ビットADコンバータを搭載しています。
0から5ボルトの入力電圧を0から1023の数値に変換することができます。
---------------------------------------------------

10ビット = 1111111111(2進数) = 1023(10進数) = 0を含めると1024種類

編集 削除
ワッキー  2020-12-11 03:09:33  No: 149475  IP: [192.*.*.*]

いろいろと試行錯誤しているうちに何とかなりました。今回は本当に助かりました。ありがとうございます。

編集 削除