ピンマッピングと命名

Zerynthは、マルチボードプログラミングを可能にします。

ピン名を命名できます。Zerynthでは、広く普及しているArduinoに似た方法でピンを使えます。例えばデジタルピンDxと記載でき、xはボード上の使用可能な物理ピンの番号です。(MCUのピン番号ではありません)

同様に、アナログピンAxとなります。

Zerynthではピンの属性について上記のピン指定に追加されます。例えば、PWMをピンD3で使用する場合D3.PWMとします。

DIOは、デジタルピンのデフォルト属性であるDxADCは、アナログ端子のデフォルトですAx

さらに、digitalWriteおよびdigitalReadはGPIOに状態を書き込み、又は読み込みをするコマンドですが、これらは属性の指定を必要とせず、常にピン名のみを指定すれば使えます。

いくつかの例を見てみましょう:

Zerynth Arduino/Wiring Note
x=digitalRead(D1) x=digitalRead(D1)
x=digitalRead(A1) x=digitalRead(A1) Use Ax pin as Dx pin
x=analogRead(A1) x=analogRead(A1)
x=analogRead(D1.ADC) x=analogRead(Ax) Use of ADC on Dx pin
digitalWrite(D1,HIGH) digitalWrite(D1,HIGH)
digitalWrite(A1,HIGH) digitalWrite(A1,HIGH) Use of Ax pin as Dx pin
pwm.write(D1.PWM,period,duty) analogWrite(D1, value)
pwm.write(A1.PWM,period,duty) analogWrite(D1, value) Use of Ax as PWM pin
x=icu.capture(D1.ICU,samples,time)
x=icu.capture(A1.ICU,samples,time)
can.init(D30.CANRX, D31.CANTX) Not yet released
spi.init(D11.MOSI, D12.MISO, D13.SCK) Not yet released
i2c.init(D14.SDA,D15.SCL) Not yet released

 

Zerynthでは名前は常に大文字です。以下のPIN名はZerynth組み込みコマンドに含まれています:

  • Pin Names:
    • D0 to D127 representing the names of digital pins.
    • A0 to A31 representing the names of analog pins.
    • LED0 to LED7 representing the names of the on-board installed LEDs.
    • BTN0 to BTN3 representing the names of the on-board installed buttons.
  • Pin Attributes (Dx.YYY):
    • MISO, MOSI, SCK representing the attributes of SPI pins.
    • SCL, SDA representing the attributes of I2C pins.
    • RX, TX representing the attributes of Serial pins.
    • DAC representing the attributes of DAC pins.
    • CANTXCANRX representing the attributes of CAN pins.
    • PWM representing the attributes of PWM pins.
    • ICU representing the attributes of ICU (input capture unit) pins.

 

この使い方(名前の付け方、属性の付け方)は、Zerynthコンパイラがコンパイルする時にピンの間違った使い方をチェックするために必要です。

ただし、このピンの命名方法はZerynthの提供する高度な機能であり、最もよく使われるアナログおよびデジタルの基本的な使い方では、自動的にZerynthがピンの正しい方法を設定します。

また、全てZerynthの各初期化関数(can.init()spi.init()i2c.init())などでは引数として(CAN0I2C0SPI0SERIAL0)のようにショートネームを使うことができます。例えば、デフォルトのパラメータでシリアルポート0を開く場合にはstreams.serial()と記述でき、シリアルポート1を開く場合にはstreams.serial(SERIAL1)と記述します。

wpmaster

Flip & Clickボードで始めるZerynthプログラミングガイド

Zerynthは、Pythonでマイコンのファームウエア開発ができるプラットフォームです。Arduinoライクな言語体系や記述方法ができます。またZerynthではPyhtonだでなくC言語を併用したハイブリッド開発も行えます。

Zerynthにはリアルタイムオペレーティングシステム(RTOS)が内蔵されており、必要に応じてハードウエアの機能を利用できます。Flip&ClickはArduino DUEとして認識され、本体にはArduino UNOのピンを持つユニークな開発ボードです。さらに反対側にはmikroBUSが4スロット搭載されており各種クリックボードを装着して機能を拡張できます。この Flip&Click ボードの開発言語としてZeryhthを使うことができます。

PythonとCのハイブリッド言語で Flip&Click の開発を始めましょう。開発環境は無料で公開されておりすぐにダウンロードして使えます。このページでは導入方法から簡単なプログラムチュートリアルを掲載しています。

本ページと併せて、ZerynthのDOCページもお読み下さい。

Flip & Click

■ダウンロードとインストール

下記から最新版のZerynthスタジオをダウンロードしてインストールしてください。インストールする際にはオンラインで必要なファイルをダウンロードしますので、インターネットに接続された環境で行って下さい。

https://www.zerynth.com/zerynth-studio/

インストールしたら起動してください。

■最初の設定

次の方法で設定をして使用を開始できます。

1.まず本体をパソコンと接続します。本体のプログラミング用USBポート(ACアダプタ用ジャックの隣にあるmicroUSBポート)とパソコンをUSBケーブルで接続してください。

この画像には alt 属性が指定されておらず、ファイル名は image-1.png です

2.デバイスドライバーは自動的にインストールされます。(Windows10) COMポートが作られます。COMポート番号はWindowsのデバイスマネージャー内にある”ポート(COMとLPT)”より確認できます。名称は”Arduino Due Programming Port (COMx)”となります。

3.zerynthウインドウ上部にある”Device:”プルダウンには現在”No device..”と表示されています。ここをクリックしてプルダウンを表示し、”Flip & Click SAM3X/Arduino Due…”を選択します。

4.次の画面では、”Flip & Click SAM3X”を選択して”Disambiguate”をクリックします。

5.再度先頭の画面に戻ります。”Device”プルダウンの表示が”
“Flip & Click SAM3X”となっていることを確認してください。続いて、”Register/CreateVM/Virtualize”ボタンをクリックします。下記の図を参考にボタンを押してください。

この画像には alt 属性が指定されておらず、ファイル名は image-5.png です

6.ダイアログが表示されます。”Register”ボタンを押してください。

7.登録が始まり、ボードにファームウエアが自動的に書き込まれます。約1分~3分程度かかります。ボードにファームウエアが書き込まれると、ボードの”L” LED(黄)が高速に点滅します。これを確認してください。

8.続いて再度トップ画面に戻ったら、再度
“Register/CreateVM/Virtualize”ボタンをクリックします。 すると今度は”Create”というボタンが表示されますので、”Create”ボタンを押してください。数秒経過すると次のようなダイアログが表示されます。

9.プランが表示されます。上段はOSがFreeRTOS、下段がChibi OSです。現在は上段のFreeRTOSのみ有効です。ここでは”Standard VM (Pxx)”を選択して”Create”ボタンを押してください。

10.再度ダイアログが表示されますので、今度は”Virtulize”ボタンを押してください。次の画面では、”Flip & Click SAM3X r2.x.x”を選択して
“Virtulize”ボタンを押してください。 再度ファームウエアが書き込まれますので数分お待ちください。

書き込みが終わると先ほどまで点滅していたLEDが消灯します。これで本体が使えるようになりました。

■最初のプログラム ~サンプルから引用する~

さてでは、実際に簡単なプログラムをコンパイルして書き込み、実行までを体験してみましょう。もちろん1からプログラムを自分で記述することもできますが、Zerynthではあらかじめ例が用意されており、それらを活用することで簡単に開発を進められます。

また多くのライブラリもありライブラリを活用すればとても高度なプログラムがとても簡単に作れます。このあたりの使い勝手はArduinoと似ており親しみやすい使い方ができます。

最初にボードのmikroBUSサイド(レジスト色が白い面)に実装されている4つのLEDを点滅されるプログラムを作ってみましょう。例から引用しますが、完成したら点滅周期を変えるなどいろいろと実験してみてください。

1.Zerynth Studioの左側に縦に並んでいるツールバーを確認してください。ここにある”Examples”ボタンを押します。

2.右側にツリー構造の一覧が表示されますので、この中から”First steps”ツリーを展開します。さらに”Basics”を開き、その中にある”Blink”をクリックしてみてください。プログラミング例が表示されます。

3.ではこれを読み込んでみましょう。”Clone”ボタンを押してください。

4.ファイル名や保存先、Githubのアカウントがあればオンラインで管理が可能です。ここでは、Titleに適当に”LED Blink Test”などという名前を付けてパソコンのローカルフォルダに保存してください。”Description”は詳細という意味で、簡単な説明を書くときに使いますが、必要なければ空欄でかまいません。

準備がてきたら”Create”ボタンを押します。

5.何も変化がないように見えますが、今まであったツリーのところが”Project View”に変わっていることが確認できます。ここには今回作成したプロジェクトに含まれるファイルの一覧が表示されています。

Zerynthのソースプログラムのメインは、”main.py”ファイルとなります。このファイルが中核なのでまずはこれをダブルクリックしてみてください。main.pyのソースプログラムが開きました。

6.このままでは動作しないため、LEDの定義を変更していきます。まず下図をご確認ください。

LEDは4つあり、D39~D42までになっています。これをプログラム内で定義していきます。次のようにプログラムを書き換えてください。

内容は簡単です。最初に LEDA~Dの変数にピン番号を割り当てています。次にピンモードをそれぞれ出力ピンとしています。

while True: は永久ループです。whileは評価式が真(True)の時繰り返し実行されます。

続いてピンに状態を出力します。引数にHIGHを指定すればポートがハイに、LOWならばGNDレベルとなります。これをsleep(1000)として1秒間隔で繰り返しています。sleep関数で指定する秒数はミリ秒単位です。

■ビルドと書き込みとちょっと改造

では早速、ビルドして書き込み、実行してみましょう。

ビルドと書き込みはボタン一発です。Uplinkボタンを1回押してください。

プログラムがコンパイルされてエラーがなければボードにデータが書き込まれます。書き込まれたプログラムはすぐにボード上で動作を開始します。

いかがでしょうか。ボード上のLEDが4つ同時に点滅していることを確認してください。ここで少しプログラムを改造して1つずつ繰り返し点滅をするプログラムにしてみましょう。次のようにプログラムをし直してみてください。


同様にしてUplinkをして書き込んでみましょう。LEDが1つずと100ミリ秒間隔で点滅することを確認してください。

LED_BLINK変数に値を代入して39~42までインクリメントしています。ifステートメントによって42未満の場合にはインクリメントして、それ以上になった場合には39に値を戻します。if文の使い方を体験してください。

■そのほかの資料等について

Zerynthを活用するための便利なサンプルプログラム集が下記にあります。ADコンバーターや各種シリアル通信など様々な例が紹介されていますので、ぜひご参考にしてください。

https://docs.zerynth.com/latest/official/core.zerynth.stdlib/examples/examples.html

また、各種ライブラリなどの説明は下記にあります。併せてご覧ください。

https://docs.zerynth.com/latest/official/core.zerynth.stdlib/docs/index.html#

当方ではmikroBUSに装着できる各種クリックボードを拡充予定です。ぜひいろいろなモジュールを装着してFlip & Clickボードをどんどん拡張させてください。音声認識モジュールやBluetoothモジュールなど各種販売中です。

http://www.microtechnica-shop.jp/shopbrand/ct47/

wpmaster