合せてSTのチップを使ったセンサーモジュールのLIS3DH (accelerometer) L3GD20 (Gyroscope)もゲットしました。
秋月のLIS3DH同封説明書には、12ビットデーターとあるが、STのデーターシートにはデーター出力は16ビットとあることからして少々不安。確かに感度とレンジを見ると符号込みで12ビットの有効数字のようで、読み出しが16ビットに収まるということのようですね。
ArduinoのC++では「int」が16 bit signed integer と気付くのに時間がかかるなど、少々手間取りましたが、データーシートとApplication notesを読みながら何とかこれらセンサーをSPI 経由で同時接続して何とかデーターを取り込むことができたので、ここに置いておきます。
以下のコード部分で文字化けしました。またFET内蔵保護ダイオードの向きが逆でした。うまく編集できないので、ここにコメントしておきます。
1: VDD
2: SPC <= SCK (D13) (P19)
3: SDI <= MOSI(D11) (P17)
4: SDO => MISO(D12) (P18)
5: CS <= (D9) (P15)
ST L3GD20 3-axis gyroscope pins: (larger 14 pins)
1: VDD
2,10,14: GND
3: SPC <= SCK (D13) (P19)
4: SDI <= MOSI(D11) (P17)
5: SDO => MISO(D12) (P18)
6: CS <= (D10) (P16)
このおもちゃ、飽きるまで当分遊べそうです。
プログラムここにはって置いたのでは使いにくいので、GITHUBに置きました。
https://github.com/osamuaoki/avrdude-friend
本設定はAVRDUDEに組み込まれました。「-c uncompatino」で呼び出してください。
5V-3,3Vのレベルシフト回路ですが、Gを3.3Vのみに接続と修正済としたアスキーアートを残します。
Both sensors runs under 3.3V. These are connected to Arduino via FET gate follower V-converter circuits. Bidirectional level shift was done with the following for all I/O with Arduino/Sensors.
2N7002K
3.3V o------+-----------+ +-------o 5V
| | |
10 Kohm Z ===== Z 10 Kohm
Z S | ^ | D Z
| | | | |
Sig 3.3V o------+------+--+-+ +--+-----+-------o Sig 5V
| |
+---|<|---+
(Internal diode of 2N7002K)