ATmega2560でI2Cを用いてDDK0668Tを動かす方法
ダイセンの6chMCB(DDK0668T)をI2C通信を利用してATmega2560で動かす方法 これはATmega2560でI2Cを利用して6chMCBを使おうとしている方々へのまとめ記事です。これまでにこの6chMCBを使うため様々な開拓をされてきた方々の情報も簡単にまとめて載せています。リンクを貼り付けておくので、そのリンク先も是非ご一読下さい。6chMCBはダイセン電子工業さんが発売しているモータードライバーです。品番はDDK0668Tです。このモータードライバーには合計6chあり、そのchに値を送ることでモータードライバーと対応するそのモーターを動かしています。(https://www.daisendenshi.com/download/) 一見すると使えそうなモータードライバーですが、実を言うとこのモータードライバーは癖がありすぎて上手に使うことが非常に困難です。 ですが、E-gadgetで使う分に関しては問題なく動作するので、安心して使えると思います。2022年度全国大会はディフェンス機でE-gadgetにDDK0668Tを積んだ4輪ロボットで出場もしました。 まず癖の一つ目は、時々正転と逆転が入れ替わる可能性があると言うことです。プログラムには特に問題のあることを書いていなかったとしても、何故か正転と逆転が一瞬入れ替わる場合があります。これは自分はまだ対処ができていません。プログラムのせいなのでしょうか?それとも抵抗?ハードの問題?分かった人は教えていただけると幸いです。(ただし、リセットボタンを1度押すと正常に回転する) 二つ目は、スペースを取ると言うことです。このモータードライバーの大きさは横78mm * 縦93mm * 高さ10mmです。この記事を読んでいる人の大体がRCJをしている人なはずなので分かるでしょうが、RCJにおいて空きスペースの問題は非常に重要です。1100gの中に様々な物を積むことは容易ではない上に、その中にモータードライバー単体でスペースを取ってしまうと内部に物を多く置けなくなってしまうので、設計が困難になる要因にもなります。 三つ目は、ダミーデータを入れないとバスフリーズをする問題です。詳しい理由はよく分かりませんが、4chしか使わない場合でも6ch分しっかりとデータをモータードライバーに送信する必要が...