PR

【PythonでmBot2プログラミング】CyberPiのディスプレイ制御

Python
この記事は約10分で読めます。

今回は、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つに分類できます。

  1. テキストを表示する
  2. グラフを表示する
  3. を表示する
  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
Python API Documentation for CyberPiより流用
  • 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

次の結果は、データが同じで、間隔が異なる折れ線グラフです。

間隔=5ピクセル
間隔=10ピクセル

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の設定値)略称表示される色
redr
orangeoオレンジ
yellowy
greeng
cyanc藍紫
blueb
purplep
whitew
blackk
  • 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°

それぞれの設定における表示は次のようになります。

逆さま(-90°)
左(0°)
デフォルト(90°)
右(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単体でもプログラミング教育に非常に役立ちます!

タイトルとURLをコピーしました