JP2021140124A - プログラミング学習装置 - Google Patents

プログラミング学習装置 Download PDF

Info

Publication number
JP2021140124A
JP2021140124A JP2020050093A JP2020050093A JP2021140124A JP 2021140124 A JP2021140124 A JP 2021140124A JP 2020050093 A JP2020050093 A JP 2020050093A JP 2020050093 A JP2020050093 A JP 2020050093A JP 2021140124 A JP2021140124 A JP 2021140124A
Authority
JP
Japan
Prior art keywords
block unit
command
common bus
active signal
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020050093A
Other languages
English (en)
Other versions
JP6915193B1 (ja
Inventor
博巳 本間
Hiromi Honma
博巳 本間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Cube Co Ltd
Original Assignee
Digital Cube Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Cube Co Ltd filed Critical Digital Cube Co Ltd
Priority to JP2020050093A priority Critical patent/JP6915193B1/ja
Application granted granted Critical
Publication of JP6915193B1 publication Critical patent/JP6915193B1/ja
Publication of JP2021140124A publication Critical patent/JP2021140124A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Toys (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】ブロックユニットを組み合わせて装着するだけで、逐次処理、条件分岐、多重ループ、モジュール化が学習できるプログラミング学習装置を提供する。【解決手段】アクティブ信号入力に応じてコマンドを出力する複数のブロックユニット10a〜12bと、複数のブロックユニットが着脱可能な基板2と、コントローラ21と、共通バス22と、出力装置3と、外部入力装置4と、を備え、各ブロックユニットは、隣接するブロックユニット又はコントローラからアクティブ信号を受け、共通バスにコマンドを出力し、隣接ブロックユニットにアクティブ信号を出力し、共通バスに流れるコマンド情報をメモリ131に格納可能でかつ格納したコマンドを共通バスに出力するブロックユニット13を備え、コントローラは、外部入力装置の検出情報を共通バスに出力すると同時に、共通バス上のコマンドに従って、出力装置の状態を変更あるいは保持する。【選択図】図1

Description

本発明は、コンピュータを使わずにプログラミングの基本概念を学習するためのプログラミング学習装置に関する。
近年の人工知能技術を利用した多くの分野のシステム開発や、ビッグデータ処理の需要の高まり、小学校のプログラミング教育必須化などにより、プログラミング教育に関する関心が高まっている。
プログラミングの基本は、基本コマンドの逐次処理とループや分岐などの処理順番の制御であり、特定の言語体系の習得やコンピュータがなくてもプログラミング的思考を学習することは十分可能である。この観点からタイピングやコンピュータの操作に慣れていない小学生を含む初心者向けにプログラミング学習を行うための教材が各社より多数提案されている。
特許文献1に記載されたプログラミングの学習装置には、基本的な動きを定義したブロックを複数装着することで装着順番どおりの動きをするプログラミングカーが示されており、逐次処理だけではなくループ処理やセンサ入力に応じたジャンプ処理の記載もある。
一方、特許文献2に記載された学習玩具は、コマンド情報が記録されたパネルを連続して配置して、その上を移動ロボットがコマンド情報を読み取りながら走行するものであり、例えば読み出した複数の音程コマンドをメモリに格納した後でメロディーとして繰返し演奏するといった記述もある
また、特許文献3に記載されたデジタル回路システムは、論理演算や四則演算などの単機能演算を行う複数のブロックユニットを基板に装着することでより複雑なデジタル回路を作る学習装置であり、ブロックユニット内で演算された情報はシリアル伝送されて隣接のブロックユニットに伝えることで配線の簡略化を実現している。
特許第6321066号公報 特開2020−14575号公報 特許第5678226号公報
特許文献1に記載されたプログラミングの学習装置は、モータ等の駆動系を含む車体上に複数のブロックを装着するための装着部が具備されている。この学習装置は装着できるブロック数以上に複雑な動作をプログラムすることはできないため、複雑な動作を行うためには多くのブロックが実装できる装着部が必要となる。これを実現しようとすると学習装置が大型化してしまうという欠点がある。
また、ブロックの処理順は基本的に線状の決まった経路だけであり、ループ処理用の特殊領域やセンサによる先頭ブロックへのジャンプ等あるものの、2重ループの実現さらにはセンサに応じた異なる動きを実現するための分岐処理ができないという欠点がある。
特許文献2に記載された学習玩具は、コマンドが記録されたパネルが移動ロボットとは別に配置されるため、パネルを増やせばより複雑な動作を行うことができる。しかし、配置したパネル上しか移動できないという大きな制限がある。また特許文献1と同様にコマンド(パネル)の並びは線状であるため条件分岐や2重ループ制御が実現できないという欠点がある。
特許文献3に記載されたデジタル回路システムにおけるブロックユニットは、回路の一要素である。このため全てのブロックユニットが同時に動作していることは自明である。一方、プログラミング学習は、単一のCPUが基本コマンドを逐次的に実行することを学ぶことが基本である。このため、ブロックユニットに基本コマンドを割り当てても特許文献3に記載のシステムではプログラミング学習を行うことができない。
かかる課題を解決するために、請求項1に記載の発明は、アクティブ信号入力に応じてコマンドを出力する複数のブロックユニットと、前記ブロックユニットが複数着脱可能でかつ前記ブロックユニットの共通バスに接続されたコントローラを搭載した基板と、出力装置と、を備え、前記ブロックユニットは、隣接する前記ブロックユニット又は前記コントローラから前記アクティブ信号を受け、前記コマンドを前記共通バスに出力し、前記コントローラは、前記共通バスより読み出した前記コマンドに従って前記出力装置の状態を変更あるいは保持するプログラミング学習装置としたことを特徴とする。
請求項2に記載の発明は、請求項1に記載の構成に加えて、前記コマンドを前記共通バスに出力すると共に、前記コマンド固有の方向に隣接して装着された前記ブロックユニットに前記アクティブ信号を出力する前記ブロックユニットを含むプログラミング学習装置としたことを特徴とする。
請求項3に記載の発明は、請求項2に記載の構成に加えて、複数の隣接する前記ブロックユニットのいずれに前記アクティブ信号を出力するかを、前記共通バス上の情報より判断する前記ブロックユニットを含むプログラミング学習装置としたことを特徴とする。
請求項4に記載の発明は、請求項3に記載の構成に加えて、外部入力装置を備え、前記コントローラは前記外部入力装置から得られた情報を前記共通バスに定期的あるいは前記情報の変化時に送出するプログラミング学習装置としたことを特徴とする。
請求項5に記載の発明は、請求項1乃至4の何れかに記載の構成に加えて、前記ブロックユニットは、前記コマンドの種別情報を記録する書き換え可能な記録装置を具備し、前記アクティブ信号入力に応じて前記記録装置より読み出した前記種別情報に対応した前記コマンドを前記共通バスに出力するプログラミング学習装置としたことを特徴とする。
請求項6に記載の発明は、請求項1乃至5の何れかに記載の構成に加えて、メモリを搭載し、前記共通バスより読み出した複数の前記コマンドを前記メモリに格納する機能と、前記アクティブ信号を受けて前記メモリに格納した前記コマンドを読み出して前記共通バスに出力する前記ブロックユニットを含むプログラミング学習装置としたことを特徴とする。
請求項7に記載の発明は、請求項6に記載の構成に加えて、前記ブロックユニットを1つ着脱可能な第2のコントローラを搭載した第2の基板と、第2の出力装置と、を備え、あらかじめ前記基板上で複数の前記コマンドを前記メモリに格納した前記ブロックユニットを、前記第2の基板に装着するプログラミング学習装置としたことを特徴とする。
本発明は、条件分岐による異なる動作および多重ループ処理をプログラミング可能である。これはブロックユニット自体が共通バス上の情報により分岐経路を判断できるためである。
また、少ないブロックユニットでバリエーションに富んだプログラミングが可能である。これはブロックユニット内の種別情報を書き換えることで出力するコマンドを変更できるため、ブロックユニットを有効に活用できるためである。
また、コンパクトな移動ロボットを含む学習装置が実現できる。これは、複数ブロックユニットの接続でプログラミングしたシーケンスを、メモリを搭載したブロックユニット1つに統合が可能であり、移動ロボットは1つのブロックユニットだけを搭載すればよいためである。
また、基板に装着できるブロックユニット数を超えた複雑なプログラミングを行うことができる。これは統合したブロックが他のブロックユニットと接続可能であり、さらなる再統合ができるからである。
本発明の第1の実施の形態におけるブロック図である。 本発明のブロックユニットの裏面を示す斜視図である。 本発明のプログラミング学習装置の基板の外観を示す斜視図である。 分岐処理を行うようにブロックユニットを装着したプログラミング学習装置の外観を示す斜視図である。 図4における内部信号のタイミングチャートである。 ループ処理を行うようにブロックユニットを装着したプログラミング学習装置の外観を示す斜視図である。 図6における内部信号のタイミングチャートである。 2重ループ処理を行うようにブロックユニットを装着したブログらミング学習措置の外観を示す斜視図である。 図8に示すブロックユニット装着時の仮想ロボットの移動経路を示す図である。 障害物回避移動ロボットを実現するようにブロックユニットを装着したプログラミング学習措置の外観を示す斜視図である。 図10に示す移動ロボットの移動経路を示す図である。 本発明の第2の実施の形態におけるプログラミング学習装置の移動ロボットの外観を示す斜視図である。 複数コマンドを統合したブロックユニットを再度利用した装着例を示すプログラミング学習装置の外観を示す斜視図である。
本発明の実施の形態について、図1から図13を用いて説明する。
図1には、本発明の第1の実施の形態におけるブロック図が示されている。
本発明のプログラミング学習装置は、6つのブロックユニット10a、10b、11、12a、12b、13と、基板2、コントローラ21、出力装置3、外部入力装置4で構成され、基板2上の共通バス22に全てのブロックユニットとコントローラ21が接続されている。またコントローラ21に出力装置3と外部入力装置4が接続されている。また、コントローラ21とブロックユニット11間がアクティブ信号a0で接続されており、同様に、ブロックユニット11とブロックユニット10a間はアクティブ信号a1、ブロックユニット10aとブロックユニット12a間はアクティブ信号a2、ブロックユニット11とブロックユニット10b間はアクティブ信号a3、ブロックユニット10bとブロックユニット12b間はアクティブ信号a4、によりそれぞれ接続されている。ブロックユニット間の接続は基板2への装着順により自由に変更できる構造であり、ブロックユニットの個数とアクティブ信号の接続は上記に限定されるものではない。ブロックユニットの着脱および電気的な接続に関して次に説明する。
図2には、ブロックユニット1を裏面から見た斜視図が示されている。図1の6つのブロックユニットはブロックユニット1と同じ構造を持つものとする。裏面は正方形で4つのアクティブ信号用導電部材16が形成されており、裏面を基板2に接するように装着して電気的に接続する構造となっている。裏面の形状は正多角形が望ましい。正方形に限定する必要はなく、例えば正六角形形状でもよい。導電部材はブロックユニット裏面に形成せず、基板2側に形成してもよい。裏面の辺の数にアクティブ信号の本数が依存するため、正六角形形状の場合、6つの導電部材が必要である。裏面の中央には共通バス22と接続するための導電部材15が形成されている。ここでは図示していない共通グランド用の導電部材の他に電源用の導電部材を設けてもよい。導電部材15は中央に配置する必要はないが、ブロックユニットを回転して接続しても基板2の共通バス22に接続できるように基板2側の電極をブロックユニットが装着される領域の中心に対して点対称に配置する必要がある。
図3は出力装置3と外部入力装置4を装着した基板2の外観を示す斜視図である。出力装置3と外部入力装置4は基板2上に必ずしも実装する必要はない。基板2上にはブロックユニット1を固定するための固定用部材23が形成されており、基板2上にブロックユニット1を装着すると、基板2上の電極24および25が、ブロックユニット裏面の導電部材に接触して電気的に接続される。電極24は共通バス22に接続されており、全てのブロックユニットとコントローラ21が接続される。図3の電極25は下に隣接するブロックユニットと接続する配線パターンに接続されているが、同様に上側、左側、右側に隣接するブロックユニットに接続するための電極も含むものとする。ブロックユニット1の装着による電気的な接続を実現するための機構は、例えばピンソケット形状でもよいし、基板2上の電極とブロックユニット1側の電極を、導電性ゴムやメッキしたバネ等を介して結合してもよい。また、ブロックユニット1が基板面に対して0度、90度、180度、270度の4方向のいずれでも装着可能にする構造が望ましい。以上のようにブロックユニットの装着の並び順により、基板2を介してアクティブ信号が隣接ブロックユニット間で接続される。また、図3ではブロックユニットが格子状に4行x4列で16個に接続できるようになっているが、この数値に制約はなく、格子状に限定することもなく、曲面上に配置できる構造であってもよい。また、各ブロックユニットの基準電位あるいはグランドを接続するための電極は図示していないが形成されているものとする。また、基板2から電源を供給するための電極を設けてもよい。
コントローラ21にはディスプレイ形状の出力装置3と、スイッチ形状の外部入力装置4が接続されている。出力装置3はディスプレイ等の表示装置以外の例えばモータ等のアクチュエータでもよい。さらにはブザーやスピーカでもよくそれらの組み合わせでもよい。外部入力装置4も、スイッチだけではなく光センサや超音波センサ、傾きセンサでもよい。またコントローラ21は左上のブロックユニットにアクティブ信号を送るための配線パターンが形成されており、左上に装着したブロックユニットからコマンド処理を実行する。続いて、図1を用いてブロックユニットの動作に関して説明する。
各ブロックユニットは、アクティブ信号を受信すると共通バス22にコマンドを出力し、次に実行する隣接ブロックユニットに対してアクティブ信号を出力する。共通バス22は、パラレルバスインターフェースよりもUART(Universal Asynchronous Receiver/Transmitter)やI2C(Inter−Integrated Circuit)などのシリアルインターフェースの方が、少ない信号線で配線が可能なため望ましい。a0、a1、a2、a3、a4がアクティブ信号であり、最初にコントローラ21がa0をアクティブにするとブロックユニット11はコマンドを共通バス22に送出し、隣接するブロックユニット10aに向けてアクティブ信号a1を出力する。ブロックユニット10aはこれを受けてコマンドを共通バス22に送出し、隣接するブロックユニット12aに向けてアクティブ信号a2を出力する。このようにチェーン状につながったブロックユニットが次々とアクティブになって共通バス22にコマンドを出力していく。従って、ブロックユニットの並びを変えることで出力するコマンドの順番を容易に変更することができ、これがプログラミングに相当する。
最初に実行するブロックユニット11のアクティブ信号a0はコントローラ21が出力してもよいし、電源投入直後にアクティブ信号を出力する図示していない開始機能を有するブロックユニットでもよい。前者の場合は、最初に実行するブロックユニットの装着位置を限定する必要があるがブロックユニットの数を1つ削減できる。一方、後者の場合には最初に実行するブロックユニットの位置に制限がなく開始ブロックユニットに隣接するブロックユニットから実行を開始できる。
コントローラ21は、各ブロックユニットから共通バス22に出力されたコマンドを解釈し、コントローラ21に接続されている出力装置3の状態を変更あるいは保持する。例えば、モータの回転速度や回転方向、ディスプレイに表示される値、またはスピーカが発生する音程や音色などを変更する。また、一定時間待ちを行うコマンドの場合には、現在の状態を保持することになる。
ブロックユニットは、出力するアクティブ信号の本数が異なる3グループと、統合処理を行う特殊機能1種を合わせた4グループがある。
第1のグループは、10aおよび10bのように出力するアクティブ信号の本数が1本であり、モータ制御コマンドで言えば「前進」「後退」「右回転」「左回転」「速度変更」など、出力装置3の状態を変更後に次のコマンドに制御を渡す基本コマンドを出力するものである。また一定時間待ちを行う「タイマー」もこのグループである。
第2のグループは、ブロックユニット11のように出力するアクティブ信号の本数が複数個有するものである。「繰返」「分岐」などコマンドの流れを切替えるフロー制御用コマンドに相当し、どのアクティブ信号を有効にするかを、共通バス22に流れる情報を用いて判断する。
第3のグループは、ブロックユニット12a、12bのようにアクティブ信号を出力しないものである。このグループではフロー制御用コマンドを出力する「復帰」や「先頭戻り」などに相当する。このコマンドを受信した別のブロックユニットあるいはコントローラがアクティブ信号を生成してシーケンスをつないでいく。「復帰」は「繰返」と対にして使用し、この2つのブロックユニットに挟まれたブロックユニットを指定回数だけ繰り返すものとする。
第4のグループであるブロックユニット13は、コマンド統合時には、内蔵するメモリ131に、共通バス22上に流れる複数コマンドをフロー制御コマンドも含めて記録する。また再生時にはアクティブ信号を受けてメモリ131上のコマンドを読み出して共通バス22に出力する。すなわち複数ブロックユニットで実現したものと同じシーケンスを1つのブロックに統合することができる。メモリ131はフラッシュメモリ等の不揮発性メモリが望ましい。また記録/再生の動作を切り替えるためのスイッチを設けてもよい。再生時に一連のコマンド出力が終了後に、隣接ブロック用のアクティブ信号を出力してもよい。これにより「統合」ブロックユニットを再度利用してブロックユニットを連結することでさらに複雑なシーケンスを作ることができる。この機能はプログラミング学習におけるモジュール化に相当する。
ブロックユニットは単にコマンドを出力するだけではなく、共通バス22上の情報を読み出してブロックユニット自身が判断を行うものも存在する。この処理を実現するために、例えば、専用の論理回路で実現してもよいし、小型のマイコンをブロックユニットに実装し、マイコン内のプログラムで実現するようにしてもよい。
ブロックユニットは、出力するコマンドの種別を保持するための書き換え可能な記録装置を有してもよい。この記録装置は例えば、4bit程度のロータリースイッチでもよいし、マイコンのフラッシュメモリでもよい。また、「前進」「タイマー」「繰返」「分岐」などの処理を行う複数のプログラムをマイコン内に配置して、読み出したコマンドの種別に応じてプログラムを切替えるようにしてもよい。これにより、1つのブロックユニットを必要に応じて、「前進」「後退」「繰返」などに変更できるため、少ないブロックユニット数で多くのバリエーションのプログラミング学習を行うことが可能となる。また、コマンド種別に加えて、回転速度や待ち時間、繰返し回数などのパラメータも一緒に記録しておいてもよい。
図4の斜視図には、条件分岐を含むブロックユニットの装着例を示してあり、図1のブロック図に相当する。最初にコントローラ21が出力するアクティブ信号により「分岐」機能のブロックユニット11が最初にアクティブとなる。スイッチ4が押されていない場合には、下向きに隣接している「前進」機能のブロックユニット10aを実行し、次に「先頭戻り」機能のブロックユニット12aを実行する。各ブロックユニットに描かれている三角マークはアクティブ信号の出力先を示している。ブロックユニット12aは「先頭戻り」コマンドであるため、これを検出したコントローラ21が左上のブロックユニット11に向けてアクティブ信号を出力し最初の状態に戻る。ブロックユニット10aは「前進」コマンドを出力するためスイッチが押されない限り「前進」し続けることになる。「前進」とは、ディスプレイ3上の表示された仮想ロボットが動いてもよいし、モータを実装した基板2自体を動かしてもよい。スイッチ4が押された場合、ブロックユニット11は右側に隣接するブロックユニット10bに制御を移す。ブロックユニット10bは「後退」コマンドを出力後、「先頭戻り」機能のブロックユニット12bに制御が移り、左上のブロックユニット11に戻る。
基板2上にはこの他に「統合」機能のブロックユニット13が接続されている。通常は外した状態でプログラミング学習を行う。ブロックユニット13は、ブロックユニット11、10a、12a、10b、12bの連結で実現したシーケンスを、共通バス22から読み出し、内部メモリに記録する。このシーケンスの記録時にはアクティブ信号は不要であるため、他のブロックユニットと隣接配置する必要はない。ブロックユニット13は、統合処理を始める前に、コントローラあるいは全ブロックユニットに対してシーケンス検出動作を始めるコマンドを出力してもよい。このコマンドにより分岐を行うブロックユニットは、外部入力装置4が変化しなくても複数のアクティブ信号を順番に有効にする。各ブロックユニットは分岐経路も含めて順番にコマンドを共通バス22に出力することができる。また、ブロックユニットの並びによっては経路がループするものも存在するが、例えばインクリメントするコマンド番号をコマンドと一緒に共通バス22に出力することでループ状態を判断することができる。
図5は図4に示すブロックユニットを装着したプログラミング学習装置の内部信号を示すタイミングチャートである。起動後、コントローラ21はブロックユニット11に接続されている信号線a0にアクティブ状態を示すHiレベルのパルスを出力する。アクティブ信号は1ビットのレベル信号として描かれているがバスインターフェースにアクティブ状態を示すコマンドを出力する形式でも構わない。ブロックユニット11は、このHiレベルを受けて、まず共通バスbsに流れるセンス情報を取得後、コマンドc0を出力する。共通バスbsにはセンサの検出情報sensがコントローラ21を介して定期的に出力されている。検出情報が変化した時だけ出力してもよい。タイミングチャートではsens信号は2値のレベル信号として記載しているが、距離、温度、角度といった多値情報であってもかまわない。
ブロックユニット11はこのセンス情報が0であることより2本あるアクティブ信号出力のうちa1にHiレベルパルスを出力する。これを受けてブロックユニット10aはコマンドc1を共通バスbsに出力し、隣接するブロックユニット12aのアクティブ信号a2にHiレベルパルスを出力する。ブロックユニット12aがアクティブになると「先頭戻り」を意味するコマンドc2を共通バスbsに出力する。コントローラ21は共通バス21にセンス情報を出力しながら流れるコマンドを監視している。そして「先頭戻り」コマンドを受信するとアクティブ信号a0にHiレベルパルスを出力することでブロックユニット11に制御が戻る。アクティブ信号a0を受けてブロックユニット11はコマンドc0を共通バスbsに出力する。先に読み出したセンス情報が1であるため今度はアクティブ信号a3にHiレベルパルスを出力する。アクティブ信号a3を受けてブロックユニット10bがアクティブとなりコマンドc3を共通バスbsに出力し、隣接するブロックユニット12bのアクティブ信号a4にHiレベルパルスを出力する。ブロックユニット12bはアクティブ信号a4を受けてアクティブとなり「先頭戻り」コマンドc4を出力し、ブロックユニット11に制御が戻る。このようにセンス情報に応じて分岐した異なるシーケンスを行うことができる。
図6の斜視図は、繰返し処理を行うブロックユニットの装着例を示したものあり、図1のブロック図に相当する。初めにコントローラ21はアクティブ信号を基板2の左上に装着した「繰返」機能のブロックユニット11に出力する。ブロックユニット11はまず下向きに隣接するブロックユニット10aに制御を渡す。ブロックユニット10aは「30度回転」コマンドを送出して下向きに隣接しているブロックユニット12aに制御を渡す。ブロックユニット12aは「復帰」を意味するコマンドを共通バス22に出力する。ブロックユニット11は、一度アクティブになった後は共通バスに流れるコマンドを監視し「復帰」コマンドの送出を検出すると、「復帰」コマンドの出現回数に応じて下向きか右向きのどちらかにアクティブ信号を出力する。ブロックユニット11には「繰返」を示すコマンド種別の他に、繰返し回数を指定するパラメータがあらかじめ設定されており、「復帰」コマンドの出現回数がこの繰返し回数に到達していない場合には下向きに制御を渡し、到達した場合には右向きに制御を渡すものとする。ブロックユニット11に記載されている数字3は繰返し回数を示すものとする。ブロックユニット10a、12aがそれぞれ3回アクティブになったのちに右に隣接するブロックユニット10bに制御が渡る。「繰返」と「復帰」に挟まれたブロックユニット「30度回転」が3回実行される。「繰返」と「復帰」の間に配置するブロックユニットは1つである必要はなく、「繰返」「30度回転」「前進」「復帰」のように複数のブロックユニットを装着してもよい。この場合、「30度回転」→「前進」→「復帰」→「30度回転」→「前進」→「復帰」→「30度回転」→「前進」「復帰」→のように実行される。
図7は図6に示すブロックユニットを装着したプログラミング学習装置の内部信号を示すタイミングチャートである。起動後、コントローラ21はブロックユニット11に接続されている信号線a0にアクティブ状態を示すHiレベルのパルスを出力する。アクティブ信号a0を受けて「繰返」機能のブロックユニット11はアクティブとなり、共通バスbsにコマンドc0を出力すると同時に内部のループカウンタcntを零に初期化する。あらかじめ設定されているループ回数と、内部カウンタ値を比較してループ回数に到達していない場合には2つあるアクティブ信号出力のうちa1にHiパルスを出力する。アクティブ信号a1を受けてブロックユニット10aはc1コマンドを共通バスbsに出力し、隣接ブロックユニット12aに向けてアクティブ信号a2にHiパルスを出力する。ブロックユニット12aは「復帰」コマンドを共通バスbsに出力する。ブロックユニット11は共通バスbsに流れるコマンドを監視して「復帰」コマンドを検出すると内部カウンタcntをインクリメントする。この結果cnt値は1となる。ループ回数(=3)と、内部カウンタ値を比較してループ回数に到達していないためアクティブ信号出力a1にHiパルスを出力する。このようにループ回数と内部カウンタ値が一致するまで繰返しを実行する。コマンドc3が3回検出されると、ブロックユニット11はアクティブ信号a3にHiパルスを出力してループ処理が終了するとともに次に続くコマンド処理が実行される。「繰返」コマンドと「分岐」コマンドを組み合わせもよく、「繰返」を2重にすると2重ループを実現することもできる。
図8は2重ループを実現するブロックユニットの装着例を示した基板2の斜視図である。ブロックユニット11b、10a、10b、12aにより「前進」「45度回転」を4回繰り返すループ処理となる。またブロックユニット11c、10c、10d、12bにより「前進」「45度逆転」を4回行うループ処理となる。この2つのループが順番に実行され、さらにこれらが「繰返」機能ブロックユニット11aと「復帰」機能ブロックユニット12cの間に配置されるので2重ループ処理が実行される。「繰返」機能ブロックユニットは、「復帰」コマンドにより内部カウンタを変更するが、どのループ階層の「復帰」コマンドであるかを判断するため、「復帰」コマンド出力時にループの深さを示す番号を付加して送出し、これをもとに判断してもよい。
図9は図8に示す2重ループ処理を仮想ロボットに対して実行した場合の移動軌跡を示す図である。図中の数字は時刻を示しており。時刻0から下向きに進むものとする。最初の内側ループである「前進」→「45度回転」を4回実行すると8角形の半分の軌跡となり、時刻4の位置でループを抜ける。続いて次の内側ループである「前進」→「45度逆転」を4回実行すると、最初の軌跡と合わせて横向きのS字の軌跡になり、時刻8の位置でループを抜ける。そしてこれが外側のループで2回実行され、時刻16の位置で停止する。
図10は、2つの外部入力装置4aと4bと、2つのモータを搭載した出力装置3を搭載したプログラミング学習装置の斜視図である。外部入力装置4aと4bは反射型の光センサあるは超音波センサであり、壁などの反射面とセンサの距離が一定以下になると反応するように動作する。これが進行方向に対して右側と左側にそれぞれ取り付けられている。基板2には9個のブロックユニットが装着されており、ブロックユニット14a、14b、14cは隣接するブロックユニットどうしのアクティブ信号を接続するだけのブロックユニットであり共通バスにコマンドは送出しない。
最初にコントローラ21はブロックユニット11aにアクティブ信号を出力する。ブロックユニット11aは、センサ4aのセンス情報に基づいて分岐先を判断する「分岐」機能のブロックユニットであり、センサ4aが未検出なら下向きのブロックユニット11bに制御を渡す。ブロックユニット11bはセンサ4bのセンス情報に基づいて分岐先を判断する「分岐」機能のブロックユニットであり、センサ4bが未検出ならば下向きに制御を渡す。ここでブロックユニット14aはブロックユニット11bが出力したアクティブ信号をそのまま右隣りのブロックユニット10cに渡す。ブロックユニット10cは「前進」コマンドを出力して右隣りのブロックユニット12に制御を渡す。これによりブロックユニット12がアクティブとなり「先頭戻り」コマンドを出力する。コントローラ21はブロックユニット12が出力した「先頭戻り」コマンドを検出し、ブロックユニット11aにアクティブ信号を出力し、初めに戻る。
センサ4aが障害物を検知した場合、ブロックユニット11aは右向きに制御を渡す。右に隣接しているブロックユニット10aがアクティブとなり「60度回転」コマンドを発行し、右向きにアクティブ信号を出力する。右に隣接しているブロックユニット14bは単純接続機能でありブロックユニット10aが出力したアクティブ信号をそのまま下向きに出力する。ブロックユニット14bの下に配置されたブロックユニット14cも単純接続機能であり、さらに下に配置されているブロックユニット12にアクティブ信号を出力する。ブロックユニット12は「先頭戻り」コマンドを出力し、これを受信したコントローラ21はブロックユニット11aに制御を渡し、初めに戻る。
センサ4aが未検知で、センサ4bが障害物を検知した場合、まずブロックユニット11aは下向きに制御を渡す。下に隣接するブロックユニット11bはセンス情報により右向きに制御を移す。アクティブとなったブロックユニット10bは「60度逆転」コマンドを出力し、右向きにアクティブ信号を出力する。右隣接ブロックユニットは単純接続機能のため、ブロックユニット10bが出力したアクティブ信号をブロックユニット14cの下隣接ブロックユニット12に渡し、制御が移る。ブロックユニット12は「先頭戻り」コマンドを出力し、これを検知したコントローラ21は、先頭ブロックユニット11aにその制御を渡す。
このように、左側のセンサ4aが障害物を検出した場合、時計周りに60度回転し、右側センサ4bが障害物を検知した場合は、反時計回りに60度回転し、どちらも検知できない場合には前進するように動作する。すなわち障害物を避けて進むことができる。
図11は、図10に示した移動ロボットの移動軌跡を示した図である。両側が蛇行した壁で覆われた通路があり、移動ロボットは図面の下から動き始めるものとする。図中の2つに数値のセットは、左側がセンサ4aのセンス結果、右側がセンサ4bのセンス結果である。未検出時は0、障害物を検知すると1になるものとする。開始直後は両センサとも未検出のため直進する。A点でセンサ4aが反応して60度回転後直進する。次にB点でまたセンサ4aが反応して60度回転後直進する。C点で今度はセンサ4bが反応して60度逆転後直進し、D点でセンサ4aが反応して60度回転後直進し、E点でセンサ4bが反応して60度逆転して直進する。このように蛇行した通路を壁に衝突することなく進ませることが可能である。
図12には本発明第2の実施の形態におけるプログラミング学習装置の移動ロボットの斜視図である。図12には、ブロックユニット13が一つ装着できる第2のコントローラ21bが実装された第2の基板2bと、外部入力装置4bが、出力装置3bの上に搭載されている。搭載するブロックユニット13は、あらかじめ図4に示す第1の基板2上で複数のブロックユニットを使って実現したシーケンスを統合したものである。従って、第2の実施の形態のプログラミング学習装置は、図4に示す複数ブロックユニットが装着できるプログラミング学習装置と、図12に示す移動ロボットのセットで用いる必要がある。第1の実施の形態と同様に、出力装置3bは、連続回転するモータに限定する必要はなく、サーボモータや、ディスプレイ等の表示装置、あるいは音声発生器でも構わない。ブロックユニットの装着領域が1つであることから、移動ロボットを小型化できる。
第1の基板2上にWi−Fi(Wireless Fidelity)やBLE(Bluetooth Low Energy)等の無線送信装置を取り付け、移動ロボット上の第2の基板2b上に同じ通信規格の受信装置を取り付けて、プログラミングシーケンスを第1の基板2から第2の基板2bに無線送信することで、第2の基板2b上にはブロックユニットの装着領域も不要としてもよい。
図13は、統合機能ブロックユニットの再利用例を示す基板2の斜視図である。「統合」機能のブロックユニット13aが「繰返」ブロックユニットと「復帰」ブロックユニット内に配置されているので「統合」機能ブロックユニット内の一連のシーケンスが繰り返され、その後別の「統合」機能ブロックユニット13bが実行されて先頭に戻る。このように、あらかじめ作成しておいた「統合」機能ブロックユニットを他のブロックユニットと連結して新たなシーケンスを作成できる。また、このシーケンスを別の「統合」機能ブロックユニットに書込み、1つのブロックユニットに再統合することができる。これを繰り返すと、例えば図13のように16個までしかブロックユニットを装着できない基板であっても、「統合」機能のブロックユニットが内部メモリに保存できるコマンド数x16ブロックまで複雑なシーケンスを実現することができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記述から明らかである。
1 ブロックユニット
10 アクティブ信号出力を1本持つブロックユニット
11 アクティブ信号出力を複数本持つブロックユニット
12 アクティブ信号を出力しないブロックユニット
13 コマンドシーケンスの記録再生機能を有するブロックユニット
131 メモリ
14 信号接続用ブロックユニット
15 共通バス用導電部材
16 アクティブ信号用導電部材
2 基板
21 コントローラ
22 共通バス
23 ブロックユニット固定部材
24 共通バス用電極
25 隣接ブロックユニット連結用電極
3 出力装置
4 外部入力装置
図12には本発明第2の実施の形態におけるプログラミング学習装置の移動ロボットの斜視図である。図12には、ブロックユニット13が一つ装着できる第2のコントローラ21bが実装された第2の基板2bと、外部入力装置4bが、出力装置3bの上に搭載されている。搭載するブロックユニット13は、あらかじめ図4に示す第1の基板2上で複数のブロックユニットを使って実現したシーケンスを統合したものである。従って、第2の実施の形態のプログラミング学習装置は、図4に示す複数ブロックユニットが装着できる第1のコントローラ21と第1の基板2を有するプログラミング学習装置と、図12に示す移動ロボット(第2のコントローラ21bと第2の基板2bを実装)両方を備えているものとする。第1の実施の形態と同様に、出力装置3bは、連続回転するモータに限定する必要はなく、サーボモータや、ディスプレイ等の表示装置、あるいは音声発生器でも構わない。ブロックユニットの装着領域が1つであることから、移動ロボットを小型化できる。

Claims (7)

  1. アクティブ信号入力に応じてコマンドを出力する複数のブロックユニットと、前記ブロックユニットが複数着脱可能でかつ前記ブロックユニットの共通バスに接続されたコントローラを搭載した基板と、出力装置と、を備え、
    前記ブロックユニットは、隣接する前記ブロックユニット又は前記コントローラから前記アクティブ信号を受け、前記コマンドを前記共通バスに出力し、
    前記コントローラは、前記共通バスより読み出した前記コマンドに従って前記出力装置の状態を変更あるいは保持することを特徴とする、プログラミング学習装置。
  2. 前記コマンドを前記共通バスに出力すると共に、前記コマンド固有の方向に隣接して装着された前記ブロックユニットに前記アクティブ信号を出力する前記ブロックユニットを含むことを特徴とする、請求項1に記載のプログラミング学習装置。
  3. 複数の隣接する前記ブロックユニットのいずれに前記アクティブ信号を出力するかを、前記共通バス上の情報より判断する前記ブロックユニットを含むことを特徴とする、請求項2に記載のプログラミング学習装置。
  4. 外部入力装置を備え、前記コントローラは前記外部入力装置から得られた情報を前記共通バスに定期的あるいは前記情報の変化時に送出することを特徴とする、請求項3に記載のプログラミング学習装置。
  5. 前記ブロックユニットは、前記コマンドの種別情報を記録する書き換え可能な記録装置を具備し、前記アクティブ信号入力に応じて前記記録装置より読み出した前記種別情報に対応した前記コマンドを前記共通バスに出力することを特徴とする、請求項1乃至4の何れかに記載のプログラミング学習装置。
  6. メモリを搭載し、前記共通バスより読み出した複数の前記コマンドを前記メモリに格納する機能と、前記アクティブ信号を受けて前記メモリに格納した前記コマンドを読み出して前記共通バスに出力する前記ブロックユニットを含むことを特徴とする、請求項1乃至5の何れかに記載のプログラミング学習装置。
  7. 前記ブロックユニットを1つ着脱可能な第2のコントローラを搭載した第2の基板と、第2の出力装置と、を備え、
    あらかじめ前記基板上で複数の前記コマンドを前記メモリに格納した前記ブロックユニットを、前記第2の基板に装着することを特徴とする、請求項6記載のプログラミング学習装置。
JP2020050093A 2020-03-04 2020-03-04 プログラミング学習装置 Active JP6915193B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020050093A JP6915193B1 (ja) 2020-03-04 2020-03-04 プログラミング学習装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020050093A JP6915193B1 (ja) 2020-03-04 2020-03-04 プログラミング学習装置

Publications (2)

Publication Number Publication Date
JP6915193B1 JP6915193B1 (ja) 2021-08-04
JP2021140124A true JP2021140124A (ja) 2021-09-16

Family

ID=77057523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020050093A Active JP6915193B1 (ja) 2020-03-04 2020-03-04 プログラミング学習装置

Country Status (1)

Country Link
JP (1) JP6915193B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7458101B1 (ja) 2023-02-01 2024-03-29 有限会社シグナリス プログラミング装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113674585A (zh) * 2021-08-18 2021-11-19 杭州优必学科技有限公司 一种编程学习机***

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7458101B1 (ja) 2023-02-01 2024-03-29 有限会社シグナリス プログラミング装置

Also Published As

Publication number Publication date
JP6915193B1 (ja) 2021-08-04

Similar Documents

Publication Publication Date Title
JP6915193B1 (ja) プログラミング学習装置
US20240157263A1 (en) Connecting structures in a modular construction kit
JP5563464B2 (ja) 玩具構築システム
KR100625134B1 (ko) 마이크로 프로세서 제어 완구 조립 요소 및 완구 조립 세트
CN101454059B (zh) 玩具构建***及其功能构建组件、控制构建组件和扩展组件
KR100495963B1 (ko) 로봇장치및그제어방법
CN107185259A (zh) 用于多方位连接的电子模块和模块化电子构建***
US6591165B2 (en) Robot apparatus, body unit and coupling unit
JP2013517077A (ja) 可動モジュールを用いたビルディングブロックシステム
KR101966914B1 (ko) 코딩 교육을 위한 완구용 로봇 제어 시스템
Armada et al. Locomotion of a Modular Worm-like Robot using a FPGA-based embedded MicroBlaze Soft-processor
KR101437148B1 (ko) 기능확장이 용이한 로봇용 액츄에이터 모듈
KR101379430B1 (ko) 독립된 기능을 갖는 로봇용 액츄에이터 모듈
Hamblen Using an FPGA-based SOC approach for senior design projects
JP2020038450A (ja) 自走式機器及び自走式機器システム
Hui et al. A swarm framework for teaching elementary addition operations
JPS58146379A (ja) ロボツト玩具セツト
TWM563908U (zh) 編程玩具組
Baichtal et al. Hacking Your LEGO Mindstorms EV3 Kit
CN212914512U (zh) 一种可编程的运动小车
KR102353986B1 (ko) 코딩 교육용 장치
KR200352515Y1 (ko) 재사용 가능한 제어용 프로토타입 모델에 대한 임베디드실시간 시스템 및 그에 따른 제어 장치
Costa et al. Squirlrob: A Do It Yourself Arduino and Smartphone Hardware and Software Platforms for Robotics Education
JP3236230B2 (ja) 無線通信による外部被制御系の制御方式
JPH09266987A (ja) 移動模型の自律航法装置

Legal Events

Date Code Title Description
A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200817

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200817

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210408

R150 Certificate of patent or registration of utility model

Ref document number: 6915193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350