配列を使ったプログラムの作成 ~レゴマインドストームEV3~ | そう備忘録

配列を使ったプログラムの作成 ~レゴマインドストームEV3~

配列とは

教育用レゴマインドストームで配列を使ったプログラムを作ってみる。

配列とは同じ種類の値を複数格納することができる入れ物でインデックスを用いて中の要素にアクセスをすることができる。

他のプログラミング言語の配列と同様に追加(格納)、インデックスを使っての読み込み、書き出しなどができる。

またレゴでは数値配列とロジック配列の2種類が存在する。

1から順番に整数を格納した数値配列の例

数値配列イメージ図

作りたいプログラム

配列を用意して数値を格納する。

格納する値はインデックス(0から始まる)の2倍の値を格納する。

1つ目:0✕2=0

2つ目:1✕2=2

3つ目:2✕2=4

4つ目:3✕2=6

数値配列に4要素格納した後、インテリジェントブロックのディスプレイに順番に格納した値を表示する。

使用するブロック

使用するブロックは以下の6種類。

ループブロック

ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。

ループブロック 4回

ループを4回繰り返す。

  • 番号:01
  • ループ:カウント
  • カウント:4

ループインデックス※をデータワイヤーで出力する。

※ループインデックスにはループ回数がセットされている。インデックスは0から始まるので1回目=0になるので注意。

変数ブロック

テキスト、数値、ロジック、数値配列、ロジック配列を格納する変数。

読み込み、書き込みが可能。

尚、変数ブロックの機能詳細についてはこちらの記事を参照

変数 読み込み 数値配列

数値配列を格納する変数

配列を読み込む時に使用する

  • 変数:読み込み、数値配列
  • 値:データワイヤーで配列入力に接続する
変数 書き込み 数値配列

数値配列を格納する変数

配列に書き込む時に使用する

  • 変数:書き込み、数値配列
  • 値:配列出力からデータワイヤーで配列を受け取る

数学ブロック

数学計算を行う為のブロック。

データワイヤーで受け取った値を2倍にして結果に出力する。

尚、数学ブロックについての詳細機能についてはこちらの記事を参照

数学ブロック 2倍

データワイヤーでaに受け取った値を2倍にする

  • 数学:掛け算
  • A:ループインデックスをデータワイヤーで受け取る
  • B:2
  • 結果:ループインデックス✕2の結果をデータワイヤーで配列操作ブロックに出力する

配列操作ブロック

配列の操作を行うためのブロック。

今回はループインデックス(0~3)をインデックスとして値にインデックス✕2の数値を書き込む。

尚、配列操作ブロックの機能詳細についてはこちらの記事を参照

配列操作ブロック

配列にインデックス✕2の値を格納する

  • 配列操作:インデックスで書き込み、数値
  • 配列入力:空の変数(数値配列)をデータワイヤーで受け取る
  • インデックス:ループインデックスをデータワイヤーで受け取る
  • 値:数学ブロックで2倍した値をデータワイヤーで受け取る
  • 配列出力:変数(数値配列)にデータワイヤーで出力する
配列操作ブロック インデックスで読み込み

配列からインデックスを使って値を読み込む

  • 配列操作:インデックスで読み込み、数値
  • 配列入力:値を格納した変数(数値配列)をデータワイヤーで受け取る
  • インデックス:ループインデックスをデータワイヤーで受け取る
  • 値:数値配列の値を取り出してデータワイヤーで出力する

表示ブロック

インテリジェントブロックのディスプレイに表示をするブロック。

配列の中身をディスプレイに表示する。

尚、表示ブロックの詳細な機能についてはこちらの記事を参照

表示ブロック 配列から表示

データワイヤーで受け取った値をディスプレイに表示する

  • 表示:テキスト、グリッド
  • テキスト:データワイヤーで変数ブロックから値を受け取る
  • 画面消去:真
  • 列:5(列)
  • 行:5(行)
  • 色:偽(黒)
  • フォント:2(大)

待機ブロック

条件を満たすまで待機をするブロック。

待機 2秒

2秒間待機する

  • 待機:時間
  • 秒:2

ディスプレイに2秒毎に数値配列の値を表示する為に待機する。

数値配列に格納した値を表示するプログラム

最初のループで数値配列に値を格納する。

次のループで格納した値をディスプレイに表示する。

配列のプログラム

プログラム開始

3~6を4回繰り返す

ループインデックス(0から始まる)を4の数学ブロックと5の配列操作ブロックのインデックスにデータワイヤーで出力する

空の数値配列

ループインデックスの値を2倍にして配列操作ブロックの値にデータワイヤーで出力する

数値配列に値を書き込み、データワイヤーで配列出力する

5からデータワイヤー経由で出力された数値配列を受け取る

データワイヤーは黄色の太線(数値配列を表す)

8~11を4回繰り返す

ループインデックス(0から始まる)を9の配列操作ブロックのインデックスにデータワイヤーで出力する

6の処理で値がセットされた数値配列を入力にする

ループインデックス番目の数値配列の値をデータワイヤーで10の表示ブロックへ出力する

10

データワイヤーで受け取った値をディスプレイに表示する

11

2秒間待機する。

※10の表示結果を見えるようにするため

実行結果

ディスプレイに2秒毎に”0”、”2”、”4”、”6”が表示されるのが正解。

2を表示

プログラミング動画

プログラミングの様子とインテリジェントブロックのディスプレイに結果が表示される様子を動画にしている。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。