Arduino+ダイセンモータードライバ

f:id:studio_k:20100213215140j:image:w320

Arduinoでダイセン電子工業のモータードライバを動かす実験です。

結果から言うとうまくいきませんでした。

このモータードライバは6つのモーターを駆動でき、小型のモーターであれば十二分に動かせるパワーもあります。

価格も高くなくコストパフォーマンスに優れたボードだと思います。

ロボカップジュニア(サッカー)ではおなじみのボードで、うちの子供も使っています。

I2Cでコントロールできるので、Arduinoから簡単に動かせると考えました。

ダイセン電子工業のサイト

http://www.daisendenshi.com/detail/ddkit_0601.html

【接続】

  • Arduinoの5VとGNDをモータードライバのI2C端子の5VとGNDへ接続。
  • Arduinoのアナログ4pinをSDAへ接続、アナログ5pinをSCLへ接続、各々3KΩの抵抗を介してプルアップ。

【スケッチ(プログラム)】

プログラムは上記のURLからダウンロードできるマニュアルを参考に作成しました。

#include <Wire.h>
#define TJ3M_ADDR 0x14
int ret;
byte b[6];
void setup()
{
Wire.begin();
delay(100);
}
void loop()
{
Wire.beginTransmission(TJ3M_ADDR);
b[0] = 50;
b[1] = 50;
b[2] = 0;
b[3] = 0;
b[4] = 0;
b[5] = 0;
Wire.send(b, 6);
ret=Wire.endTransmission();
delay(100);
}

結果は冒頭の通りうまくいかなかったのですが、ごく稀に(10回に1回ぐらい?)動くこともありますので、タイミングの問題でしょうかね?よくわかりません。

なお、ArduinoのI2Cは100KHzで動いているようです。モータードライバのマニュアルによれば100KHzでも大丈夫なようです。

ArduinoのI2Cの使い方としては温度センサのLM73ではうまく動いたので、問題はないと思うのですが。

天気予報を表示するガジェット

f:id:studio_k:20100211204715j:image:w300

今日と明日の天気予報を表示する装置を作ってみました。

フルカラーLEDの色で天気をあらわします。(天気は赤、雨は暗い青など)

といっても、PCにつなぐ必要があります。PCでインターネットから天気予報の情報を取得する、なんちゃって装置です。

+GAINER(オーム社)の記事を参考にしました。

天気の情報は↓からXMLを取得します。

http://weather.livedoor.com/weather_hacks/

マイコンはトランジスタ技術2008年8月号の付録基盤*1のNECエレクトロニクス社*2製78K0マイコンを使用しています。このマイコンはアナログ入力ポートが無いのが痛いですね。。。

マイコン側ではPCから受け取った情報を元にPWMでフルカラーLEDの色を制御します。

このマイコンはLEDを駆動できるパワーが無いのでバッファをかませています。(左上のICです。)

PC側のプログラムはJAVAで組みました。XMLのパーサーはSAXを使用しています。

マイコンとの通信にはRXTXcommを使っています。

*1:また付録ですか。という突っ込みは無しでお願いします。付録基盤ばかり使っているので、毎回マイコンが異なり覚えるのが大変です。

*2:ルネサスと統合する(した?)らしいです。このマイコンはどうなるのでしょうか?

コンピュータ将棋選手権

今年のコンピュータ将棋選手権には仕事の都合で出られそうにありませんので、残念ですが申し込みは見送ります。

K-Shogiはあまり進歩はないですが、せっかく新マシンを準備していたのに。

また、大会自体も面白くなりそうなので行きたかったのですが。。。

本格派対局将棋 ぴよ将棋
本格派対局将棋アプリ ぴよ将棋
[Android] [iOS]

かわいい「ひよこ」と対局する将棋アプリ。かわいいけどAIは本格派!
対局後の検討機能や棋譜管理機能も充実!棋譜解析機能も搭載!

Core i7

Core i7は4つのコアに加えてHyper-Threading(以下、HT)で8スレッド動かせますが、Pentium4の時はコンピュータ将棋にはHTはあまり有効でないとの噂もありましたので、調べてみました。

同じPCで4スレッドと8スレッドで自己対局させたところ、125勝99敗(勝率:55.0%)で8スレッドの方が勝ちました。少なくともK-ShogiではCore i7のHTは有効なようです。

ただし、今回は1台のPCで自己対局しましたが、他PCとの対局では、4コアだとTurbo Boostが効くということもあるかもしれません。

また、4スレッドの場合はSetThreadAffinityMaskで1つおきにコアを使用していますが、私の環境(XP 32bit)では問題なさそうですが、一般的にこのやり方で正しいのか、今ひとつ自信がありません。

64bit化 その2

GA将!!!さんのブログに、Core2の32bitから64bitの速度向上率が25%というレポートを見て、これは試さねばと思い、試してみました。

ついでにインラインアセンブラを使っていたところは、かずさんに教えていただいた__rdtscの利用と、ロックのところはアセンブラに外出しして、64bit対応作業が完了しました。

前回と同じ局面の探索にかかった時間です。(ただし、K-Shogiのバージョンが少し違うので前回の時間とは比較できません)

環境 プログラムの
bit数
時間
Core2 Extreme QX6700(2.66GHz) 2GB
WindowsXP 32bit
32bit 27.9秒
Core2 Extreme QX6700(2.66GHz) 2GB
Windows7RC 64bit
32bit 29.4秒
Core2 Extreme QX6700(2.66GHz) 2GB
Windows7RC 64bit
64bit 28.0秒

Windows7RC での32bit→64bitの速度向上率は約5%という前評判どおりの結果でした。。。残念。

しかもXP 32bitの方が速いので、しばらくはXP 32bit環境で十分という結論になってしまいました。

ぴよ将棋やその他アプリの開発・お知らせ、ロボット・電子工作