cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

TiのC2000 PiccoloシリーズのマイコンボードLAUNCHXL-F28069MでUSB Serial Portを有効にする方法

ここに書いてあります。

Using the serial adapter of XDS100 - Texas Instruments Wiki

Windows用の情報です。

バイスのユーザマニュアル(山のようにある)をいくら読んでも、どこにも書いてありません。
Tiのドキュメントはいっぱいあるのですが、まともにバージョン管理もされておらず嘘や間違いだらけで役に立ちません。ひどい。
同じシリーズのLAUNCHXL-F28027Fでは何もせずに、USB SerialPortが見つかります。

手順は次の通り。
1. デバイスマネージャ→ユニバーサルシリアルバスコントローラ→TI XDS100 Channel Bを右クリック→プロパティ→詳細設定、を開く。
2. VCPをロードする、にチェックしてOK。ちなみにVCPはVirtual COM Portの略。
3. デバイスのUSBケーブルをいったん抜いてさし直す。すると、新しいデバイスの認識が始まる。

もしデバイスを買ってきたばかりでFlashに何の書き込みもしていなければ、デモプログラムで動作を確認できます。
1. PuttyTeraTermなどのターミナルで、認識されたCOMポートに接続してください。
2. baudrateを115200に設定してください。
3. マイコンボード上のResetボタンを押してください。すると、次のような画面が表示されます。随時、基板上の温度計の温度が更新されます。

77777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777:::::::::::::77777777777777777777777777777777777777777
77777777777777777777777:::::::::::::77777777777777777777777777777777777777777
77777777777777777777777:::::::::::::7777777=~~~:~7777777777777777777777777777
77777777777777777777777:::::::::::::7777777::::~I7777777777777777777777777777
77777777777777777777777:::::::::::::7777777:::::77777777777777777777777777777
77777777777777777777777:::::::::::::777777~::::~77777777777777777777777777777
77777777777777777777777::::::::::::~77777777777777777777777777777777777777777
77777777777777777777777::::::::::::~~:~~77:::::777~:::::::::+7777777777777777
77777777777777777777777::::::::::::::~:77I:::::77::::::::::~+7777777777777777
77777777777777777777777:::::::::~::~~~~77~:::::77~~~:~::::::+7777777777777777
77777777777777777777777::::::::::::::~=77~::::I7?::~::::::::+7777777777777777
77777777777777777777777::::::::::~~+++77I~:~::77++++~:::::::+7777777777777777
77777777777777777777777:::::::::::777777~~:~:~777777~::::::::7777777777777777
77777777777777777777777::::::::::~777777~::::777777I~::::::::7777777777777777
7777777::::::::::::::::::::::::::+777777:~:::777777::::::::::~777777777777777
77777777::::::::::::::::::::::::::::~77?:~~:~77:::::::::::::::::7777777777777
77777777I::::~:::::::::::::::::::::::77~::::=77:~:::::::::::::::7777777777777
7777777777:~:::::::::::::::::::::::~?77::::~77=:::::::::::::::::7777777777777
777777777777:~:::::::::::::::::::::~77=:::~:77~:::::::::::::::::7777777777777
7777777777777~~:::::::::::::::::::::77~:::~?77::::::::::::::::::7777777777777
77777777777777~::::::::::::::::::::I77::~::77~~:::::::::::::::::7777777777777
777777777777777::~:::::::::~:~::~:~77~:::::77?~~~~~:::::::~~::::7777777777777
777777777777777?:::::::::~::::::~::77777777777777:::::::~::::~~?7777777777777
7777777777777777~::::::~7777~:::::~7777777777777+::::::::~~777777777777777777
77777777777777777?~~~:77777777:~::~7777777777777::::::~7777777777777777777777
777777777777777777777777777777?:~~~+777777777777~::::777777777777777777777777
7777777777777777777777777777777~:::::~:~::~~~~~:~::?7777777777777777777777777
77777777777777777777777777777777~~::::::::::::::::777777777777777777777777777
77777777777777777777777777777777I::::::::::::::~~7777777777777777777777777777
777777777777777777777777777777777+~::::::::::::~77777777777777777777777777777
7777777777777777777777777777777777I~~::::::::::I77777777777777777777777777777
77777777777777777777777777777777777:~::::::::::777777777777777777777777777777
777777777777777777777777777777777777+::~:::::::777777777777777777777777777777
77777777777777777777777777777777777777~~::::::::77777777777777777777777777777
7777777777777777777777777777777777777777~:::::::77777777777777777777777777777
7===========================7777777777777777II77777=========================7
7| Texas Instruments |77777777777777777777777| F28069M InstaSPIN |7
Current Temperature: |77777777777777777777777| Motion LaunchPad |7
47 Celcius = Ref + 0 ======77777777777777777777777=========================7
77777777777777777777777777777777777777777777777777777777777777777777777777777

このサンプルのソースコードをシリアル接続の参考に使いたいのだけれど、ソースコードの場所が見つかりません。
たぶんcontrolSUITEの中だけど、マニュアルにも書いてない。どこだー?

発見!
C:\ti\controlSUITE\development_kits\LAUNCHXL-F28069M\LaunchPadDemo
一緒に参照のこと
C:\ti\controlSUITE\device_support\f2806x\v150\F2806x_common\source\F2806x_Sci.c

/* Enable internal pull-up for the selected pins */
// Pull-ups can be enabled or disabled disabled by the user.
// This will enable the pullups for the specified pins.
GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)
GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;    // Enable pull-up for GPIO29 (SCITXDA)

/* Set qualification for selected pins to asynch only */
// Inputs are synchronized to SYSCLKOUT by default.
// This will select asynch (no qualification) for the selected pins.
GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;  // Asynch input GPIO28 (SCIRXDA)

/* Configure SCI-A pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be SCI functional pins.
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;   // Configure GPIO28 for SCIRXDA operation
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;   // Configure GPIO29 for SCITXDA operation

今日の個人的にアニメ化希望の漫画

鈴木小波 ホクサイと飯+ホクサイと飯さえあれば


ホクサイと飯 (単行本コミックス)

ホクサイと飯 (単行本コミックス)




ただひたすらブンが可愛いくて美味しそうなご飯を作って食べるだけの漫画。

ユキヲ 邪神ちゃんドロップキック

ただひたすら邪神ちゃんが意外に素直でかわいいだけの漫画。

堀泉インコ 愛しの花凛

愛しの花凛 1巻 (まんがタイムKRコミックス)

愛しの花凛 1巻 (まんがタイムKRコミックス)

愛しの花凛 2巻 (まんがタイムKRコミックス)

愛しの花凛 2巻 (まんがタイムKRコミックス)

愛しの花凛 3巻 (まんがタイムKRコミックス)

愛しの花凛 3巻 (まんがタイムKRコミックス)

ただひたすら花凛が可愛いだけの漫画。完結。

青木幸子 茶柱倶楽部

茶柱倶楽部 5 (芳文社コミックス)

茶柱倶楽部 5 (芳文社コミックス)

茶柱倶楽部 6 (芳文社コミックス)

茶柱倶楽部 6 (芳文社コミックス)

茶柱倶楽部 7 (芳文社コミックス)

茶柱倶楽部 7 (芳文社コミックス)

茶柱倶楽部 8 (芳文社コミックス)

茶柱倶楽部 8 (芳文社コミックス)

お茶を飲むと幸せになるお話。すごく良いです。完結。

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その2)

InstaSPINって何でしょう?
www.tij.co.jp

モーター制御ソリューションとのことですが、ずばり何なのかの説明がありません。
宣伝文句はいっぱい書いてあります。
・モーターのデータシートが不要
・センサレス、三相モーター
・簡単

読み進めていくと、3つのソリューションが列挙されています。
・InstaSPIN-MOTION
・InstaSPIN-FOC
・InstaSPIN-BLDC
宣伝文句がもっといっぱい書いてあります。しかし、それがズバリ何なのかは書かれていません。
いろいろ調べていくと少し何なのか自分なりに分かってきたのでまとめます。

InstaSPIN-MOTION

InstaSPIN-MOTIONは、トルク制御、速度制御、位置制御用のソフトウェアです。
三相同期(DCブラシレス)モータまたは三相誘導モータに使えます。
・トルク制御はセンサレス(というか原理的に位置センサは不要)、
・速度制御はセンサレス・センサ(エンコーダ)有り両方対応、
・位置制御はセンサ必要。(今のところ、エンコーダのみ対応。DRV8301-69M-KITのみHallセンサのexample有り。)
LineStream(http://linestream.com/platforms/)という会社のSpinTACという慣性推定技術を利用して、厄介な負荷(イナーシャ)を扱う場合でもモータの制御をPID制御よりも少ないパラメータで簡単にできるようにします。
次に紹介するInstaSPIN-FOCおよび、その基幹技術てあるソフトウェアエンコーダFASTを利用しています。

InstaSPIN-FOC

FOC(フィールドオリエンテッドコントロール)は、三相モータのベクトル制御技術の中の進化した一手法で、一般の用語です。
英語版WikipediaVector control (motor) - Wikipedia)に詳しいです。
三相モータの解析が進み、各相(最近は1相分(1抵抗による電流検出)でも)の電流でモータの位置推定ができるようになり、センサレスでの駆動ができるようになりました。

TiのいうInstaSPIN-FOCとは何かを見ていきますと、
・モーターの種類とパラメータの自動特定とパラメータチューニング
・ソフトウェアエンコーダ(FASTという名前)
・トルク制御用コントローラ、またはPI制御による速度制御用コントローラ
・弱め界磁制御。(最高速を伸ばす)
・強め界磁制御。(最大トルクを伸ばす)
という機能を提供するソフトウェアです。
FASTはソフトウェア技術ではあるのですが、ROMに焼き付けられているので特定のハードウェアTiのマイコンPiccoloシリーズが必要になります。

InstaSPIN-BLDC

Tiのモーター制御学習用kit用の学習のためのおしゃれなGUIソフトウェアのように見えますが、よくわかりません。
DRV8301-HC-C2-KIT、DRV8302-HC-C2-KIT、DRV8312-C2-KIT などで使えるようですが、他のボードで動くかどうかよくわかりません。


まとめると、

トルク制御用:
        InstaSPIN-FOC対応Piccoloマイコンボード製品
        (LAUNCHXL-F28027F, LAUNCHXL-F28069Mなど)
速度制御用:
  PI制御で良い場合:
        InstaSPIN-FOC対応Piccoloマイコンボード製品
        (LAUNCHXL-F28027F, LAUNCHXL-F28069M)
  負荷イナーシャが厄介な場合:
        InstaSPIN-MOTION対応Piccoloマイコンボード製品
        (LAUNCHXL-F28069M)
位置制御用:
  位置センサ必須。
  エンコーダの場合:
        InstaSPIN-MOTION対応Piccoloマイコンボード製品(LAUCHXL-F28069M)
  ホールセンサの場合:
        DRV8301-69M-KIT

ホールセンサのexampleが用意されているのは、2016年9月現在DRV8301-69M-KIT用のみです。
改造すれば他のボードでも使えるよとのことですが、公式掲示板の情報によれば、次期Motorwareにならないと公式対応はしないようです。
10月リリース予定とのことですが、平気で半年ぐらいリリースが伸びるので、あてにしない方が幸せだと思います。

モータドライバの電力段は、BOOSTXLシリーズの中からモータの定格電圧などに応じて決定します。

モーター・ドライブ・ブースタパック、DRV8301 および NexFET™ MOSFET 付き - BOOSTXL-DRV8301 - TI ツール・フォルダ
DRV8305N 三相モーター駆動 BoosterPack 評価モジュール - BOOSTXL-DRV8305EVM - TI ツール・フォルダ

とりあえず何でもいいなら、LAUNCHXL-F28069M+BOOSTXL-DRV8305EVMの組み合わせを買っておけば良さそうです。
誤解があるかもしれませんので、間違えがありましたら是非ご指摘ください。


F28069M LaunchPad: Project 0

余談:オープンソースハードウェアのモータードライバーVESC

即モータードライバーをトルク制御または速度制御用として利用したい場合は、Tiの評価ボードよりこちらの方が出来が良いです。
最新版では、自動パラメータ推定もできるそうです。
[1] VESC: VESC – Open Source ESC | Benjamin's robotics
[2] enertion:【購入先】 http://www.enertionboards.com/electric-skateboard-parts/vesc-standard/
知らない間に新モデルに切り替わってますね。 http://www.enertionboards.com/electric-skateboard-parts/vesc-x-motor-controller/
[3] 入門用チュートリアル: New vesc user? Read This - COMPLETE WALKTROUGH OF THE VESC - E-Board Electronics - Electric Skateboard Builders Forum | Learn How to Build your own E-board

Tiの同じシリーズのFETドライバやIRのFETなど最先端のデバイスを組み合わせて電力段を小さく作っています。
また、多くのインターフェースを提供していて、シリアル、CAN、PPM、USBなどが使えます。
また、エンコーダとホールセンサー共に対応しています。
価格は、1万5千円ほどで、入手は今のところ海外から輸入するか自分で基板を作るしかなさそうです。
Rtやヴィストンなどで、扱ってくれるようにならないかなー。


今日の女騎士漫画

「くっ…殺せ!」を著者が書きたいがための人気ジャンルですね。中身はどうでもいいんです。
女騎士さん、ジャスコ行こうよ 2 (MFコミックス アライブシリーズ)
女騎士、経理になる。 (2) 【電子限定おまけ付き】 (バーズコミックス)
女騎士さまは屈しない!: 2 (REXコミックス)
姫騎士さんとオーク1 (ヴァルキリーコミックス)

特性の分からない3相DCブラシレスモーターをソフトウェアエンコーダを搭載したTiのマイコンボードLAUNCHXL-F28069MとモータドライバBOOSTXL-DRV8305EVMを使って動かす(その1)

超薄型高性能100W級の3相DCブラシレスモーターを入手したので、これを色々な用途に活用したいのですが細かな仕様書がありません。
モータードライバーも手元には大きなものしかなく、ロボットには使いにくい状態です。
また、研究室には15年前のオシロスコープなどの簡単な設備しかありません。
これを何とかお手軽に使う方法を調べてまとめて行きたいと思います。

1.製品調査

既製品

三相DCブラシレスモーター用ドライバー製品はいくつか出ているのですが、いずれも大きい、重い、値段が高い、という壁を突破できず不採用です。
また、入力電圧の仕様もAC100~230V前提のものばかりです。

STマイクロ P-NUCLEOシリーズ

次に調べたのが最近出た雑誌です。インターフェース5月号に半導体メーカーの販売するモータードライバー評価キット一覧が記載されていました。

記事の著者の一押しはSTマイクロのP-NUCLEO-IHM001をはじめとする一連のモータードライバー評価キットのようで、記事でもかなりの紙面を割いて紹介されていました。
なので、これを購入してみたのですが、色々調べていくと気になる点が次から次へと出てきます。(さすがイタリア製)
問題点を列挙すると、

  • 無改造では電源電圧24Vで使えない。基板上のレギュレータが15V耐圧だそうです。
  • 弱め界磁制御が使えない。無償版の開発環境では、メモリの容量が足らないのだそうです。なんだそりゃ。
  • 大出力用のものは入手製が悪い。IHM008を注文したのですが、納期に2ヶ月かかるそうです。(キャンセルしたい、注文しちゃったよ。。。結果、ディスコンでキャンセルされました.)

こじゃれた内蔵のベクトル制御ソフトウェアやGUIはとても魅力的だし、Hallセンサなどもすっと繋げる仕様で勉強になりそうで良さそうなのですが、いまいち製品の信頼性が足らない感じです。
他のを試してだめだったら戻ってくることにして、とりあえず別の可能性を探ることにします。


中出力用モータドライバの本命が来ましたね。
http://www.st.com/ja/evaluation-tools/steval-spin3201.htmlwww.st.com

東芝TMPM375

同じ雑誌の後ろのほうで東芝のベクトル制御エンジンがハードウェア実装されたマイコンが紹介されていました。
製品設計をするわけではないのでコストはそこまで厳しくないため、電力段の設計はIPMなどで手抜きをすれば、簡単に自前のモータドライバーが作れそうです。
でも、情報少ないし入手製も悪いので、腰をすえなければ扱えません。
また、今回作りたいのは低電圧モータ用ドライバーなのですが、IPMは高耐圧用が普通でFETのオン抵抗が高くなってしまいます。
また、IGBTの代わりにMOS-FETを使ったIPMも、ROHMや三菱から最近出てきたのですが、数が少なく価格も高いためにまだ扱いづらい状況です。
なので、これを使って自作ドライバーを作ってみたい憧れはありますが、見送りです。

TI InstaSPIN

オーディオ用デジタルアンプでTIの製品を何度か扱い、電力デバイスの性能の高さと機能の充実は知っていたので、良いモータードライバがあるのではないかと思い調べてみました。
すると、ちょうどぴったりの製品が見つかりました。

BOOSTXL-DRV8305EVM
www.ti.com

です。
WEBページには、なんか凄そうな文句がいっぱい並んでいますが、ドキュメントが多すぎて逆に良く分かりません。
ちょっと時間を掛けて調べていきましょう。

今日のファンタジーロールプレイングゲームみたいな漫画

めいびい 結婚指輪物語


結婚指輪物語 1巻 (デジタル版ビッグガンガンコミックス)

結婚指輪物語 2巻 (デジタル版ビッグガンガンコミックス)

結婚指輪物語 3巻 (デジタル版ビッグガンガンコミックス)
かつて神だった獣たちへ、も良いのですが、こちらの方が少し明るい話。ただ、ページ長と話の展開がぴったりはまり過ぎて、少し先の展開が読めてしまう。

もち 魔女の下僕と魔王のツノ


魔女の下僕と魔王のツノ 1巻 (デジタル版ガンガンコミックス)

魔女の下僕と魔王のツノ 2巻 (デジタル版ガンガンコミックス)

魔女の下僕と魔王のツノ 3巻 (デジタル版ガンガンコミックス)

魔女の下僕と魔王のツノ(4) (ガンガンコミックス)

魔女の下僕と魔王のツノ (5) (ガンガンコミックス)

おこぼれ姫と円卓の騎士


おこぼれ姫と円卓の騎士(1) (ARIAコミックス)

おこぼれ姫と円卓の騎士(2) (ARIAコミックス)

おこぼれ姫と円卓の騎士(3) (ARIAコミックス)
原作は小説で、漫画は3巻で止まっている模様。少女漫画の枠。

このジャンルの漫画は、他にもいっ~~~ぱいあります。

勇者が死んだ!(6) (裏少年サンデーコミックス)

Windows10で、まともに使える音楽用アップサンプリングコンバータ

Hi-Resフォーマットが人気を集めていて、DAコンバータを中心にPCオーディオの性能はとても高くなっています。
しかしながら、リーズナブルに入手可能な音源はいまだにCDの16ビット44.1kHzが現役です。
ネットワーク越しに入手できる音源も、最近は増えつつあるというものの有名どころや大御所ばかりで欲しいものが手に入りません。
また、昔から集めてきた音楽データを再リッピングするのも手間です。
簡単にそこそこの品質でアップサンプリングしてくれるソフトウェアを探したいと思います。

結論は、

音楽プレイヤーfoobar2000と、SoX Resamplerを使う。

です。たとえば、Apple Losslessフォーマットの音楽ファイルをflac形式に変換してファイルとして保存するために使います。音楽再生は好きなプレイヤーを使ってください。
コンバータは他にも一杯あるのですが、入力形式がwavとmp3フォーマット限定とか、使い勝手の悪いものが多く面倒くさくてダメです。視覚で確認できる機能が付いたResampler-V[5]というのも気になりますが、とりあえずベーシックな方を試します。

1. foobar200とプラグインのインストール

3つダウンロードしてインストールします。

foobar2000本体
Download foobar2000

・Free Encoder Pack
foobar2000: Free Encoder Pack

・foo_dsp_resampler_0.8.3
A new resampler DSP for foobar2000

上二つは普通にインストーラでインストールするだけです。
最後のはfoo_dsp_resampler.dllを、C:\Program Files (x86)\foobar2000\componentsにコピーします。管理者権限が必要になります。
詳細は[1]が参考になります。

2. SoXの設定

foobar2000を開いて、変換したいファイルを右クリックして出てくるメニューの中から、convertを選びます。
いくつかの項目の中から、一番下の...を選びます。
これはCD音源を96kHz,24ビットDAコンバータ用に、可逆フォーマットのflacファイルを作る設定の例で説明します。

Output File:
FLACを選択し、EditボタンでCompression Levelを好きに選びます。
Output bit depthを24bitにします。ディザは無しのままにして、Backボタンで戻ります。

Processing:
Resampler(SoX)を選択し、Active DSPsに入れます。
Configure selectedを選び、Target samplerateを88200Hz, QualityをBestにします。好みで、96000Hzにしても良いかも。

他の設定も好みで変えて良いですが、分からなければそのままが良いです。

設定を終えたら、Save Presetsに保存しておきます。
で、Convertで完了。

3. あとは楽しむ。

QNAPやAsustorのNASの一部は直接USB-DACをつなげられるようになっているので、大量のオーディオファイルを持っているときには便利です。

[1] foobar2000 SoX Resampler導入方法 | Phile-webコミュニティ
[2] SoX Resamplerの解説を少々(1) : 重い荷を背負っては遠くへ行けない
[3] 19:00のニュース (北海道版) foobar2000のSoX Resamplerの設定
[4] ERI foobar2000八面六臂
[5] Resampler-V

今日の漫画賞期待の漫画

山田胡瓜、Aiの遺伝子
もう今年の漫画賞当確だと思います。類似のモチーフとして名作のイブの時間があります。ロボット(アンドロイド)好きの人は必読です。

29歳独身中堅冒険者の日常
最近特に人気のあるジャンルのRPGファンタジーの漫画の一つです。やさしい雰囲気が良いです。

少女Aの悲劇
まだ3話ぐらいしか公開されていませんが、3話まではメーターを振り切った面白さなので期待ができます。
www.mangabox.me

ファイル名とフォルダ名を比較して、ファイルをフォルダの中に移動するスクリプトを吐くPythonプログラム

大量の計測データや写真、自炊したドキュメント、撮りためた動画などを、ファイル名を基に自動でフォルダに振り分けて整理してくれるプログラムがあるといろいろ便利です。

例えば、ABC, CDE, FGHというフォルダがあったとき、同じ階層にあるファイルのファイル名にフォルダ名が含まれていれば、それをフォルダ中に移動するスクリプトファイルをfileKeeper.batという名前で出力します。
fileKeeper.batをダブルクリックで実行すれば、移動が完了します。

> dir
ABC
CDE
FGH
ABC01.pdf
ABC02.pdf
ANCA.pdf
CDE.txt
01_FGH.mov

のような場合には、

move /-Y ABC01.pdf ABC
move /-Y ABC02.pdf ABC
move /-Y CDE.txt CDE
move /-Y 01_FGH.mov FGH

のような内容のfileKeeper.batファイルを出力します。
余り短いファイル名には引っかからないように、if len(k) > 3: で制限を書けています。

fileKeeper.py

# coding: utf-8

import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print 'defaultencoding:', sys.getdefaultencoding()

def cmp_len(s1, s2):
	return cmp(len(s1), len(s2))

if __name__ == "__main__":
	print(os.getcwd())

	DirList = []
	FileList = []
	for i in os.listdir(os.getcwd()):
		if os.path.isdir(i):
			DirList.append(i)
			print i
		elif os.path.isfile(i):
			FileList.append(i)

	# フォルダ名が長い順に調べるように、文字列長でソート
	DirList.sort(cmp=cmp_len, reverse=True)

	f = open("fileKeeper.bat", "w")

	for j in FileList:
		for i in DirList:
			# フォルダ名から特定の文字や文字列を無視
			k = i.replace('★','').replace('☆','').replace('●','').replace('○','')
			# あまりに短いフォルダ名は無視
			if len(k) > 3:
				if k in j:
					print j + " move to " + i
					f.write("move /-Y \"" + j + "\" \"" + i + "\"\n")
					break

	print "finished."

環境はWindows10上のpython2.7でテストしています。
なお、このプログラムでファイルが消えたなどの不具合が起きても、一切責任とれませんのでご注意ください。

今日の、2016年夏、アニメ化期待の漫画コミックTOP3!

1.あそびあそばせ


あそびあそばせ 2 (ヤングアニマルコミックス)

あそびあそばせ 2 (ヤングアニマルコミックス)


あそびあそばせ 1 (ジェッツコミックス)

あそびあそばせ 1 (ジェッツコミックス)

2. 天野めぐみはスキだらけ!

天野めぐみはスキだらけ! 3 (少年サンデーコミックス)

天野めぐみはスキだらけ! 3 (少年サンデーコミックス)


天野めぐみはスキだらけ! 2 (少年サンデーコミックス)

天野めぐみはスキだらけ! 2 (少年サンデーコミックス)


3. 月と指先の間

mcp4725のEEPROMにwiringPiを通して書き込む方法

wiringPi-mcp4725ライブラリを介してEEPROMの書き込みをしようとして頑張ってみても上手くいかず、別の方法を調べてみたらこちらに書いてありました。
電源オンで出力50%が出てる、なんていう事態を避けるために、とりあえずEEPROMの値を0にしておきたい時のサンプルがこちらです。
60番と61番に2つのDACを繋いでいる想定です。

MCP4725 DAC with RPi « seafoid.org

#include <stdio.h>
#include <unistd.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>

void setDACVoltage(int deviceid, int voltage, int writeToEEPROM)
{
	int fd = wiringPiI2CSetup(deviceid);

	voltage = (voltage > 4095) ? 4095 : voltage;
	voltage = (voltage >> 4);

	if(writeToEEPROM)
		wiringPiI2CWriteReg16(fd, 0b01100000, voltage);
	else
		wiringPiI2CWriteReg16(fd, 0b01000000, voltage);

	close(fd);
}

int main(int argc, char* argv[])
{
	wiringPiSetupGpio();
	setDACVoltage(0x60, 0, 1);
	setDACVoltage(0x61, 0, 1);
	return 0;
}

wiringPi-mcp4725を使わずに、こっちでベタに書いた方がすっきり綺麗かも。

今日のシャワー

シャワー苦手ですが、こんなの使うと楽しくなりそう。

(メモ)Linuxで接続したjoystickが抜けてしまったことを検出する方法

Linux上のプログラミングでjoystickの情報を取ることは、joystick-apiを使って大体全部簡単にできますが、ひとつだけ、取り外されたことだけは通知してくれません。
ゲーム用途なら途中で抜けてしまっても、たいした問題にはならないと思いますが、ロボットやドローンの制御をしている際にコントローラが抜けてしまうと、暴走の原因にもなりかねません。
そこで、ちゃんとコントローラが刺さっているかどうかをチェックしたい、という需要があると思います。
ここでは、その方法のメモをまとめます。

結論としては、時々sys/stat関数を使ってデバイスの存在を確認する、です。

#include <sys/stat.h>
#define JOY_DEV "/dev/input/js0"

int joy_connection_check()
{
  struct stat buf;
  int ret = stat(JOY_DEV, &buf);

  return ret; // 0: connected, -1: disconnected
}
Linuxでjoystickを使えるようにするまでの設定

簡単ですが、忘れてしまうのでメモ。

> sudo apt-get install joystick
> sudo apt-get install jstest-gtk
> jstest-gtk