ミルフィーユ(mille-feuille)基板を使った試作から小ロット量産まで、自動生成された配線情報のファイルを入れ替えるだけで同じプログラムがそのまま動くという特徴があります。
実際にミルフィーユ基板ではプログラムをどのように書くのかを説明します。
プログラムの書き方
ミルフィーユを組み立てた後、プログラムはどのように書くのか。
一番簡単なAD2chデバイスボードを使って説明します。
#!/usr/bin/python
from mil import mil
from mil import milMod
from mil import p
from mil import AD2ch
import time
if __name__=='__main__':
try:
mil.init()
modA = milMod.milMod(AD2ch.getInfo(0)) #connector number 0
while(1):
modA.connect()
returnData = AD2ch.read(modA,0)
print "AD 0ch = ",returnData
returnData = AD2ch.read(modA,1)
print "AD 1ch = ",returnData
modA.disconnect()
time.sleep(1)
except KeyboardInterrupt:
print("detect key interrupt [ctrl]+ [C] \n")
mil.cleanup()
AD2ch.cleanup()
1、まずはお決まりの作業
はじめに必要なライブラリをimportします。ライブラリは後々公開します。
from mil import mil
from mil import milMod
from mil import p
デバイス毎のライブラリをインポート
from mil import AD2ch
その他、必要ならインポート
import time
mainを定義
if __name__=='__main__':
try~except は例外処理が起きたときの処理を入れます。
具体的にはctrl + c で強制的にプログラムを停止させた以降に I/O の状態をcleanupしています。cleanupすることを推奨します。
try:
...
except KeyboardInterrupt:
2、初期化とインスタンス生成
初期化でI/Oを基本設定します。
mil.init()
インスタンスの生成
modA = milMod.milMod(AD2ch.getInfo(0))
このインスタンスにはAD2chデバイスの情報(デバイスアドレス、デバイスボードの配線の情報など)が紐づけられます。インスタンス名は任意です。
ミルフィーユのベースボードには4つのコネクタが並んでいます。その中のどのコネクタにつないだかを指定してください。
最大4つまで同じ種類のデバイスボードをつなげることができます。I2Cデバイスのみ、I2Cのアドレスがメーカで決められているため、1つしか使用できないデバイスボードもあります。
3、自動配線とデバイスボードの動作
デバイスボードの配線を自動的に行います。通常、手で配線する作業を自動化しています。
modA.connect()
接続を外すときは
modA.disconnect()
引数にインスタンスを含めてライブラリの関数に渡すことで、配線の情報を把握し、具体的にどのI/Oを動かせばデバイスボードが動くのかを自動的に判断します。
returnData = AD2ch.read(modA,0)
ここではADの 0ch 目のデータを取得しています。
4、回路図自動生成後のファームウェア
プログラムを書き終え、試作が完了したら回路図を生成しましょう。
生成のやり方は以前の記事をご覧ください。
http://qiita.com/my_mil_info/items/ac484c96c867c1b3e702
回路図を自動生成した際、ファームウェアも回路図に合わせて自動生成されます。
このファームウェアは「配線に関するファームウェア(wiringdata.py)」で、インスタンスを生成するときに参照する、配線に関するファイルになります。これを自動生成された同じ名前のファームウェア(wiringdata.py)と差し替えると、ミルフィーユを使って試作したプログラムがそのまま自動生成された回路でも使用できます。