今回は、PythonでmBot2プログラミングシリーズ(CyberPi編)の第2回です。
ここでは、CyberPiのディスプレイ制御について紹介します。
CyberPiディスプレイの基本から、テキストやグラフの表示に関するプログラムを作成していきます。
全講座の一覧はこちら
目標
- CyberPiのディスプレイの基本を理解する。
 - ディスプレイに関するAPIを理解する。
 - ディスプレイの制御プログラムを作成する。
 
Python環境(mBlock Python editor)の立ち上げ
ここでは、『mBlock Python editor』を使って、Pythonコードでプログラミングしていきます。
事前にPython環境を導入しておいてください。
環境の導入に関しては、次の記事を参考にしてください。
CyberPiとディスプレイ
CyberPiは、mBot2に搭載された多機能モジュールで、ディスプレイ、センサー、マイク、スピーカーなどが一体となっています。
これにより、音の再生や制御、ディスプレイ表示、センサー入力の処理など、さまざまな機能を実現することができます。
ディスプレイはCyberPiの中央部分にあり、1.89インチのフルカラーディスプレイです。
テキストや画像の表示、グラフの描画、ゲームのデザイン、アプリの作成などができます。

『ディスプレイ』に関するAPIは、大きく次の4つに分類できます。
- テキストを表示する
 - グラフを表示する
 - 表を表示する
 - ディスプレイの調整
 
それぞれ解説していきます。
APIとは
API(Application Programming Interface)は、ソフトウェアやハードウェアが外部のプログラムとやり取りをするためのインターフェース(接点)です。
簡単に言うと、『決められたルールに従って機能を利用するための仕組み』です。
cyberpiライブラリをインポートすることで、CyberPiや、mBot2、センサーなどの各機能を簡単に利用できます。
テキストを表示する
テキスト表示のPython API
cyberpi.console.print(message)CyberPiの画面にテキストを表示します。
行いっぱいになると、テキストは下の行に表示されます。
- message:表示するテキスト
 
cyberpi.console.println(message)CyberPiの画面にテキストを表示し、表示した後に改行されます。
行いっぱいになると、テキストは下の行に表示されます。
- message:表示するテキスト
 
cyberpi.display.show_label(message, size, x, y)CyberPiの画面の指定した位置にテキストを表示します。
- message:表示するテキスト
 - size:フォントサイズ
- 範囲:12, 16, 24, 32
 
 - x(int型の場合),y:テキストの左上隅のx-y座標
- 範囲:0~128
 
 

- x(str型の場合):テキストの表示位置
 
| x | 内容 | 
|---|---|
| “top_mid” | 中央上 | 
| “top_left” | 左上 | 
| “top_right” | 右上 | 
| “center” | 中央 | 
| “mid_left” | 左中段 | 
| “mid_right” | 右中段 | 
| “bottom_mid” | 中央下 | 
| “bottom_left” | 左下 | 
| “bottom_right” | 右下 | 
テキスト表示プログラム
まず、テキスト表示するプログラムとその結果を示します。
プログラムは、最初の2行は改行あり、後の2行は改行無しとしています。
import cyberpi
cyberpi.console.println("makeblock")
cyberpi.console.println("makeblock")
cyberpi.console.print("makeblock")
cyberpi.console.print("makeblock")
次に、『表示位置をx-y座標で指定してテキスト表示する』プログラムとその結果です。
import cyberpi
cyberpi.display.show_label("makeblock", 12, 63, 63)
表示位置をディスプレイの真ん中(x=63,y=63)に設定した場合、「makeblock」のテキストの左上隅がその位置となります。
最後に、『フォント24で画面の中央にテキスト表示する』プログラムとその結果です。
import cyberpi
cyberpi.display.show_label("makeblock", 24, "center")
このプログラムでは、y座標を指定する引数は省略します。
フォント24で「makeblock」を表示すると、両端ピッタリのサイズ感になります。
グラフを表示する
グラフ表示のPython API
cyberpi.linechart.add(data)データを追加し、折れ線グラフを表示します。cyberpi.display.set_brush(color) を使用して線の色を設定できます。
- data:折れ線データ
- 範囲:0~100
 
 
設定範囲を超える場合、範囲内に収まるように再スケーリングします。
例えば、200,300,400を入力した場合は20,30,40となります。
cyberpi.linechart.set_step(step)折れ線グラフのデータポイント間隔を設定します。
- step:データポイントの間隔
- 範囲:0~128
 
 
次の結果は、データが同じで、間隔が異なる折れ線グラフです。


cyberpi.barchart.add(data)データを追加し、棒グラフを表示するブロックです。
棒の幅は棒の数によって変化します。
cyberpi.display.set_brush(color) を使用して線の色を設定できます。
- data:棒グラフデータ
- 範囲:0~100
 
 
設定範囲を超える場合、範囲内に収まるように再スケーリングします。
例えば、200,300,400を入力した場合は20,30,40となります。
折れ線グラフの簡単なプログラム
『折れ線グラフを表示する』プログラムを作成してみます。
import cyberpi
cyberpi.linechart.set_step(15)
cyberpi.linechart.add(40)
cyberpi.linechart.add(50)
cyberpi.linechart.add(55)
cyberpi.linechart.add(50)
cyberpi.linechart.add(60)
cyberpi.linechart.add(80)
cyberpi.linechart.add(70)
cyberpi.linechart.add(75)
折れ線データ追加のAPIは、1回の処理で1つのデータを追加するため、「線」の状態にするには関数を複数回使用する必要があります。
表を表示する
テーブル表示のPython API
cyberpi.table.add(row, column, data)データの一部を追加し、表を表示するブロックです。
行数と列数は、入力する内容によって異なります。
- row:行の数
 - column:列の数
 - data:セルに入力する内容
 
最大4行×3列の表をサポートします。
| 表のイメージ | 1列目 | 2列目 | 3列目 | 
|---|---|---|---|
| 1行目 | |||
| 2行目 | |||
| 3行目 | |||
| 4行目 | 
表作成の簡単なプログラム
以下は、『mBot2のタイヤの回転速度、モーター出力を表に表示する』プログラムです。
from cyberpi import mbot2, table
mbot2.forward(50)
while 1:
    table.add(1, 1, "回転速度")
    table.add(1, 2, mbot2.EM_get_speed(1))
    table.add(2, 1, "出力")
    table.add(2, 2, mbot2.EM_get_power(1))最初に50RPMで前進する処理、その後にループ処理で回転速度とモーター出力をテーブルに表示させる処理を記述しています。
1行目に回転速度、2行目にモーター出力を表示します。
1列目が項目名、2列目が測定値としています。
実際に表示させた結果は次のようになります。

ディスプレイの調整
ディスプレイ調整のPython API
cyberpi.display.set_brush(r, g, b)ブラシの色を設定するブロックです。
テキスト、折れ線グラフ、棒グラフ、表の色を変更します。
- r(str型の場合):色の名前、または略称
 
| 色の名前(rの設定値) | 略称 | 表示される色 | 
|---|---|---|
| red | r | 赤 | 
| orange | o | オレンジ | 
| yellow | y | 黄 | 
| green | g | 緑 | 
| cyan | c | 藍紫 | 
| blue | b | 青 | 
| purple | p | 紫 | 
| white | w | 白 | 
| black | k | 黒 | 
- r(int型の場合)、g、b:赤色、緑色、青色の強度
- 範囲:0~255
 
 
色の異なるデータを設定することで、複数の線の折れ線グラフ、複数の列の棒グラフを作成することができます。
RGBは光の三原色で、赤(Red)、緑(Green)、青(Blue)の3つの値を組み合わせて色を作ります。
各値は0から255の範囲で指定します。

cyberpi.display.rotate_to(angle)CyberPiの画面を指定した角度に設定します。
- angle:角度
- 範囲:-90°、0°、90°、180°、-180°
 
 
それぞれの設定における表示は次のようになります。




cyberpi.display.clear()CyberPiの画面表示を消します。
cyberpi.display.off()CyberPi画面の背景ライトを消灯します。
複数の折れ線グラフを表示させるプログラム
『2つの折れ線グラフを重ねて表示する』プログラムを作成してみます。
from cyberpi import display, linechart
linechart.set_step(50)
display.set_brush("r")
linechart.add(50)
linechart.add(50)
linechart.add(50)
linechart.add(50)
display.set_brush("b")
linechart.add(30)
linechart.add(45)
linechart.add(60)
linechart.add(75)赤の折れ線は50で一定の値、青の折れ線は30から15ずつ増える線としています。display.set_brush() 関数でブラシの色を設定(“r”が赤、“b”が青)して、そのあとに linechart.add() 関数で折れ線データを追加します。
プログラムの実行結果は次のようになります。

まとめ
今回は、CyberPiのディスプレイを制御する方法を紹介しました。
CyberPiのディスプレイを活用することで、メッセージを伝えたり、センサー値をモニタリングしたりしてmBot2のプログラミングの幅を更に広げることができます。
また、ゲームを作成して楽しむことも可能となります。
ぜひ、今回のプログラムを参考にして、自分だけのオリジナルプログラムに挑戦してみてください。
mBlockを使ったmBot2のプログラミング方法を丁寧に解説していておススメです。
CyberPi単体でもプログラミング教育に非常に役立ちます!

  
  
  
  

					
					
					
					
					