Arduino Uno Qの利用 ⑤ 入門編 従来のArduinoと互換性を保ち新しい機能を追加されたArduino Uno Q<Bridgeを利用したArduino Uno Q用のアプリを作る>

 前回、Python側のプログラムを新しく作成しテストしました。今回は、Python側とArduino側で連携する処理を追加します。

 連携内容は、Python側でカウントアップした数値をArduino側でシリアルモニタに表示します。併せて、Arduino側でPython側から送られてきた数値の値が偶数のときはLEDを消灯し、奇数のときは点灯するようにします。
  LEDは当面オンボードのLED_BUILTINを対象とします。


前回のプログラムをコピーし新しいプログラムを準備する


 前回作成したプログラムをコピーして新しい名前を付け、そのプログラムを追加修正します。
 My Appsを表示し前回作成したapplab010のエリアの部分をマウスの右ボタンでクリックすると、次に示すようにプログラムに対する処理のリストが表示されます。
  

  • Rename  名称変更
  • Duplicate コピーを作成
  • Export App 該当のプログラム全体を任意のフォルダに書き出す
  • Run As Startup プログラムをデフォルトのスタートアップに設定
  • Delete  削除

 ここで、Duplicateを選択し、プログラムをコピーします。Duplicateを選択すると、次に示すようにプログラム名の欄に「copy of コピー元のプログラム名」がデフォルト名として表示されます。これを修正して、新しく適切な名称を設定します。


  

 新しい名前をapplab020と設定し「Create new」を選択すると、プログラムがコピーされます。説明文のREADME.mdは、コピー元の名前を残しapplab010のままとなっています。


    Writeを選択すると入力できるようになるので、プログラム名をapplab020に設定します。アイコンも変更することができます。

 アイコンをマウスでクリックすると、アイコンのリストが表示されます。候補の中から適切なアイコンをクリックするとアイコンが更新されます。


Pythonのプログラムに追加する項目

  arduino.app_utilsから、Bridgeライブラリを読み込みます。そのため、リストの3行目のfrom arduino.app_utils import Appに「,Bridge」を追加します。

 次に、13行目にBridgeライブラリを利用してArduinoのスケッチからPython との連携のためのCall関数を定義します。文字列のget_nnx2が関数名で、スケッチ側のBridge.callの指定と合わせます。nnは引数を表します。スケッチ側の関数はこの文の実行時に起動されます。
  

スケッチ側の処理


 前回はスケッチは枠組みだけで何も記述していませんでした。今回はPython側でカウントアップしている値をスケッチ側で取得し、値が偶数なら消灯、奇数なら点灯との処理を行いカウンタの値をシリアルモニタに表示します

 1行目の#include "Arduino_RouterBridge.h"はライブラリの読み込みを指定しています。

 2行目でPython側から受け取るカウンタの値を格納する変数nnの定義を行っています。初期化はしなくてもかまいません。


 初期化のsetup()関数内で、ディジタル・ポートの出力設定、Bridgeライブラリの初期化、
7行目のBridge.provide("get_nnx2",get_nn); で橋渡しを行う関数の指定を行います。

 文字列はPython 側で指定したものと合わせて、2番目の引数はスケッチ側で実際に使用する関数名を指定します。その後モニタを開始して初期化処理は終わります。

 loop()関数は何もせず繰り返すだけで、Python側のタイミングで定期的に関数get_nn()が起動してnn値をシリアルモニタに表示し、nnが偶数ならLEDを消灯、奇数なら点灯の処理を行います。 


 

 奇数か偶数かの確認は、nnを2で除算し余りが1か0で判断します。整数の除算の余りを算出する演算子は となります。if (0==(nn%2))で一致したら偶数、等しくない場合は奇数となります。


実行時のPython側のコンソールの表示

 実行時のPython側のコンソールの様子を示します。文字列の表示では漢字の表示も可能です。コンソールの表題のpythonの表示をクリックすると、「最初のテスト」に続いてカウンタの値が表示されます。

スケッチ側のコンソール表示

 スケッチ側では、シリアルの表示とPython側と同じカウンタの値が表示されます。

 

 Bridgeライブラリを利用してPython側からスケッチ側にカウンタの値を渡すことができました。次からは、サンプル・プログラムを確認しながらBrickの利用方法を見ていきます。


 2026年の5月中旬に0.7から08にApp Labのバージョンアップがありました。0.7ではシリアルのモニタの表示が正しく表示されませんでしたが、0.8では上に示したように指定通りの表示となっています。0.7ではそのほかに場合によってはstopボタンで処理が完了しないなど不安定な動作がありましたが、0.8では少し使いやすくなっています。


神崎 康宏

前へ

Arduino Uno Qの利用 ④ 入門編 従来のArduinoと互換性を保ち新しい機能を追加されたArduino Uno Q<Arduino Uno Q用の新規アプリを作る>