Intel GalileoのGPIOをpythonアプリから操作してみる(基礎)の続きです。GalileoのGPIOの基礎知識は、プログラムのDebugに必要です。
GPOIを便利に使うためのラッパーライブラリー
やるべきことの内容的を理解すれば簡単な操作ですが、毎回同じ操作をプログラム内で書くのも気が引けるので、ライブラリーがないか調べてみました。
Galileoには、Node.jsとPythonが既に実装されているので、これら二つのプログラミング言語について掲載します。
Node.js:
- galileo-gpio (Lチカでつまずいて、JSが得意でない僕は先を断念)
- virginia-io (未だ動作テストしていません)
Python:
Intelさん正式版のGPIOの仕様書の参照先を教えてください。jhottaの自力修正版に反映したいと思います〜。
Pythonスクリプトの例
僕は、Node.jsでのプログラミングは得意ではないので先に紹介したライブラリーを使いこなせていません。従って、ここからはpyGalileoを使って進めることにします。
1. 準備
これから書いていくプログラムを管理するディレクトリを作りし、pyGalileoをDLし、解凍しておきます。
1 2 3 4 |
|
Pythonのライブラリーとしてimportする際に、-master
は不要なので、ディレクトリ名前を変更しておきます。
1
|
|
2. 外部からコールできるpyGalileoの関数
次にpyGalileoが準備している関数を紹介します。
pinMide(pin, direction)
digitalピンの設定を書き込むファイルの準備と、出力又は入力でのピン利用を設定する。
digitalWrite(pin, value)
digitalピンのHIGH,LOW設定。文字列”HIGH”,“LOW”をvalueに設定する。
digitalRead(pin)
digitalピンのIGH,LOWを読み込む。
analogWrite(pin, value)
digitalピンのPWM出力を使って、出力を制御する。0~255のintをvalueに設定する。
analogRead(pin)
analogピンの値を読み込む。
delay(msTime)
ミリ秒の遅延設定する。
micros()
マイクロ秒単位で現在時刻を表示する。
millis()
ミリ秒単位で現在時刻を表示する。
3. Pythonで書くGPIO経由のLチカ(Digital input & LED)
D4に接続したボタンスイッチで、D5に接続したLEDを点灯する例です。ボタンスイッチを押すと、LEDが点灯します。
プログラムを記述するためのファイルを準備します。
1 2 |
|
digital.pyの内容は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
実行してみます。
1
|
|
4. Pythonで書くGPIO経由のLチカ(Analog input & LED)
A2に接続したボリューム抵抗で、D5に接続したLEDの点灯間隔を変化させる例です。ボユームを回すと、LEDの点灯間隔が変化します。
プログラムを記述するためのファイルを準備します。
1 2 |
|
analog.pyの内容は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
実行してみます。
1
|
|
5. Pythonで書くGPIO経由のPWM
D5に接続したLEDの照度を、duty_cycle(仕事率)を変化させることで変化させる例です。LEDが照度が上り/下がる状態を繰り返します。
プログラムを記述するためのファイルを準備します。
1 2 |
|
pwm.pyの内容は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
実行してみます。
1
|
|
まとめ
一般的なプログラミング言語によるGalileoのGPIOの操作は、IDEで開発するのと大差がないのが提示できたと思います。
ポストの最初にも書いたようにGalileoのメリットは、既存のLinux資産を活かしGPIOをどのように使っていくかだと思います。 Linuxベースの開発経験を持ったエンジニアもGPIOを操作して、IoTの世界で僕らの未来を作るような開発をしてもらえると幸いです。