おもしろ工作・プログラミング動画配信中!せでぃあのYouTube

Arduinoで乱数(ランダム)を使ったサイコロ振りをシミュレーション!ビジュアルプログラミング(スクラッチベースmBlock)【Lesson19】

Arduinoで乱数(ランダム)を使ったサイコロ振りをシミュレーション!ビジュアルプログラミング(スクラッチベースmBlock)【Lesson19】
  • URLをコピーしました!

この記事内には、プロモーションが含まれます。

スマイルSALE!

4/22まで!スマイルSALE開催中

こんにちは、せでぃあ(@cediablog)です。

今回のArduinoプログラミングLESSON19では「乱数を使った、ランダム数値の生成」を行います。

乱数とは

規則性がなくランダムに出現する数値のことをいいます。

サイコロの写真

規則性のない数値を得られる身近なものとして、サイコロが挙げられます。

サイコロを振ると、1~6いずれかの目がランダムに出ます。

Arduinoプログラムでは、特定の命令語を記述することで指定した範囲の数値からランダムで値を抽出できます。

乱数を使ったランダム数値生成動作説明写真1
上段が抽出した5つの値、下段が合計値

今回はその乱数制御プログラムを使って、液晶ディスプレイLCD1602に「5回サイコロを振って、出た目の合計を表示させる」プログラムの作り方を紹介します。

今回液晶ディスプレイLCD1602の制御はI2Cを使ったシリアル通信を使います。

I2C通信を使ったLECディスプレイ表示方法については、こちらの記事にて詳しく解説しています。

上記記事の動作確認した配線状態のまま、今回のLESSONをお楽しみいただけます。

本記事は、プログラミングと電子パーツの知識が習得できるプログラミング初心者にも安心して読んでいただける内容になっています。

小学生、中学生も安心してプログラミングができるように、文字列を使わなビジュアルプログラミング方法についても動画付きで紹介しています。

せでぃあ

文字列を使わずにブロックの組み合わせでプログラムが作れるので、ぜひチャレンジしてみてください!

本記事では、スクラッチベースのビジュアルプログラミングツールmBlockとArduinoIDEプログラムどちらのプログラミング方法も紹介しています。

本記事ではmBlockのアップロードモード「オン」でのプログラム例を紹介しています。

無料のブロックプログラミングツールmBlockのインストール方法については、こちらの記事を参照してください。

この記事を読んでわかること
  • 乱数制御を使ったランダム数値の取り出し方
  • Arduino IDEでのプログラミング方法
  • mBlockを使ったビジュアルプログラミング方法
この記事を書いた人
せでぃあ

せでぃあはこんな人物です

✅プライム企業に勤める電気・機械設計エンジニア

✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作

✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞

✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中

✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中

目次

乱数を使ったサイコロ振りシミュレーション動作の説明

今回紹介する「乱数を使った、サイコロ振りシミュレーション動作」について説明します。

動作の説明

  • ディスプレイに「roll the dce」と表示され、サイコロ振り操作待ちの状態になる。
  • タクトスイッチ(押しボタン)を押すと、1~6の中からランダムな数値が5つ表示される。
  • 5つの数値の合計がディスプレイ下段に表示される。

このように、タクトスイッチを押したらサイコロを5回振って、その合計値が表示されるシンプルでわかりやすい動作になっています。

動作説明とブロックプログラミング手順の解説動画
動画での解説内容
  • 乱数について
  • LCDへの各サイコロ目と合計値の表示動作
  • mBlockを使ったプログラミング方法

まずは動画を見て、今回のLESSONで実行させたい動作内容を確認してください。

また、mBlockを使ったブロックプログラミングや動作確認方法についても解説しています。

せでぃあ

桃鉄で「のぞみカード」を使ったときを想像しながら、動作をお楽しみください!

桃鉄(桃太郎電鉄)は、サイコロを振って鉄道網を駆け巡る!家族全員で楽しめるゲームです。

コナミデジタルエンタテインメント
\【4/22まで】スマイルSALE開催中/
Amazon
コナミデジタルエンタテインメント
\【4/22まで】スマイルSALE開催中/
Amazon

乱数を使ったサイコロ振り動作の作り方

乱数を使ったサイコロ振り動作を実行させるために必要な作業を解説します。

今回は文字列を使ったプログラム形式と、文字列を使わないブロックプログラミング形式の両方について説明します。

あなたの作りたいプロブラム形式に対応した手順に応じて、対応してください。

プログラム形式に応じた開発環境

  • 文字列による命令語形式 ⇒ ArduinoIDE
  • スクラッチベースのビジュアル形式 ⇒ mBlock
せでぃあ

プログラミング初心者の方は、ビジュアル方式がおすすめです!

STEP
必要なものを準備

プログラミングするために、パソコンが必要です。

電子部品等の必要な機器については、このあと説明します。

STEP
Arduinoを使うためのセットアップ(Arduino IDEプログラミング時のみ)

パソコンに統合開発ソフトウェア「ArduinoIDE」のインストールを行います。

Arduinoのセットアップ方法については、以下の記事にて詳しく説明しています。

Arduino IDEでの言語プログラミングも勉強したい方は、プログラミングの流れを理解しておいてください。

以下の記事にて、プログラミングから動作確認までの流れを詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEのインストールは不要です。

STEP
mBlockでプログラミングするためのセットアップ(mBlockプログラミング時のみ)

パソコンにスクラッチベースのビジュアルプログラミングツール「mBlock」のインストールを行います。

以下の記事にて詳しく説明しています。

ArduinoIDEでプログラミングする場合は、mBlockのインストールは不要です。

STEP
電気配線

電子部品とジャンパーワイヤの差し込みだけで配線が可能です。

STEP
Arduino IDEプログラミング

専用開発ソフトウェア「Arduino IDE」を使います。

私が作成したプログラムをコピペして使ってください。

Arduino IDEプログラミングの基本操作については、こちらの記事にて詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEプログラミングは不要です。

STEP
mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockを使ってプログラムを作成します

プログラム内容については、後述するプログラミング例を参考にしてください。

ArduinoIDEでプログラミングする場合は、mBlockプログラミングは不要です。

STEP
動作確認

プログラムが完成したら動作確認を行います。

動作確認チェックリスト
  • 液晶ディスプレイ上段に「roll the dice」が表示されるか?
  • タクトスイッチを押すと上段に5つの数値が表示されるか?
  • 液晶ディスプレイ下段に「合計値」が表示されるか?

乱数を使ったサイコロ振り動作回路で使うもの

今回は、LCDディスプレイをI2C通信で制御する方法を紹介した記事とまったく同じ使用機器と配線になります。

I2C通信を使ったLCDディスプレイ表示が初めての方は、こちらの記事から読んでいただけると理解がしやすいです。

乱数を使ったサイコロ振り動作回路で使うもの
配線が完了しプログラム転送できる状態写真
準備するもの
  1. パソコン
  2. Arduino本体
  3. USBケーブル
  4. ブレッドボード
  5. タクトスイッチ
  6. 抵抗(1kΩ)
  7. LCD1602モジュール
  8. I2Cモジュール
  9. ジャンパー線(オスーメス)×4本
  10. ジャンパー線(オスーオス)×4本

今回はELEGOO社のスーパースターターキットに含まれる部品で作ることができますが、Arduino裏面のショート対策としてクリアケースも併せて準備することをおすすめします。

【おすすめ】コスパ最強のArduinoキットの中間グレードです!

パソコン

プログラムを作成するために必要です。

プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。

パソコンのOSはWindows、Macどちらでも対応可能です。

Arduino本体【キット】

Arduino本体
Arduino本体

基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。

Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。

各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。

USBケーブル【キット】

必要なUSBケーブルの説明写真
USBケーブル

パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。

ブレッドボード【キット】

ブレッドボードの機能説明図
ブレッドボードの機能説明図

たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。

説明図は30列のショート版ですが、スーパースターターキットに含まれる63列タイプでも機能は同じです。

ブレッドボードだけの購入も可能です。

タクトスイッチ【キット】

押しボタンの説明
押しボタンの説明

今回の回路では、タクトスイッチ(押しボタンスイッチ)を使用します。

押しボタンは押されている間のみ、上記写真での2点が内部でつながります。

このようなボタンをモーメンタリボタンといいます。

今回は扱いませんが、ボタンから手を離してもONしたままになるボタンをオルタネイトボタンといいます。

モーメンタリ・オルタネイトボタンについては以下記事にて詳しく説明しています。

抵抗(1kΩ)【キット】

1kΩ抵抗と色による見分け方
1kΩ抵抗と色による見分け方

1kΩの抵抗を1本使用し、押しボタンスイッチに接続します。

抵抗を接続するのは、押しボタンがOFFのときにArduino本体がノイズによる誤検出することを避けるためです。

この記事では詳しく説明しませんが、ボタンを押していないのに押されたと誤認識されることを避ける目的であるということだけ覚えておいてください。

抵抗カラーコードの見分け方については、こちらの記事で詳しく説明しています。

LCD1602モジュール【キット】

LCD1602モジュール
LCD1602モジュール

液晶ディスプレイ「LCD(Liquid Crystal Display)」モジュールになります。

数字や文字などを表示させることが可能です。

I2Cモジュール

I2Cシリアルインタフェースボードモジュール
I2Cシリアルインターフェースボード

I2Cを使ってLCDを制御するために必要なモジュールです。

電源線2本と通信線2本の合計4本の配線だけで、LCDを制御することが可能になります。

せでぃあ

I2Cモジュールはキットに含まれないため、別途購入が必要です。

ジャンパー線(オスーメス)【キット】

ジャンパー線(オス-メス)
ジャンパー線(オス-メス)

オス-メスジャンパー線を4本使用します。

I2CシリアルインターフェースボードとArduino本体を接続させるために使用します。

ジャンパー線(オスーオス)【キット】

キットに同梱されているジャンパー線(オスーオス)の説明
ジャンパー線

ジャンパー線を4本使用します。

Arduino本体とブレッドボードの接続や、ブレッドボードの共通電源ライン(GNDまたは5V)からブレッドボード内の配線系統穴に差し込んで接続するのに使います。

スターターキットに含まれる機器に関しては、以下の記事にて詳しく紹介しています。

配線のやり方

乱数を使ったサイコロ振りシミュレーション動作を行う配線が完了した状態
配線完了時の状態写真
乱数を使ったサイコロ振りシミュレーション動作を行う配線説明図
配線説明図(fritzingを用いて作成)

上図が配線説明図となりますので、これと同じ配線をすれば完成します。

機器が故障するおそれがあるので、接続するプラスマイナス極性には十分注意して配線してください。

抵抗は極性がありませんので、どちら側のピンを挿入してもOKです。

機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください

プログラミングのやり方

本記事では、以下に示す「Arduino IDEプログラミング」と「mBlockプログラミング」の2通りのプログラミング方法について解説しています。

いずれか1つのプログラミング方法を用いることで、本LESSONの動作を行うことが可能です。

ArduinoIDE:文字列による命令語形式
mBlock:スクラッチベースのビジュアル形式

文字列を使わないmBlockの方が、直感的で分かりやすく小学生におすすめのプログラミング方法になります。

mBlockを使ってプログラミングをする方は、mBlockの説明まで読み飛ばしてください。

LiquidCrystal_I2Cライブラリのインストール

ArduinoIDEを使用した文字列プログラミングを行うためには、LiquidCrystal_I2Cライブラリのダウンロードとインストール作業が必要となります。

LiquidCrystal_I2Cライブラリのダウンロードとインストール方法を解説します。

mBlockでプログラミングをする場合は、本ライブラリインストール作業は不要です。

STEP
GitHubのサイトを開く
LiquidCrystal_I2Cライブラリのダウンロードサイトを開く。

LiquidCrystal_I2Cライブラリのダウンロードサイトを開きます。

STEP
codeをクリックする
codeをクリックする。
STEP
ZIPファイルをダウンロードする
「Download ZIP」をクリックして、ZIPファイルをダウンロードする。

「Download ZIP」をクリックして、ZIPファイルをダウンロードします。

STEP
ArduinoIDEを開き、ライブラリをインストールする
ArduinoIDEを開き、ライブラリをインストールする。

ArduinoIDEを開き、「スケッチ」⇒「ライブラリをインクルード」⇒「.ZIP形式のライブラリをインストール…」の順に選択して、STEP3でダウンロードしたZIPファイルを選択。

インストールが行われ、ライブラリインストール作業が完了となります。

Arduino IDEプログラミング

Arduino IDEとは統合開発ソフトウェアで、C言語のような文字列を用いたプログラミング方法です。

プログラミングするにあたり、ある程度の命令語を知っておく必要があります。

Arduino IDEのインストール方法については、以下の記事で詳しく説明しています。

日本語版のArduino公式リファレンスが記載されているので、関数を調べるときに重宝します!(私も所有しています)

プログラミング方法

Arduino IDEでの乱数制御プログラミング画面
Arduino IDEでのプログラミング画面

Arduino IDEを使って、文字列プログラミングを行います。

Arduino IDEを使ったプログラミング~動作確認方法については、以下の記事で詳細説明しています。

Arduino IDEプログラム

/* 作品名:LESSON19A */
/* 作成者:せでぃあ https://cediablog.com */
/* 乱数を使ったサイコロ振りプログラム */

#include <LiquidCrystal_I2C.h>  // ライブラリのインクルード

// LiquidCrystal_I2C型変数の宣言
LiquidCrystal_I2C lcd(0x27, 16, 2);  // 0x27のアドレス,16列2行のLCDを使用

int BTN_SOCKET = 2;  //タクトスイッチの入力ソケット番号

// サイコロの出目を格納するための変数
int dice1;  //1回目のサイコロ出目
int dice2;  //2回目のサイコロ出目
int dice3;  //3回目のサイコロ出目
int dice4;  //4回目のサイコロ出目
int dice5;  //5回目のサイコロ出目
int total;  //サイコロの出目の合計値

void setup() {
  //プログラム起動時1回だけ処理される回路

//乱数の初期化
randomSeed(analogRead(0));

  //入出力の割り当て
  pinMode(BTN_SOCKET, INPUT);  //2番ピンは入力として使用

  //LCDディスプレイ表示
  lcd.init();                  // LCDの初期化
  lcd.backlight();             // LCDバックライトの点灯
  lcd.setCursor(0, 0);         // カーソルの位置を指定(0文字目、上段)
  lcd.print("roll the dice");  // 文字の表示
}

void loop() {
  //プログラム起動後ループ処理される回路

  if (digitalRead(BTN_SOCKET) == HIGH) {  // 押しボタンが押されたらシーケンス開始

    //STEP1:サイコロ振り1回目
    lcd.clear();           //LCD表示クリア
    lcd.setCursor(0, 0);   // カーソルの位置を指定(1文字目、上段)
    dice1 = random(1, 7);  //サイコロの出目を格納
    lcd.print(dice1);      // 文字の表示
    lcd.setCursor(0, 1);   // カーソルの位置を指定(1文字目、下段)
    lcd.print("TOTAL:");   // 文字の表示

    delay(500);  //0.5秒ウェイト

    //STEP2:サイコロ振り2回目
    lcd.setCursor(2, 0);   // カーソルの位置を指定(3文字目、上段)
    dice2 = random(1, 7);  //サイコロの出目を格納
    lcd.print(dice2);      // 文字の表示

    delay(500);  //0.5秒ウェイト

    //STEP3:サイコロ振り3回目
    lcd.setCursor(4, 0);   // カーソルの位置を指定(5文字目、上段)
    dice3 = random(1, 7);  //サイコロの出目を格納
    lcd.print(dice3);      // 文字の表示

    delay(500);  //0.5秒ウェイト

    //STEP4:サイコロ振り4回目
    lcd.setCursor(6, 0);   // カーソルの位置を指定(7文字目、上段)
    dice4 = random(1, 7);  //サイコロの出目を格納
    lcd.print(dice4);      // 文字の表示

    delay(500);  //0.5秒ウェイト

    //STEP5:サイコロ振り5回目
    lcd.setCursor(8, 0);   // カーソルの位置を指定(9文字目、上段)
    dice5 = random(1, 7);  //サイコロの出目を格納
    lcd.print(dice5);      // 文字の表示

    //STEP5:サイコロ出目の合計算出
    delay(500);  //0.5秒ウェイト

    lcd.setCursor(7, 1);                            // カーソルの位置を指定(8文字目、下段)
    total = dice1 + dice2 + dice3 + dice4 + dice5;  //5回分のサイコロ出目合計
    lcd.print(total);                               // 文字の表示

    while (digitalRead(BTN_SOCKET) == LOW) {  // 押しボタンがOFFになるまで待機させる
    }
  }
}

上記がI2Cを使った、LCD表示制御回路のプログラムになります。

Arduino IDEのプログラム画面にコピーアンドペーストすることで、動作確認まで進めることができます。

各プログラム列の右側にプログラム内容をコメント記入してありますので参考にしてください。

せでぃあ

乱数に関する命令語については、このあと詳しく説明していきます

命令語の解説

今回のプログラムで使用した命令文について、解説します。

変数のデータ型指定

変数のデータ型を指定するものです。

今回はピンソケット番号を代入するので整数を扱う「int型」を指定します。

またアナログ出力値は「0~255」の整数を扱いますので、同じく「int型」を指定します。

スクロールできます
データ型説明扱える範囲
int2バイトの整数を代入可能。-32768~32767
long4バイトの整数を代入可能-2,147,483,648~2,147,483,647
float4バイトの小数を代入可能。3.4028235×1038~-3.4028235×1038
char1バイトの値を代入可能。文字列の代入に利用されます。-128~127
boolean0または1のみ代入可能。フラグのON-OFFなどに利用されます。0,1
データ型の説明

変数の前に「const」を記載すると、変数の値が「固定値」となり書き換えできない値となります

pinMode(入出力番号,INPUTまたはOUTPUT)

指定したデジタル入出力ソケット番号の機能を指示します。

入力として使用する場合は「INPUT」、出力の場合は「OUTPUT」を指定します。

if 文

条件が成立しているときのみ、{ }内の文が実行されます。

条件が成立しなければ、{ }内の文は処理されず、次の処理に移ります。

if( 条件 ){
 条件成立時に実行する文 ;
}

digitalRead(入出力番号)

指定したデジタル入出力ソケット番号の状態がON、またはOFFであるか確認します。

ONのときは「HIGH」、OFFのときは「LOW」の値が返ってきます。

while 文

( )内の条件が成立している間は、{ }内の文を繰り返し実行します。

while( 条件 ){
 繰り返し実行する文 ;
}

乱数に関する命令語の解説

今回のメインテーマである乱数=ランダム値の抽出の命令方法について解説します。

今回は2つの関数を使用していますので、1つずつ詳しく説明していきます。

random(min , max)

minからmax-1の連続した整数から、無作為に1つの数値(long型)を取り出します。

min値が0の場合は、記述の省略が可能です。

1~6からランダムで1つの整数を取り出す場合

random(1 , 7) ;

このように最大値を6にしたい場合は、+1した値「7」を記述する点に注意が必要です。

randomSeed(seed)

実はプログラム実行直後の乱数生成順序は決まっています。

「おみくじ」や「じゃんけん」プログラムなどでは、乱数生成順が決まっていると面白くなくなってしまいます。

そこで活躍するのがこの「ramdomSeed関数」です。

ランダム数値生成の種となる値を「ランダム値」にすることで、真に無作為な数値を生成させることができます。

seed:乱数の種となる数値(long型)

乱数の初期値をランダムにする方法

//乱数の初期化
randomSeed(analogRead(0));

Arduinoのアナログ入力ピン「A0」を使った、乱数の種をランダム値にする方法を使います。

A0ピンには何も接続しない状態にしてください。

何も接続されていなくても、A0ピンのアナログ入力値が常に変動しているためこの方法が使えます。

せでぃあ

実際にアナログ入力値がどう変化しているのか確認したい場合は、シリアルモニタに出力して確認してみてください。

シリアルモニタにアナログ値を表示させる方法は、こちらの記事で詳しく紹介しています。

LiquidCrystal_I2Cライブラリの説明

今回はLCD1602の制御をするために、「LiquidCrystal_I2Cライブラリ」を使用します。

このライブラリを使うだけで、簡単にLCD表示を制御できます。

LiquidCrystal_I2Cライブラリの読み出し

プログラム冒頭の宣言部にてLiquidCrystalライブラリを読み出します。

#include <LiquidCrystal_I2C.h>

LiquidCrystal型変数の指定

プログラム冒頭の宣言部にてLiquidCrystal_I2C型の変数を定義します。

LiquidCrystal_I2C lcd(I2Cアドレス, 桁数, 行数)

変数「lcd」は例であり、任意の変数文字列を指定してください

init()

LCDの表示内容をクリアし、カーソルを左上に移動させます。

lcd型変数.init

clear()

LCDの表示内容をクリアします。

lcd型変数.clear()

setCursor( , )

カーソル位置を指定します。テキスト表示開始位置を指定することができます。

lcd型変数.setCursor(桁、行)

桁は左端が「0」、行は上段が「0=1行目」になります。

print(“表示させたい文字列”)

LCDに文字列を表示させます。

lcd型変数.print(“表示させたい文字列”)

backlight()

LCDバックライトを点灯させます。

lcd型変数.backlignt()

プログラミング初心者の方に、おすすめなArduinoの参考書を紹介しています!

mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockプログラミングの説明
mBlockを使ったプログラミング画面

ここからは、mBlockを使ったプログラムの作り方を解説します。

mBlockを使ったプログラムの作り方
  1. デバイスにArduino Uno R3を追加する
  2. 接続モードを「アップロードモードON」にする
  3. mBlockプログラムを作成する
  4. プログラムをArduino本体に転送する

これらの基本操作方法については、こちらの記事を参照してください。

プログラミング、動作確認方法については、本記事の説明動画でも紹介しています

せでぃあ

動画を参考にプログラミングしてみよう

randomSeed関数ブロックの追加方法

mBlockでは乱数生成ブロックは標準で準備されていますが、randomSeed関数ブロックは拡張ブロックとして追加する必要があります。

randomSeedブロック
STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「random」と入力して検索
検索窓に「random」と入力します。

検索窓に「random」と入力します。

RandomSeedと書かれた拡張ブロックを追加します。

STEP
randomSeedブロックが追加される
乱数の種となる数値を指定するrandomSeedブロックが追加される

randomSeedブロックが追加され、プログラムに使用可能となります。

I2Cを使ったLCD制御ブロックの追加方法

LCDを制御(LCD画面クリア、カーソル位置を指定、LCDへの文字列表示など)するために必要な、専用ブロックを追加する必要があります。

追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「i2c」と入力して検索
検索窓に「i2c」と入力します。

検索窓に「i2c」と入力します。

STEP
LCDと書かれた拡張ブロックを追加
I2Cを使ったLCD制御用の拡張ブロックを追加します。

I2Cを使ったLCD制御用の拡張ブロックを追加します。

STEP
LCDブロックが追加される
I2Cを使ったLCD制御ブロックが追加されます。

I2Cを使ったLCD制御ブロックが追加されます。

mBlockを使ったプログラム内容

今回は「アップロードモード オン」でのプログラム作成例を紹介しています。

プログラム開始条件が「Arduino Unoが起動したとき」になっている点に注意してください。

mBlockでは、乱数のMAX値が抽出範囲のMAXとなる点に注意が必要です。

せでぃあ

Arduinoプログラムに変換されるときにMAX値は自動で+1記述されます。

以下のプログラムが動作プログラムになります。

mBlockによるI乱数制御ブロックプログラム
mBlockによるブロックプログラム

mBlockでは変数が「float型(浮動小数点)」のため整数への変換ブロックによる整数化が必要です。

mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。

動作確認方法

乱数を使ったサイコロ振り動作を行うための配線状態
配線状態説明図
動作確認チェックリスト
  • 液晶ディスプレイ上段に「roll the dice」が表示されるか?
  • タクトスイッチを押すと上段に5つの数値が表示されるか?
  • 液晶ディスプレイ下段に「合計値」が表示されるか?

上記項目について確認していきましょう。

液晶ディスプレイ上段に「roll the dice」が表示されるか?

プログラムの演算が開始されたら、LCDディスプレイの上段に「roll the dice(サイコロを振ってください)」が表示されていることを確認してください。

LCDディスプレイのバックライトが点灯状態であることを併せて確認してください。

タクトスイッチを押すと上段に5つの数値が表示されるか?

「roll the dice」が表示された状態で、タクトスイッチを押してください。

LCDディスプレイの上段にて、1~6のうちのどれかの数値が5つ表示されます。

せでぃあ

ディスプレイの左から0.5秒おきに1つずつ表示されます。

液晶ディスプレイ下段に「合計値」が表示されるか?

LCDディスプレイの上段に5つの乱数が表示されたら、ディスプレイ下段の「TOTAL:」の右側に合計値が表示されます。

上段に表示されている5つの数字の合計と、表示値があっているか確認してください。

せでぃあ

計算値が正しいか?確認してくださいね。

乱数の値は簡単に生成できる!(まとめ)

この記事の内容をまとめると
  • 乱数はランダムに抽出した整数値
  • random関数を使うときは指定するmax値に注意
  • 拡張ブロックを追加することでmBlockでもrandomSeed関数が使用可能

小学生のお子様には断然、ブロックプログラミングがおすすめです!

せでぃあ

mBlockはブロックのドラッグアンドドロップで簡単にプログラミングができます!

小学生のプログラミング学習におすすめな、mBlockが使えるプログラミングロボットを紹介しています。

最後まで読んでいただき、ありがとうございました。

子供の成長を育む!小学生のお子様にぴったりなプログラミング教室が見つかるように厳選しました!

Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。

Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。

応援ありがとうございます(^^)/

Arduinoで乱数(ランダム)を使ったサイコロ振りをシミュレーション!ビジュアルプログラミング(スクラッチベースmBlock)【Lesson19】

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次