鄭 - aows.jpaows.jp › lab › gr_2010 › tei › tei.pdf · microtechnica 社製のisd1700...

99
卒業研究論文 2011 2 玩具メーカーの商品開発の シミュレーション (所属ゼミ:和島ゼミ) ソフトウェア情報学部 ソフトウェア情報学科4年 19022 鄭 真伍

Upload: others

Post on 06-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

卒業研究論文

2011 年 2 月

玩具メーカーの商品開発の

シミュレーション

(所属ゼミ:和島ゼミ)

ソフトウェア情報学部

ソフトウェア情報学科4年

ソ 19022 鄭 真伍

Page 2: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

1

1. 序論 ................................................................................................................................................ 3

1.1. 背景 ......................................................................................................................................... 3

1.2. 開発の流れ .............................................................................................................................. 3

2. 開発環境 ......................................................................................................................................... 4

2.1. ソフトウェア ........................................................................................................................... 4

2.1.1. 筺体設計 ........................................................................................................................... 4

2.1.2. 回路設計 ........................................................................................................................... 4

2.1.3. プログラミング ................................................................................................................ 4

2.2. ハードウェア ........................................................................................................................... 4

2.2.1. 筐体製作 ........................................................................................................................... 4

2.2.2. 回路製作 ........................................................................................................................... 5

2.2.3. コントロール用マイコンボード ....................................................................................... 5

2.2.4. 音声録音・再生用 IC ........................................................................................................ 6

2.2.5. SBH-361B ........................................................................................................................... 6

3. 企画 ................................................................................................................................................ 7

3.1. 開発プロジェクト .................................................................................................................... 7

3.2. 市場調査 .................................................................................................................................. 7

3.3. 開発製品の決定 ...................................................................................................................... 11

4. 設計 .............................................................................................................................................. 13

4.1. メダル .................................................................................................................................... 13

4.1.1. 仕様 ................................................................................................................................ 13

4.1.2. 形状設計 ......................................................................................................................... 14

4.2. ベルト .................................................................................................................................... 14

4.2.1. 仕様 ................................................................................................................................ 14

4.2.2. 形状設計 ......................................................................................................................... 14

4.2.2.1. メダル保持・解放のギミック ..................................................................................... 15

4.2.2.2. メダルの有無、種類の認識 ......................................................................................... 15

4.2.2.3. 蓋の開閉の認識 ........................................................................................................... 16

4.2.2.4. LED の増光のための工夫 ............................................................................................. 16

4.2.2.5. スピーカ固定部 ........................................................................................................... 16

4.2.2.6. コントロール用ボタン ................................................................................................ 17

4.2.2.7. ベルトホルダー ........................................................................................................... 17

4.2.3. 回路設計 ......................................................................................................................... 18

4.2.3.1. 部品登録 ..................................................................................................................... 18

4.2.3.2. サウンド IC・入出力用基板 ........................................................................................ 20

4.2.3.3. LED 用基板 ................................................................................................................... 23

4.2.3.4. メダル認識用基板 ....................................................................................................... 24

4.2.3.5. 蓋認識用基板 .............................................................................................................. 25

Page 3: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

2

4.2.3.6. コントロールボタン用基板 ......................................................................................... 26

4.2.3.7. 電源スイッチ用基板 ................................................................................................... 27

4.3. ArduinoIDE によるコーディング ........................................................................................... 28

4.3.1. 音声の録音 ......................................................................................................................... 30

4.3.2. 音声の再生 ......................................................................................................................... 32

4.3.3. LED の点灯 .......................................................................................................................... 35

5. 製作 .............................................................................................................................................. 36

5.1. 3D プリンタによる出力 .......................................................................................................... 36

5.1.1. 手順 ................................................................................................................................ 36

5.2. 基板製作 ................................................................................................................................ 41

5.2.1. 基板加工機による基板加工 ............................................................................................ 41

5.2.2. ハンダ付け ..................................................................................................................... 45

5.3. 彩色 ....................................................................................................................................... 46

5.4. 組み立て ................................................................................................................................ 48

5.5. 動作例 .................................................................................................................................... 52

6. 考察 .............................................................................................................................................. 53

6.1. 達成度 .................................................................................................................................... 53

6.2. 改善案 .................................................................................................................................... 53

7. 謝辞 .............................................................................................................................................. 54

付録 A. アンケート文面 .......................................................................................................................... 55

付録 B. 開発計画資料 ............................................................................................................................. 57

付録 C. 「ベルト」開発班資料 ............................................................................................................... 60

付録 D. 「武器」開発班資料 ................................................................................................................... 65

付録 E. 「メダル」開発班資料 ............................................................................................................... 69

付録 F. 図面 ............................................................................................................................................ 71

付録 G. 筺体部品 .................................................................................................................................... 79

付録 H. 回路基板 .................................................................................................................................... 83

付録 I. 録音設定変更プログラム ........................................................................................................... 85

付録 J. 「ベルト」コントロールプログラム .......................................................................................... 87

Page 4: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

3

1. 序論 1.1. 背景

3年の創作ゼミでは「模型の設計と製作」をテーマに、3D CAD を使ってオリジナルの変形ロボット

玩具を製作した。これを通じて立体的な設計のノウハウや製作の経験が得られた。しかし、製作物が単

に「自分が作りたかったもの」であったため、実社会で必要とされるさまざまな知識が不足していると

感じた。

そこで、消費者側でなく開発者側の視点で商品を分析してプロの目を養うため、実際の企業での製品

開発の過程を調査し企画から販売終了の段階までをシミュレートすることを卒業研究のテーマとした。

その際、シミュレーションをなるべく実際の開発と近づけるため、多少なりとも自分が予備知識を持っ

ている玩具業界を対象に選んだ。

1.2. 開発の流れ

研究は「プロジェクト作成」と「実機の設計・製作」に分かれる。

プロジェクト作成では、開発から販売終了までの流れをできるだけ再現することを心がけた。初めに

浪館小学校の児童の方々に協力を頂き、テレビの特撮シリーズ「仮面ライダー」の現行商品についての

アンケート調査を行った。このデータを元にそれぞれの商品の売れ行きを見積もり、それと合わせて使

用されている電子部品の点数や筺体の大きさ・複雑さなどから開発、製造のコストを見積もった。これ

を踏まえて、年間を通して も大きい利益が得られる「変身ベルト」「武器」の2点を開発することとし

た。

開発商品の決定後に、それぞれの商品について企業で編成されると思われる「開発チーム」のメンバ

ー構成を考え、それぞれのチームが役員に対して行うプレゼンテーションの資料、チーム内部での情報

共有のための資料、チーム全体・メンバーごとのタイムスケジュールを制作した。

実機の製作にあたっては筐体と回路系をいずれもオリジナル設計のものにした。筐体の設計では児童

の使用を考慮に入れ、「丈夫さ」「直感的な操作」を優先した。また、現行の商品を参考にして子供の所有

欲を書きたてるような「かっこよさ」も取り入れた。一方、実際に流通している商品ではほぼ全てのも

ので回路系はワンチップ化されているが、卒業研究でそのようなチップを作ることができないため汎用

のコントロール用の IC ボードと音声ボードを組み合わせ、プログラムを書き込んで動作させた。なお、

IC ボードから音声ボード、筐体の各部に配置するスイッチや LED などに信号を渡すための基板は回路

CAD を用いて設計・製作した。

Page 5: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

4

2. 開発環境 ここでは開発に使用したアプリケーションやハードウェアについて記述する。

2.1. ソフトウェア

2.1.1. 筺体設計

3D CAD SolidWorks 2010 SP4.0 [1] [2] [3]を使用した。設計段階ではこのアプリケーションの三次元

的なモデリングとその組み合わせ(アセンブリ)の機能を使用した。特にアセンブリにおいては部品同士の

干渉の判定の機能を使い、ジョイント部分の設計の修正などを行った。

2.1.2. 回路設計

EAGLE(Easily Applicable Graphical Layout Editor) 5.10 を使用した。このアプリケーションでは回

路設計と基板設計が連動しており、回路に追加した素子に相当する部品が基板に自動的に追加される。

また、ライブラリには多くの既製品の素子が含まれるが、ライブラリに存在しない部品は回路図と基板

の双方の形状を作成して登録し、それを利用した。

2.1.3. プログラミング

Arduino IED0019 [4]を使用した。これは Processing をベースとした総合開発環境であり、エディタ、

コンパイラ、Arduino への書き込みの機能をもつ。ここでは音声 IC の設定書き変えプログラム、ベルト

のコントロールプログラムの開発に使用した。

2.2. ハードウェア

2.2.1. 筐体製作

3D プリンタ Dimension を使用した。これは ABS 樹脂の「モデル剤」を熱で溶融させ、太さ 0.2mm

のフィラメントとして積層させてパーツを成型するものである。その際、必要な部分には土台となる「サ

ポート剤」が同様にして置かれる。

図 2.1 Dimension

Page 6: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

5

本研究では、SolidWorks 2010 で制作した設計データを元に、3D 設計の一般的な CAM データ形式であ

る STL 形式のファイルを作成し、それを Dimension の付属アプリケーション Catalyst でモデル剤とサ

ポート剤を送り出すヘッドの移動情報に変換して本体にそのデータを送信して部品を製作した。

2.2.2. 回路製作

基板切削加工機 RS21 を使用した。これは、絶縁体の片面または両面に薄い銅箔がコーティングされ

たベース基板を使いドリルで穴を開けたり、ミリングカッタ(ほんのわずかだけ基板にささった状態で回

転しながら水平に移動する)で不要な銅箔を削り取ることで目的とする基板を製作するものである。

本研究では、EAGLE で制作した設計データを元にしてドリル穴・配線・基板外形の NC データを作成

し、それを加工機付属のアプリケーション FLASH Win に読み込んで使用した。なお、実際の加工の際

に必要となるのは配線データではなく配線の周りの「輪郭データ」であるが、それは FLASH Win の機

能を使って配線データを元に作成した。

図 2.2 RS21

2.2.3. コントロール用マイコンボード

Arduino Software 社製の Arduino Duemilanove [5]を使用した。基板上には Amtel のマイクロコント

ローラ ATmega328 が実装され、これに Processing か Wiring で組んだプログラムを書き込んで動作さ

せることができる。多くのデジタル/アナログ入出力端子を持ち、そのうち特定のものはプログラムから

入出力の設定を変える事ができる。本研究では 5 個のデジタル入力、3 個のデジタル出力、6 個のアナロ

グ出力を使用し、Processing でプログラムを組んだ。

Page 7: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

6

図 2.3 Arduino Duemilanove

2.2.4. 音声録音・再生用 IC

microtechnica 社製の ISD1700 シリーズの IC を使用した。これは「スタンドアロンモード」と「SPI

モードの 2 つのモードを持ち、スタンドアロンモードでは REC, PLAY, FT, FWD, ERASE, VOL,

RESET の各入力ピンを使用し、すべての音声に関する制御を自動的に行う。SPI モードではスタンドア

ロンモードの 7 つの入力に相当する機能だけでなく、アドレスを指定して録音・再生を行うなど、4 線式

シリアル信号によるコマンド入力でより詳細なコントロールができる。

本研究ではこのシリーズのうち、音声録音に 330KB のメモリ領域を使用できる ISD17180PY を選択

した。

2.2.5. SBH-361B

Comfortable Electronic Co Ltd 製の単三電池 6 個用の電池ボックスである。Arduino への電源供給の

ために使用した。

図 2.4 SBH-361B

Page 8: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

7

3. 企画 3.1. 開発プロジェクト

前述の通り、制作物の選定は実際の企業での製品開発を想定して行った。前提条件として

A) 2012 年の特定のテレビ番組中に登場するものに類似した玩具を開発する

B) 年間を通じた商品の投入時期を決定する

C) そのうち 2 つの商品を開発するチームの業務をシミュレートする

を仮定した。なお、A)のテレビ番組のモデルとして実際に存在する男児向け特撮番組である仮面ライダ

ーを、企業のモデルとして毎年その番組とタイアップして商品の開発、販売を行っているバンダイを想

定した。今後この仮想的な番組と企業を、鍵括弧をつけて「番組」「企業」と記述し、実在するものと区

別する。

なお「番組」は 2012 年の 1 月から翌年の 1 月まで放送されるものとした。

3.2. 市場調査

「企業」での製品開発のスケジュール [6]を考えるにあたり、まず実在企業であるバンダイ [7]が 2010

年の仮面ライダーの開連商品をどのようなタイムスケジュールで販売しているのかを調査した。

表 3.1 バンダイの番組関連商品

商品名 価格 番組登場時期 販売日

変身ベルト DX ダブルドライバー 6,825 2009/9/6 2009/9/5

メモリガジェット 01 スタッグフォン 3,150 2009/9/6 2009/9/5

メモリガジェット 02 スパイダーショック 3,150 2009/9/6 2009/9/5

メタルシャフト 3,675 2009/9/13 2009/9/19

トリガーマグナム 4,410 2009/10/4 2009/10/10

メモリガジェット 03 バットショット 3,675 2009/9/6 2009/10/24

スカルマグナム 4,410 2009/12/12 2009/12/12

変形ガイア恐竜 ファングメモリ 3,670 2009/12/12 2009/12/26

メモリガジェット 04 ビートルフォン 3,150 ― 2009/12/26

変身ベルト DX アクセルドライバー 5,040 2010/1/24 2010/1/23

エンジンブレード 3,990 2010/1/24 2010/1/23

メモリガジェット 05 フロッグポッド 3,675 2010/3/7 2010/3/20

メモリガジェット 06 デンデンセンサー 3,675 2010/3/21 2010/3/20

変形ガイア鳥 エクストリームメモリ 3,675 2010/4/18 2010/4/10

超多色発光剣 DX プリズムビッカー 6,825 2010/4/18 2010/4/24

マキシマムカウンター トライアルメモリ 3,360 ― 2010/5/22

ドーパントメモリ 1,260 2009/9/6 2010/5/29

Page 9: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

8

次に、これらの商品が実際にどれだけ売れているかを調査するため、浪館小学校の校長先生を通じて 1

~3 年生の児童の方々に協力を頂いて所有状況などについての調査を行った。

回答数は 6 歳 26 名、7 歳 34 名、8 歳 47 名であった。9 歳の回答も1名あったが統計的に扱うことがで

きないためここでは除外した。回答結果を表 3.2~3.4 に示す。

表 3.2 アンケート集計結果(所有)

商品名 6歳 7歳 8歳

変身ベルト DX ダブルドライバー 6 2 5

メモリガジェット 01 スタッグフォン 2 3 2

メモリガジェット 02 スパイダーショック 1 3 2

メタルシャフト 2 1 4

トリガーマグナム 2 3 4

メモリガジェット 03 バットショット 3 1 1

スカルマグナム 0 1 0

変形ガイア恐竜 ファングメモリ 2 4 3

メモリガジェット 04 ビートルフォン 0 2 2

変身ベルト DX アクセルドライバー 2 3 3

エンジンブレード 2 2 1

メモリガジェット 05 フロッグポッド 0 3 1

メモリガジェット 06 デンデンセンサー 1 1 1

変形ガイア鳥 エクストリームメモリ 1 4 1

超多色発光剣 DX プリズムビッカー 1 3 1

マキシマムカウンター トライアルメモリ 0 2 1

ドーパントメモリ 0 2 1

Page 10: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

9

表 3.3 アンケート集計結果(お気に入り)

商品名 6歳 7歳 8歳

変身ベルト DX ダブルドライバー 3 1 3

メモリガジェット 01 スタッグフォン 1 1 0

メモリガジェット 02 スパイダーショック 1 1 1

メタルシャフト 1 0 0

トリガーマグナム 2 1 3

メモリガジェット 03 バットショット 2 1 0

スカルマグナム 0 0 0

変形ガイア恐竜 ファングメモリ 1 2 0

メモリガジェット 04 ビートルフォン 0 1 1

変身ベルト DX アクセルドライバー 1 1 0

エンジンブレード 1 1 0

メモリガジェット 05 フロッグポッド 2 0

メモリガジェット 06 デンデンセンサー 0 1 0

変形ガイア鳥 エクストリームメモリ 1 2 0

超多色発光剣 DX プリズムビッカー 0 1 0

マキシマムカウンター トライアルメモリ 0 1 1

ドーパントメモリ 0 1 0

Page 11: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

10

表 3.4 アンケート集計結果(欲しい)

商品名 6歳 7 歳 8 歳

変身ベルト DX ダブルドライバー 13 21 24

メモリガジェット 01 スタッグフォン 12 10 10

メモリガジェット 02 スパイダーショック 12 10 14

メタルシャフト 14 13 20

トリガーマグナム 12 13 18

メモリガジェット 03 バットショット 11 10 14

スカルマグナム 16 13 21

変形ガイア恐竜 ファングメモリ 15 18 27

メモリガジェット 04 ビートルフォン 11 10 8

変身ベルト DX アクセルドライバー 14 15 15

エンジンブレード 15 17 23

メモリガジェット 05 フロッグポッド 14 9 13

メモリガジェット 06 デンデンセンサー 11 10 15

変形ガイア鳥 エクストリームメモリ 17 16 25

超多色発光剣 DX プリズムビッカー 20 23 26

マキシマムカウンター トライアルメモリ 17 17 19

ドーパントメモリ 8 12 18

*アンケート項目の「無くした」「壊した」についてはいずれも回答数 0 であったため表は省略する。

Page 12: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

11

3.3. 開発製品の決定

アンケート結果と実売価格・人口統計から、それぞれの商品のうち利益の高いもの、低いものは表 3.6

のように見積もることができる。一方、パーツ数などから企画、デザイン、設計にかかるコストや、ラ

イン確保、塗装、組み立て、輸送、倉庫でのパーツ確保の費用などを総合的に判断して、生産コストを

分析した(表 3.7)。

表 3.5 6~8 歳の人口統計(平成 20 年度)

年齢(歳) 男 女

6 604,292 575,444

7 610,904 582,445

8 608,086 580,785

表 3.6 利益見積もり

略称 商品名 利益

A 変身ベルト DX ダブルドライバー

B 変身ベルト DX アクセルドライバー

C メタルシャフト

D トリガーマグナム

E エンジンブレード

F スカルマグナム

G メモリガジェット 01 スタッグフォン

H メモリガジェット 02 スパイダーショック

I メモリガジェット 03 バットショット

J メモリガジェット 04 ビートルフォン

K メモリガジェット 05 フロッグポッド

L メモリガジェット 06 デンデンセンサー

M 変形ガイア恐竜 ファングメモリ ×

N 変形ガイア鳥 エクストリームメモリ

O 超多色発光剣 DX プリズムビッカー

P マキシマムカウンター トライアルメモリ

Q ドーパントメモリ(他のメモリも同様)

Page 13: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

表 3.7 コスト見積もり

略称 パーツ数

(プラスチック)

パーツ数

(電子回路) 企画

デザ

イン

設計

(モデル)

設計

(回路)

ライン

確保 塗装 組み立て

チェック

(人件費)

歩留

まり 輸送 パーツ確保 数 ×数 数-×数 順位

A 28~30 0 11 0 11 1

O 24~26 0 10 0 10 2

B 30~32 0 9 0 9 3

M 13~15 5~7 × 9 1 8 4

N 15~18 8~10 × 8 1 7 5

G 32~34 0 × 6 1 5

P 12~14 9~11 5 0 5

J 32~34 0 × × 6 2 4

D 12~14 3~5 2 0 2

K 10~12 0 × 2 1 1

F 12~14 3~5 × 1 1 0

H 14~16 0 × × × 2 3 -1

I 11~13 0 × 0 1 -1

L 10~12 0 × × 1 2 -1

E 15~18 0 × × × × 2 4 -2

C 7~9 0 × × × × × 1 5 -4

Q 7~9 7~9 × × × × × × × 2 7 -5

Page 14: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

13

これらのことから、変身ベルト DX ダブルドライバーとトリガーマグナムが利益とコストの面で収益

性が高いことが分かる。そこで、「番組」においてこれらの 2 つの商品に相当するものを開発すること

とした。またこれらにアタッチメントとして装着され、動作を変える役割をする付属品も開発した。今

後これらを「ベルト」「武器」「メダル」と呼ぶ。

「企業」でこれらの商品の開発を行う部署を「第一開発課」と呼び、その中に 3 つの班を作る。メン

バーの割り振りは以下のようにする。

「ベルト」開発班:マネージャ、プログラマー、モデラー、回路屋、音響屋

「武器」開発班:マネージャ、モデラー、回路屋、音響屋

「メダル」開発班:マネージャ、モデラー

なお、「武器」の回路に使用するプログラムは「ベルト」とほぼ同等なので、「ベルト」開発班が開

発したものを流用する。

「第一開発課」が役員に対して行う開発計画用のプレゼンテーション用の資料(付録 B)と、それぞれの

開発班の設計計画、タイムスケジュール、他の班との連携計画などについての意志統一のための資料を

以下に示す資料(付録 C~E)を作成した。

4. 設計 この章では 3 つの製品の仕様決定と、メダル・ベルトの設計過程について説明する。

4.1. メダル

「ベルト」「武器」のアタッチメントとして使用し、種類や入れ方によってそれらの動作を変える役

割をする。また、「企業」の他の開発課がこれら以外の商品を投入する際にもこの「メダル」をアタッ

チメントとすることを想定する。

4 種類のメダルを作り、それぞれに異なる色で塗装して正面、背面にキャラクターの図柄を印刷したラ

ベルを貼る。

4.1.1. 仕様

外形は一辺 28.52mm の六角形で厚さ 10mm とし、向かい合った 1 組の辺の外側のそれぞれの箇所に

深さの異なる 3 つの正方形の窪みを設ける。「ベルト」「武器」に装着された際に、特定の側に接する

辺の窪みの深さの違いで 23-1=7 通りの動作をさせる。4 つのメダルのうち 3 つは入れる向きで別物と

して確認させるが、1 つはどちらでも同じ動きをさせる。メダルの上下はラベルの図柄で判断させる。

Page 15: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

14

4.1.2. 形状設計

SolidWorks で形状の設計を行った。窪みの深さは 1.5mm または 1.8mm とした。

図 4.1 メダルの形状設計

4.2. ベルト

4.2.1. 仕様

ここではバックル部分のみを設計・製作し、ベルト部分には既製品を利用する。バックル前面に配置

する蓋の開閉と、蓋の隣に配置するボタンを認識して 6 個の LED を特定のパターンで光らせ、内蔵した

スピーカで音声を再生する。

4.2.2. 形状設計

SolidWorks を使用して、「ベルト」のバックル部分の設計を行った。この部分のサイズは

120×180×70mm である。

図 4.2 ベルトのバックル部分

Page 16: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

15

4.2.2.1. メダル保持・解放のギミック

メダルは図 4.4 の左側に見えるバネで保持するが、児童がこれを扱うことを考慮して右側のボタンを押

してメダルを解放する形にした。

図 4.3 メダル保持用パーツ 図 4.4 メダル保持・解放のギミック

4.2.2.2. メダルの有無、種類の認識

メダルの右側の辺の側面の窪みを認識して動作させるため、本体前側のパーツに 3 つの穴を開けて認

識用の基板を取り付け、その押しボタンを露出させた。前述のバネがメダルを右側に押し付けるので、

メダルの穴が浅い部分ではボタンが押された状態になる。

「衝突検知」の機能を使い、浅い穴の部分でボタンが押されるかどうかの確認を行った(図 4.5)。

図 4.5 メダルの有無、種類の認識

バネ ボタン

Page 17: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

16

4.2.2.3. 蓋の開閉の認識

蓋が閉じているときと開いているときでも動作を変える必要があるので、蓋のジョイント部分にアル

ミ製の認識用の突起を設け、本体上部に認識用のボタンを持つ基板を入れた。

図 4.6 蓋の開閉の認識

4.2.2.4. LED の増光のための工夫

蓋部分には 6 個の LED を含むドーナツ型の基板を内蔵する。蓋前面に窪みを作り、それに LED から

発された光を散乱させる役割をさせる。さらにその上に曇りガラス状のプラスチック版を置き、領域全

体を光らせる。

図 4.7 LED の増光のための工夫

4.2.2.5. スピーカ固定部

スピーカは音が広がるようにするため前方に向けて配置するが、外部から直接スピーカが見えると見

苦しくなるので、スピーカの形に合わせて 2mm 四方の穴を多数開け、その位置に固定した。

図 4.8 スピーカ固定部(右:正面, 左:背面)

Page 18: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

17

4.2.2.6. コントロール用ボタン

コントロール用ボタンには 10mm のものを使用するが、児童が使用することを考慮してなるべく広い

範囲で認識させるため、ボタンの上に板状のパッドを配置してボタンの実質的な大きさを上げた。なお、

このパッドはボタン上部に接着剤で固定する。

図 4.9 コントロール用ボタンとパッド

4.2.2.7. ベルトホルダー

バックル部分をベルトに固定するためのホルダーをバックル本体に固定するために、バックルの前後

をかみ合わせる際にホルダーの突起を挟み込む形にした。一方、ベルトの取り付けは袋状になったベル

トの終端に直径 5mm のアルミ製の棒を通して行う。棒の出し入れを繰り返すとプラスチック部分が摩耗

して緩くなってしまうため、製作時にベルトを固定した後は取り外せないようにホルダーの上側に詰め

物をして棒を埋め込む。

図 4.10 ベルトホルダー

Page 19: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

18

4.2.3. 回路設計

「ベルト」の動作は Arduino Duemilanove でコントロールするが、これと接続して入出力を行う基板

が別途必要になる。そこで回路 CAD EAGLE を使用してそれらの基板を設計、製作した。

図 4.11 ベルトの回路系

4.2.3.1. 部品登録

EAGLE のライブラリには様々な素子があらかじめ登録されているが、必要なサイズの押しボタンスイ

ッチとサウンド IC ISD17180PY が無かったため、新たに登録してそれを使用した。 ライブラリの部品(Device)は回路図上の部品(Symbol)と基板上の部品(Package)の組み合わせからなる。

登録した部品(4PIN)は 4pin の押しボタンスイッチであり、端子間の幅が縦 4.6mm, 横 6.6mm なので、

Package を図 4.12 のように作成した。

図 4.12 4PIN(左:Symbol,右:Package)

一方、サウンド IC ISD17180PY の形状は EAGLE の既存のライブラリの 40xx.lbr に含まれる

DIL28-6(端子間 2.54mm の 28pin の IC)とまったく同じなので、Package としてはそれをそのまま流用

した。一方、Symbol は機能ごとに IN/OUT, POWER, OPERATION, TRANSPORT の 4 つに分けた。

ボタン Arduino ISD17180PY スピーカ

LED

Page 20: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

19

図 4.13 ISD1700 の Symbol と Package

これも 4PIN と同様にして Symbol と Package の端子の関連付けを行った。

表 4.1 ISD1700 の pin 対応

pad pin pad pin

1 POWER.VCCD 15 IN/OUT.SP+

2 IN/OUT.LED 16 POWER.VSSP1

3 OPERATION.RESET 17 IN/OUT.AUD/AUX

4 TRANSPORT.MISO 18 POWER.AGC

5 TRANSPORT.MOSI 19 OPERATION.VOL

6 TRANSPORT.SCLK 20 POWER.ROSC

7 TRANSPORT.SS 21 POWER.VCCA

8 POWER.VSSA 22 OPERATION.FT

9 IN/OUT.ANALN 23 OPERATION.PLAY

10 IN/OUT.MIC+ 24 OPERATION.REC

11 IN/OUT.MIC- 25 OPERATION.ERASE

12 POWER.VSSP2 26 OPERATION.FWD

13 IN/OUT.SP- 27 IN/OUT.RDY/INT

14 POWER.VCCP 28 POWER.VSSD

IN/OUT POWER OPERATION TRANSPORT

Page 21: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

20

4.2.3.2. サウンド IC・入出力用基板

サウンド IC を搭載し、Arduino と信号の入出力を行ってスピーカに音声信号を出力する基板を設計し

た。また、その他の基板が必要とする Arduino の入出力信号も一旦この基板が受け取り、ここから受け

渡しを行う。これは Arduino の入出力端子が脆いため、そのままでは児童の使用に耐えないからである。

表 4.2 サウンド IC・入出力用基板の使用素子

部品 個数

積層セラミックコンデンサ(0.1μF) 4

アルミ電解コンデンサ(10μF) 5

IC ソケット(28 pin) 1

ピンヘッダ(1×6 pin) 2

ピンヘッダ(1×8 pin) 1

抵抗(64kΩ) 1

一列ハウジング(2pin) 1

一列ハウジング(4 pin) 4

一列ハウジング(6 pin) 1

Page 22: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

21

図 4.14 にサウンド IC・入出力用基板の回路図を示す。CN-ARD1~3 が Arduino との通信を行うため

のコネクタであり、CN-SPK はスピーカ、CN-LED1 と CN-LED2 は LED 用基板、CN-MD はメダル用

基板、CN-BTM はコントロールボタン用基板に接続するためのコネクタである。

図 4.14 サウンド IC・入出力用基板の回路図

Page 23: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

22

図 4.15 にサウンド IC・入出力用基板の設計図を示す。素子名が反転しているものがあるが、これはその

素子が基板の裏側に実装されることを表す。3 つのドリル穴は Arduino に対してこの基板を平行に固定

するために使用する。

配線の色は基板の部品面(赤)ハンダ面(青)の区別を意味する。

図 4.15 サウンド IC・入出力用基板の設計図

Page 24: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

23

4.2.3.3. LED 用基板

6 個の LED を搭載し、Arduino から入出力用基板を経由して信号を受け取り、ユーザーの操作に応じ

てそれらを点灯させる基板である。筐体の蓋部分に組み込むため、基板外形をドーナツ状にして設計し

た。

また、2 個のネジを使用して筐体の蓋部分に固定するため、中心点に対して対称な 2 箇所に直径 3mm

の穴を開けた。サウンド IC・入出力用基板からの信号を受け取るためのハウジングを 2 つに分けたのは、

60°置きに並ぶ LED との干渉を避けるためである。

表 4.3 LED 用基板の使用素子

部品 個数

LED 6

抵抗(240Ω) 6

一列ハウジング(4in) 2

図 4.16 LED 用基板(左:回路図, 右: 基板設計図)

Page 25: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

24

4.2.3.4. メダル認識用基板

メダルの有無、種類を判定するために 3 つの押しボタンと集合抵抗だけを実装した基板である。

表 4.4 メダル認識用基板の使用素子

部品 個数

集合抵抗(470Ω) 1

一列ハウジング(6pin) 1

プッシュボタン 3

図 4.17 メダル認識用基板(左:回路図, 右: 基板設計図)

Page 26: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

25

4.2.3.5. 蓋認識用基板

蓋の開閉を認識するために、押しボタンと抵抗だけを実装した基板である。

表 4.5 蓋認識用基板の使用素子

部品 個数

プッシュボタン 1

抵抗(4.7kΩ) 1

一列ハウジング(4in) 1

図 4.18 蓋認識用基板(左:回路図, 右:基板設計図)

Page 27: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

26

4.2.3.6. コントロールボタン用基板

ユーザーが押すことで音声を鳴らしたり LED を光らせたりするのに使うボタンと抵抗を実装した基

板である。押しボタンについてはライブラリに新規部品として追加した 4PIN を使用した。

表 4.6 コントロールボタン用基板の使用素子

部品 個数

プッシュボタン 1

抵抗(4.7kΩ) 1

一列ハウジング(4in) 1

図 4.19 コントロールボタン用基板(左:回路図, 右:基板設計図)

Page 28: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

27

4.2.3.7. 電源スイッチ用基板

回路全体への電源の供給の ON, OFF を行うための切り替えスイッチを実装した基板である。

表 4.7 電源スイッチ用基板の使用素子

部品 個数

電源スイッチ 1

一列ハウジング(2in) 2

図 4.20 電源スイッチ用基板(左:回路図, 右: 基板設計図)

Page 29: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

28

4.3. ArduinoIDE によるコーディング

Arduino で入力系(ボタン)から信号を受け取って LED とサウンド IC に出力を行う必要があるので、

それを制御するプログラムを組む。ISD1700 シリーズ [8]のサウンド IC は図 4.21 のような入出力ピン

を備えている。使用したピンを表 4.8 に示す。なお、定義の列はプログラム中での定義名を表わす。

図 4.21 ISD1700 シリーズのピン配置

表 4.8 Arduino の使用ピン

番号 役割 種別 定義

7 コントロールボタン デジタル入力 BUTTON

4 蓋認識スイッチ デジタル入力 SW_L

13 メダル認識スイッチ 1 デジタル入力 SW_1

12 メダル認識スイッチ 2 デジタル入力 SW_2

8 メダル認識スイッチ 3 デジタル入力 SW_3

3 LED0 点灯 アナログ出力 LED0

5 LED1 点灯 アナログ出力 LED1

6 LED2 点灯 アナログ出力 LED2

7 LED3 点灯 アナログ出力 LED3

10 LED4 点灯 アナログ出力 LED4

11 LED5 点灯 アナログ出力 LED5

14 MOSI(サウンド IC) デジタル出力 MOSI

15 SCLK(サウンド IC) デジタル出力 SCLK

16 SS(サウンド IC) デジタル出力 SS

Page 30: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

29

ここでは MOSI, SCLK, SS のピンを通じてコマンドを入力する SPI モードを使って IC をコントロー

ルした。録音時の音声の入力ピンやボリュームなどの設定は APC(Analog Path Configuration)レジスタ

に書き込まれており、これらのピンを通じてこれらを書き変えることができる。

AnaIn か Mic+, Mic-のどちらかを使って IC に音声を記録できるが、デフォルトの設定では Mic の端

子のみを使う設定になっている。PC からクリアな音声を録音したいので、図 4.22 の回路図を参考にし

てブレッドボード上に図 4.23 のような回路を組み、PC のイヤホン出力と接続した。

図 4.22 ISD1700 シリーズを使用した録音・再生回路

図 4.23 録音用回路

REC

PLAY

ERASE

FWT

FT

Page 31: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

30

図 4.24 録音用ケーブル

4.3.1. 音声の録音

工場出荷時の APC レジスタは 0x440 すなわち 0100 0100 0000 に設定されている。

それぞれのビットの意味は表 4.9 の通りである。AnaIn を使うためには D4 を 1 にしなければならな

いので APC レジスタに 0100 0101 0000 = 0x450 を書き込む。書き込みには図 4.25 に示す WR_APC

コマンドを使う。プログラム中の loop メソッドは Arduino のクロック1回ごとに呼ばれるので、ここで

カウンタ変数を増やしながらその値に応じて MOSI,SCLK,SS の値を図 4.25 の通りに変化させる。この

コマンドを入れた後でRECボタンを押しながらPCで音声を再生すると ISD17180に音声が録音される。

図 4.25 WR_APC コマンド

Page 32: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

31

表 4.9 Analog Path Configuration(APC)レジスタの概要

Page 33: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

32

4.3.2. 音声の再生

ISD1700 シリーズに複数回に分けて録音を行うと、それぞれの 後に EOM(End Of Message)が挿入

される。再生の方法には二通りあり、その一つがカレント再生ポインタから直近の EOM まで再生する

PLAY コマンドである。しかし、この方法では録音の際に音声を余計に長く入れてしまうとそれがその

まま再生されてしまう。また FWD コマンドでカレント再生ポインタを次に進めることはできるが、音

声を選択する手順が煩雑になる。

図 4.26 メモリ上の音声データ

図 4.27 PLAY コマンド

そこでここでは開始と終了のアドレスを指定して再生する SET_PLAY コマンドを使用した。

ISD17180 ではメモリのうち 0x010 から 0x5AF までが音声領域に割り当てられていて、アドレスは 3 桁

の 16 進数で 12 ビットになるが、その下位 11 ビットを使用して開始と終了のアドレス指定を行う。

音声 1 音声 2 音声 3

EOM EOM EOM

カレント再生ポインタ

Page 34: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

33

図 4.28 SET_PLAY コマンド

ただし、ISD1700 シリーズはデフォルトではアイドル状態になっており、再生コマンドの入力を受け

付ける状態にするには PU(Power Up)コマンドを入れる必要がある。

図 4.29 PU コマンド

また、再生終了後に再びアイドル状態に戻すため PD(Power Down)コマンドを入れる。

Page 35: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

34

図 4.30 PD コマンド

つまり、一回の音声再生では PU, SET_PLAY, PD のコマンドを順に入れることになるが、ある音声の

再生中にボタン操作をした時などはそれを中断して次の音の再生を始めたいので、さらにこの前にSTOP

コマンドを入れる。

図 4.31 STOP コマンド

音声再生はコントロールボタンが押された時、蓋を閉じた時、メダル挿入、電源投入などのタイミン

グで行うが、基本的にはボタン押下を検出して行う。そのため、btn(ボタンの状態)、btn_old(1 クロック

前のボタンの状態)の変数を用意し、loop メソッドで

1. ボタンにつながる入力ピンの状態を btn に入れる

2. btn が 1、かつ btn_old が 0 ならば音声再生のフラグをたてる

3. btn_old に btn の値をコピー

4. 音声再生フラグがたっていたら再生メソッドを呼ぶ

という工程を行う。再生メソッドでは必要なコマンドを入れ終わった時点でフラグを元に戻す。

Page 36: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

35

4.3.3. LED の点灯

Processing にはアプリケーションの開始からの(Arduino 上では電源投入からの)経過時間をミリ秒単

位の float 値で返す millis メソッドが存在する。例えば「ボタンが押されてから 3 秒間点滅」という動作

をさせるには、音声再生で使った btn, btn_old の他にボタンが押された時刻を記録する t_btn_pushed

を使い、

1. ボタンにつながる入力ピンの状態を btn に入れる

2. btn が 1、かつ btn_old が 0 ならば LED 操作中のフラグを立て、t_btn_pushed に現在時刻を記録

3. btn_old に btn の値をコピー

4. LED 操作中フラグが立っていたら LED 操作メソッドを呼ぶ

LED 操作メソッドでは、millis メソッドで取得した時刻と t_btn_pushed を使ってボタン押下からの

経過時間を求め、LED につながるピンに時間に応じた値を書き込む。これらのピンはアナログ出力が可

能なので、完全な点灯・消灯だけでなく連続的に明るさを変えることも出来るので、表 4.10 のようなメ

ソッドを作り、状況によって使い分けた。

表 4.10 LED 操作メソッド

名称 動作

lightAll() 全点灯

turnoffAll() 全消灯

rotateLEDhard(int t, int d) 位相をずらして点滅させる

rotateLEDsoft(int t, double omega) 位相をずらして連続的に明るさを変える

blinkLEDhard(int t, int onlength, int offlength) 全体を同時に点滅させる

blinkLEDsoft(int t, double omega) 全体を同時に連続的に明るさを変える

Page 37: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

36

5. 製作 5.1. 3D プリンタによる出力

5.1.1. 手順

部品ファイルの設計データを元に、SolidWorks で「指定保存」からファイル形式を STL(*.stl)として

保存する。ただし、後述の Catalyst では 2 バイト文字を読み込めないため、ファイル名をローマ字か英

語で入力する。保存先のパスにも 2 バイト文字を入れないよう注意する。

図 5.1 STL ファイルの出力

次にスタートメニューから「Catalyst34」→「Catalyst」を選択して Catalyst を起動し、「File」→

「Open」からファイルを選択して STL ファイルを読み込む。

図 5.2 ファイルの読み込み 図 5.3 向きの変更

Orientation

Page 38: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

37

ここでの部品の配置の方向によって、製作の際に消費されるサポート剤の量や部品の強度が変わるの

で、目的に合わせて方向を変更する。すなわち、Orientation アイコンをクリックして「Top」を選択し、

製作時に上向きにしたいモデルの面をクリックする。

さらに、右側のメニューで詳細設定を行う。Modeler は製作に使用する 3D プリンタ、Build Style は精

度、Part surface は鉛直または水平方向の精度の優先順位、Part interior style は部品内部のモデル剤の

配置方法、Support style はサポート剤の配置方法の選択である。ここでは図 5.4 のように選択する。

ここで実行ボタンを押すと、Dimension でのドリルの経路を表わすファイルが作成される。

図 5.4 パラメータの設定と変換実行

赤がモデル剤、紫がサポート剤を表わす。1 本の線が 1 つのレイヤー(0.2mm)に相当し、造型時には下

から順にモデル剤とサポート剤が配置されていくことになる。モデルを不適切な向きで配置してこの変

換を行うと、強度の低下、サポート剤の無駄な消費、加工時間の増加などの問題が起こるため、 適な

向きを選択する必要がある。

図 5.5 モデル剤とサポート剤のツールパス

Page 39: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

38

図 5.6 悪例(左:折れやすい,中央:大量にサポート剤を消費する,右:加工に長時間かかる)

この情報を Dimension に送るためスタートメニューから「Catalyst34」→「Status」を選択して

Dimension に加工データを送るためのツール「Status」を起動する。このとき先に Dimension の電源を

入れて起動しておく必要がある。ツール起動時に Dimension との通信を行い、もし Dimension が加工

待ちの状態であれば図 5.7 のように「Idle」の文字列が表示される。ここで「Pack and Download」ボタ

ンをクリックすると、ツールパス情報を編集して Dimension に送るためのウィンドウが表示される。

図 5.7 Status トップ画面 図 5.8 Pack and Download メニュー

ここで Add ボタンを押して Catalyst で作成したツールパス情報を読み込むと、製作する部品が占める

領域が表示される。この領域はマウスでドラッグ移動することができる。また、白いエリアは製作の時

に使用可能な面積に相当するので、ここに空きがある場合はさらに別な部品を追加することもできる。

ここで「Send」ボタンを押すとツールパスの統合が行われ、そのデータが Dimension に送信される。

Pack and Download

Page 40: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

39

図 5.9 部品の挿入 図 5.10 複数の部品の挿入

Dimension の前面には大きな扉があり、それを開けると内部の加工領域を見ることができる。部品は

一辺 23cm のフォーム材の上に形成されるが、このフォーム材は鉄製の台にストッパーで固定され、モ

ータで上下に移動する。また、モデル剤とサポート剤のヘッダは同一のアームの先端に並んで配置され、

モータで水平方向に移動する。

図 5.11 フォーム材 図 5.12 モデル剤、サポート剤のヘッド

Dimension の電源を入れると庫内の温度は 70、ヘッドの温度は 270まで上昇する。温度が上がる

前でも Statusから加工データを受け取ることはできるが、この制限値に達しないと加工は開始できない。

加工データ取得前は情報窓には「Queue Empty」と表示されているが、データを受け取るとそのパッケ

ージ名(1 つのモデルだけのデータの場合は部品名、複数の場合は部品名_pack)が表示される。ここで一

番上のボタン(隣の窓に「Start Model」が表示される)を押すと加工が始まる。加工中扉はロックされて

開かなくなるが、一番上のボタン(隣の窓に「Pause」が表示される)を押して加工を一時停止することが

でき、扉を開けて製作過程を確認することができる。この例では Catalyst での設定で Part interior を

Sparse にしたので、部品の内側に必要 小限のモデル剤が置かれていることがわかる。

Add Send

Page 41: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

40

図 5.13 製作中の部品

加工が完了すると扉のロックが解除され、フォームが一番下まで移動する。完成した部品をフォーム

ごと取り出して扉を閉めると一番上のボタンの隣に「Part Removed?」の確認メニューが出るので、こ

れを押すと再び Queue Empty の状態に戻る。

取り出した部品を Dimension 付属のコテを使ってフォームから取り外す。使いまわしがきくのでフォ

ームにはなるべく傷をつけないように気をつける。さらにペンチ、カッターなどを使ってサポート剤を

取り除く。

図 5.14 完成した部品 図 5.15 コテ

Page 42: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

41

図 5.16 フォーム材からの取り外し

図 5.17 サポート剤の除去

5.2. 基板製作

5.2.1. 基板加工機による基板加工

基板加工機 RS21 とそのコントロール用アプリケーション FLASH Win を使用して基板を製作した。

設計した基板データを元に EAGLE の CAM 機能で GERBER 形式のデータ drill(ドリルデータ:穴の大

きさを決めたファイル)、photo1 と photo2 (配線データ:配線部分の座標データをまとめたファイル。1

が表側、2 が裏側)、frame(基板外形データ:基板外形の端点の座標をまとめたファイル)を作成した。

基板の材料は紙フェノール板の両面に銅箔を貼りつけたものである。初めに drill のデータを元に基板

の厚さより長いドリルで基板を貫通する穴を開けた(図 5.19(A))。次に銅箔の必要な部分のみを残して配

線とするため、 FLASH Win の輪郭抽出の機能を用いて photo1, photo2 から輪郭データ

outline1 ,outline2 を作成し、outline1 を元に銅箔をミリングカッタと呼ばれる先端が円錐状のドリルで

削り取った(図 5.19(B))。その次に基板を反転させて outline2 をもとに同様にドリルで削り取った(図

5.19(C))。 後に frame のデータを元にフォーミングカッタと呼ばれる、先端が円柱状のドリルで基板を

切り離した。

Page 43: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

42

図 5.18 ドリル(左から穿孔用 0.8mm,1.0mm,3.0mm,ミリングカッタ,フォーミングカッタ)

図 5.19 基板加工の過程

(A)

(B)

(C)

Page 44: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

43

図 5.21 drill 図 5.20 frame

図 5.22 photo1 図 5.23 photo2

図 5.25 outline2 図 5.24 outline1

Page 45: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

44

加工はドリルによる穿孔、部品面の輪郭加工、基板を裏返す、ハンダ面の輪郭加工、基板外形加工の

順で行ったが、基板を裏返す際に起こる角度や位置のずれを補正するため、ドリル加工の前に基板の対

角線上に基準穴を開け、裏返した後にそれらを使い位置合わせを行った。この作業により、以降の加工

で FLASH Win が自動的に位置・角度のずれを補正して加工を行う。

図 5.26 位置・角度の補正

表面の輪郭加工

裏面の輪郭加工

補正なし 補正あり

基準穴

Page 46: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

45

5.2.2. ハンダ付け

この基板を作るために使用した両面基板は、絶縁体である紙フェノールの表と裏の両側に銅箔が貼り

付けられたものである。ここで設計した両面基板には基板の両面にまたがる配線があるが、基板の表面

と裏面の間は紙フェノールで絶縁されているので、そのままではこのような配線はスルーホールで途切

れる事になる。そこでスルーホールに抵抗の足を切ったものを通して図 5.28 のように両面にハンダ付け

をした。

図 5.27 基板の両面にまたがる配線 図 5.28 スルーホールでのハンダ付け

図 5.29 音声 IC・出力用基板(表) 図 5.30 音声 IC・出力用基板(裏)

Page 47: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

46

5.3. 彩色

塗装の乗りを良くするために、初めにサーフェイサーを全体にスプレーする。この工程は Dimension

で製作したパーツの細かい穴を埋める役割もする。

サーフェイサーが乾いたら、そのパーツの基本色のスプレーをかけるが、窪み部分には他の色を着け

たいのでマスキングテープを貼っておく。

図 5.31 サーフェイサーによる下地処理 図 5.32 マスキングテープを貼った状態

基本色のスプレーをサーフェイサーの色が見えなくなるように二度がけする。乾いた後でマスキング

テープを剥がすと図 5.33 の様に着色されていない部分が現れる。

図 5.33 スプレー式塗料によるベース着色(左:着色直後.右:マスキングテープを剥がした後)

Page 48: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

47

窪んだ部分には塗料がのっていない事があるので、そのときは基本色の瓶入り塗料と筆を使って修正

を行う。

図 5.34 基本色塗料による修正

さらに残った部分に0号の筆で瓶入りの塗料を塗る。この部品ではこれ以外の部分はサーフェイサ

ーの色をそのまま残したのでこれで完成とする。

図 5.35 筆による追加着色

Page 49: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

48

5.4. 組み立て

まず音声 IC・出力用基板の 3 つのコネクタを Arduino に差し込み、3 本の 20mm スペーサとネジ、ナ

ットで固定する。

図 5.36 Arduino と音声 IC・出力用基板の組み合わせ

続いて本体前面パーツにメダル認識用基板、蓋認識基板、コントロールボタン用基板を取り付ける。

また、スピーカをグルーガンで固定する。

図 5.37 認識用基板の取り付け

Page 50: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

49

蓋パーツ A に LED 用基板と認識用のアルミ板をはめ込み、蓋パーツ B をその上からかぶせて 2 本のネ

ジで固定する。

図 5.38 蓋パーツの組み立て(左:基板とアルミ板のはめ込み, 右:組み立て後)

表側のくぼみに増光用のプラスチック板を接着して蓋パーツが完成する。

図 5.39 増光用パーツの組み込み

Page 51: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

50

本体背面パーツに電池ボックスを組み込み、内部の下側に露出したコネクタに電源スイッチ用基板の

ケーブルを接続する。電源スイッチ用基板は図 5.40 右下の溝にはめ込んで固定する。

図 5.40 電源系の組み立て

本体前面パーツにメダル保持用パーツと蓋パーツを取り付け、各部の基板と音声 IC・出力用基板をケ

ーブルで接続する。

図 5.41 ケーブル接続

Page 52: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

51

さらに電源スイッチ用基板と Arduino を接続し、ベルトホルダーを挟み込みながら前面・背面のパーツ

を組み合わせてネジ止めする。

図 5.42 「ベルト」バックル (左:表, 右:裏)

アルミ製の棒でベルトホルダーにベルトを固定すると「ベルト」の完成となる。

図 5.43 「ベルト」

Page 53: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

52

5.5. 動作例

使用の一例の流れを以下に示す。なお、ここでいう点滅とは完全な点灯と消灯を繰り返すことを言い、

明滅とは連続的に明るさを変えることをいうものとする。

電源を入れると全ての LED が 0.8 秒周期で 3 回点滅する(図 5.44 左)。蓋を開けると LED が右回りに

順に点灯する。ここでデラックスメダルを表向きに入れると「キュィン、キュィン、キュィン、キュィ

ン…」という音が鳴って LED が同時に明滅する(図 5.44 中)。蓋を閉じると「フォームチェンジビースト」

音の再生とともに LED が同時に明滅する(図 5.44 左)。

図 5.44 動作例(左:電源の投入, 中:メダル挿入, 右:蓋を閉じる)

さらにコントロールパッドを押すとそのたびに決められた位置の LED が点灯し、「アインス」、「ツヴ

ァイ」、「ドライ」の音声が再生される。4 回目にボタンを押すと LED が同時に明滅して「ライダーチャ

ージ」の音声が再生される。

図 5.45 動作例(左から順にパッドを 1~3回押した状態)

Page 54: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

53

6. 考察 6.1. 達成度

製作物を決定するための利益の評価を研究の前半で行ったが、社内の分掌が公開されている実在の企

業の Web サイトなどを参考にしても、製造コストとして想定されるさまざまな経費の具体的な数値を出

すことは難しかった。そのため非常に粗い方法ではあるが、商品同士を比較して電子部品の点数、筺体

の複雑さなどから×式で項目ごとに評価をし、その総計でコストのかかりそうなものを判定する方法

をとらざるを得なかった。

製作物決定時点の計画では「ベルト」の他に「武器」も作る予定であったが、時間的な制約のために

断念し「ベルト」の開発のみに絞った。

筺体の設計段階ではメダルの取り外しのギミック等について教員と議論し、「児童が扱える、壊れにく

いもの」を念頭に置いていろいろな変更を加え、満足のいくものができた。

回路・基板設計は 2 年次の授業で習ってはいたが、基本的なことから改めて学び直したことで電子回

路についての理解が深まった。

動作プログラム作成にはかなり教員の手を借りたが、仕様設計通りの動作をする物ができた。ただし、

自分の想定していた内容がうまく教員に伝わっていなかった点もあり、後でプログラムを変更すること

があった。コミュニケーション能力の向上は今後の課題の 1 つである。

6.2. 改善案

今回制作した回路系では Arduino の出力端子数の制約から、単色の LED を使用した。これをそれ

ぞれ三色 LED にするともっと表現の幅が広がるだろう。ただし、電源を除いても 18 の信号を LED 基

板に渡さなければならないので、コネクタの数・配置を工夫し、コントロールに使用するマイコンボー

ドを上位の物に変える必要がある。

また音声は PC に接続したマイクからゼミのメンバーに声を入れてもらったものだが、かなり音質が悪

い。録音レベルを調整したり、スピーカを質の良いものに変えると改善できると思われる。

LED と音声によるイベントの発生条件は現状では電源投入、蓋の開閉、メダル挿入、コントロールボ

タン押下によるものだが、特定の複雑なパターンで発生するものを追加すると遊ぶ側に「隠しパターン」

を探す楽しみが出るだろう。

筺体を塗装した際に、製作時に水平だった面は繊維の粗があったために塗料の乗りが悪くなってしま

った。製作時間の制限のために行わなかったが、これは表面をパテなどで加工した後で塗装すれば解決

できた問題である。

入出力系の多数の基板を使用しているためケーブルが筺体内部に多数通っているが、このケーブルを

固定する機構がないので組み立ての際に筺体がケーブルを咬む危険がある。筺体の内側にクリップのよ

うな構造を作るか、既製品のものを接着してケーブルを固定する構造にすれば組み立てはより安全にで

きる。

Page 55: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

54

7. 謝辞 アンケート調査に協力してくださった青森市立浪館小学校の皆様と、ご多忙にも関わらず快く調査を

引き受けてくださった校長先生にこの場を借りて深く感謝の意を表します。

文献目録 1. SolidWorks による3次元 CAD, 門脇 重動・高瀬 善康 社著, 実教出版.

2. 思いのままにモノづくり 3D CAD 徹底解説, 飯田吉秋著, Ohmsha.

3. 3次元 CAD 完全マスター SolidWorks 実習, 岸 佐年 監修, 栗山 弘・伊達 政秀 共著, 森北出版株

式会社.

4. マイコンと電子工作 No.1 電脳 Arduino でちょっと未来を作る, CQ 出版社.

5. Arduino - Tutorials, URL http://arduino.cc/en/Tutorial/HomePage.

6. おもちゃができるまで, URL http://www.bandai.co.jp/kids/omocha/.

7. バンダイ, URL http://www.bandai.co.jp/.

8. マイクロクロニカ, URL http://www.microtechnica.net/.

Page 56: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

55

付録 A. アンケート文面 以下に市場調査のために実施したアンケート文面を示す。

Page 57: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

56

Page 58: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

57

付録 B. 開発計画資料 「第一開発課」が役員に対して行う開発計画用のプレゼンテーション資料を以下に示す。

Page 59: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

58

Page 60: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

59

Page 61: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

60

付録 C. 「ベルト」開発班資料 「ベルト」開発にあたる班の設計計画、タイムスケジュール、他の班との連携計画などについての意

志統一のための資料を以下に示す。

Page 62: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

61

Page 63: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

62

Page 64: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

63

Page 65: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

64

Page 66: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

65

付録 D. 「武器」開発班資料 「ベルト」開発にあたる班の設計計画、タイムスケジュール、他の班との連携計画などについての意

志統一のための資料を以下に示す。

Page 67: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

66

Page 68: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

67

Page 69: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

68

Page 70: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

69

付録 E. 「メダル」開発班資料 「メダル」開発にあたる班の設計計画、タイムスケジュール、他の班との連携計画などについての意

志統一のための資料を以下に示す。

Page 71: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

70

Page 72: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

71

付録 F. 図面

図 F-1 メダル

Page 73: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

72

図 F-2 本体(前面)

Page 74: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

73

図 F-3 本体(背)

Page 75: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

74

図 F-4メダル保持用パーツ

Page 76: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

75

図 F-5 蓋 A

Page 77: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

76

図 F-6 蓋 B

Page 78: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

77

図 F-7 パッド

Page 79: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

78

図 F-8 ベルトホルダー

Page 80: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

79

付録 G. 筺体部品

図 G-1 本体前面パーツ(左:表, 右:裏)

図 G-2 本体背面パーツ(左:表, 右:裏)

Page 81: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

80

図 G-3 蓋パーツ A(左:表, 右:裏)

図 G-4 蓋パーツ B(左:表, 右:裏)

Page 82: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

81

図 G-5 メダル保持用パーツ(左:表, 右:裏)

図 G-6 コントロール用パッド(左:表, 右:裏)

Page 83: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

82

図 G-7 ベルトホルダー(左:表, 右:裏)

図 G-8 メダル

(左上:バスターイーグル 右上:ソードウルフ,左下:クラッシャーコンガ, 右下:デラックス)

Page 84: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

83

付録 H. 回路基板

図 H-1 サウンド IC・入出力用基板(左:表, 右:裏)

図 H-2 LED 用基板(左:表, 右:裏)

図 H-3 メダル認識用基板(左:表, 右:裏)

Page 85: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

84

図 H-4 蓋認識用基板(左:表, 右:裏)

図 H-5 コントロールボタン用基板(左:表, 右:裏)

図 H-6 電源スイッチ用基板(左:表, 右:裏)

Page 86: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

85

付録 I. 録音設定変更プログラム ISD170180 の録音元を AnaIn に変更するために使用したプログラムを以下に示す。

#define BUTTON 7 1 #define SS 16 2 #define SCLK 15 3 #define MOSI 14 4 int btn; // 現在のボタンの状態 5 int btn_old; // 一瞬前のボタンの状態 6 boolean rewrite; // 設定書き変え実行フラグ 7 int count; // 時間 8 int stg; // コマンドの終了ステップ数 9 10 void setup() 11 pinMode(BUTTON, INPUT); 12 pinMode(SS, OUTPUT); 13 pinMode(SCLK, OUTPUT); 14 pinMode(MOSI, OUTPUT); 15 btn = LOW; 16 btn_old = LOW; 17 digitalWrite(SCLK, HIGH); 18 digitalWrite(SS, HIGH); 19 digitalWrite(MOSI, LOW); 20 rewrite=false; 21 count=0; 22 stg=0; 23 24 25 26 void loop() 27 // ボタンの状態を btn に読み込む 28 btn = digitalRead(BUTTON); // ボタンの状態の読み込み 29 // ボタンを押した瞬間を記録 30 if (btn==HIGH && btn_old==LOW) 31 digitalWrite(SS, HIGH); 32 digitalWrite(SCLK, HIGH); 33 digitalWrite(MOSI, LOW); 34 rewrite=true; 35 stg=0; 36 count=0; 37 38 if (rewrite) 39 int cmdPU[2]=0x01, 0x00; // PowerUp 40 int cmdWR_APC[3]=0x65, 0x50, 0x04; // WR_APC 41 int cmdPD[2]=0x07, 0x00; // PowerDown 42 switch(stg) 43 case 0: InputCommand(cmdPU, 2); break; 44 case 1: InputCommand(cmdWR_APC, 3); break; 45 case 2: InputCommand(cmdPD, 2); break; 46 case 3: 47 stg=0; 48 count=-1; 49 rewrite=false; 50 break; 51 52

Page 87: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

86

53 btn_old=btn; 54 55 56 void InputCommand(int cmd[], int length) 57 int command[56]; 58 for (int i=0;i<8;i++) 59 for (int j=0;j<length;j++) 60 if (cmd[j]%2==0) 61 command[8*j+i]=0; 62 else 63 command[8*j+i]=1; 64 cmd[j]/=2; 65 66 67 if (count<=4+4*length*8) 68 if (count==0) 69 digitalWrite(SS, LOW); // MOSI からの入力を可能にする 70 71 // 1, 3, 5,...でクロックを上げ下げ(1 で下げ、3で上げ) 72 if (count%2==1) 73 if ((count-1)/2%2==0) 74 digitalWrite(SCLK, LOW); 75 else 76 digitalWrite(SCLK, HIGH); 77 78 // コマンド入力 79 if ((count-2)%4==0) 80 if (command[(count-2)/4]==1) 81 digitalWrite(MOSI, HIGH); 82 else 83 digitalWrite(MOSI, LOW); 84 85 86 else 87 digitalWrite(SS, HIGH); // MOSI からの入力を不可にする 88 stg++; 89 count=-1; 90 91 92

Page 88: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

87

付録 J. 「ベルト」コントロールプログラム 「ベルト」各種入力ボタンからの信号を使ってサウンド IC、LED をコントロールするプログラムを以

下に示す。

#define BUTTON 7 // コマンドボタン 1 #define SW_L 4 // 蓋認識スイッチ 2 #define SW_1 13 // メダル認識スイッチ 1 3 #define SW_2 12 // メダル認識スイッチ 2 4 #define SW_3 8 // メダル認識スイッチ 3 5 #define LED0 3 // LED0(緑)12 6 #define LED1 5 // LED1(赤)2 7 #define LED2 6 // LED2(緑)4 8 #define LED3 9 // LED3(赤)6 9 #define LED4 10 // LED4(緑)8 10 #define LED5 11 // LED5(赤)10 11 #define MOSI 14 // 信号 12 #define SCLK 15 // クロック 13 #define SS 16 // 通信 ON, OFF 切り替え 14 #define UNT 8 // 音声 IC のクロック/Arduino のクロック 15 16 #define CLOSE_NOMEDAL 0 17 #define OPEN_NOMEDAL 1 18 #define OPEN_MEDAL1 2 19 #define OPEN_MEDAL2 3 20 #define OPEN_MEDAL3 4 21 #define OPEN_MEDAL4 5 22 #define OPEN_MEDAL5 6 23 #define OPEN_MEDAL6 7 24 #define OPEN_MEDAL7 8 25 #define CLOSE_MEDAL1 9 26 #define CLOSE_MEDAL2 10 27 #define CLOSE_MEDAL3 11 28 #define CLOSE_MEDAL4 12 29 #define CLOSE_MEDAL5 13 30 #define CLOSE_MEDAL6 14 31 #define CLOSE_MEDAL7 15 32 #define MEDAL_INCERT1 16 33 #define MEDAL_INCERT2 17 34 #define MEDAL_INCERT3 18 35 #define MEDAL_INCERT4 19 36 #define MEDAL_INCERT5 20 37 #define MEDAL_INCERT6 21 38 #define MEDAL_INCERT7 22 39 40 float led[] = 0,0,0,0,0,0; // LED の状態 41 42 int sw[] = 0,0,0,0; // 現在のスイッチの状態 43 int sw_old[] = 0,0,0,0; // 一瞬前のスイッチの状態 44 int t_sw_changed; // スイッチのどれかが切り替わった瞬間の時刻 45 int t_sw_lidopen; // 蓋が開いた瞬間の時刻 46 int t_sw_lidclosed; // 蓋が閉じた瞬間の時刻 47 int t_medal_in; // メダルが挿入された時刻 48 boolean lidopen; // 蓋が開いた直後であることを表わすフラグ 49 boolean medalIn; // メダルが挿入された直後であることを表わすフラグ 50

Page 89: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

88

boolean firstlight; // 初の点灯のためのフラグ 51 int btn; // 現在のボタンの状態 52 int btn_old; // 一瞬前のボタンの状態 53 int t_btn_pushed; // ボタンが押された時刻 54 55 // メダル挿入時の回転の速さ 56 float rotspeed[7] 57 =0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.01; 58 59 // LED を光らせるパターン(メダル番号, 段階, LED 番号) 60 boolean s[7][3][6] 61 = 62 // メダル 1 63 true , false, false, false, false, false, 64 true , false, true , false, false, false, 65 true , false, true , false, true , false, 66 // メダル 2 67 true , false, false, false, false, false, 68 true , true , false, false, false, false, 69 true , true , false, false, true , false, 70 // メダル 3 71 false, true , false, false, false, false, 72 false, true , false, true , false, false, 73 false, true , false, true , false, true , 74 // メダル 4 75 false, true , false, false, true , false, 76 false, true , true , false, true , true , 77 true , true , true , true , true , true , 78 // メダル 5 79 true , true , false, false, false, false, 80 true , true , true , true , false, false, 81 true , true , true , true , true , true, 82 // メダル 6 83 true , false, true , false, true , false, 84 false, true , false, true , false, true , 85 true , true , true , true , true , true, 86 // メダル 7 87 false, false, true , false, true , false, 88 false, true , false, false, false, true , 89 true , false, true , true , true , false, 90 ; 91 92 // サウンド用 93 int count; // そのコマンドが始まってからのカウント数 94 int stg; // コマンドの段階 95 // 音声のアドレス 96 int soundHead[27]= 97 0x10E, // 0 98 0x03E, 0x0B7, // 1「待機音 01」 99 0x0B9, 0x118, // 3「フォームチェンジ・ビースト」 100 0x119, 0x19F, // 5「待機音 02」 101 0x1A1, 0x1F7, // 7「フォームチェンジ・ソードウルフ」 102 0x1F8, 0x28C, // 9「待機音 03」 103 0x28D, 0x2D2, // 11「フォームチェンジ・クラッシャーコンガ」 104 0x2D4, 0x350, // 13「待機音 04」 105 0x352, 0x3A5, // 15「フォームチェンジ・バスターイーグル」 106 0x3AF, 0x3BC, // 17「アインス」 107

Page 90: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

89

0x3C1, 0x3CD, // 19「ツヴァイ」 108 0x3D5, 0x3E2, // 21「ドライ」 109 0x3E9, 0x446, // 23「ビーストチャージ」 110 0x495, 0x4DF, // 25「ライダーチャージ」 111 ; 112 113 boolean played_btn; // ボタン駆動による再生が完了したことを表わすフラグ 114 boolean muststop; // stop コマンドを入れるべきであることを表わすフラグ 115 boolean played_lcl; // 蓋を閉じたことによる再生が完了したことを表わすフラグ 116 boolean played_min; // メダル挿入による再生が完了したことを表わすフラグ 117 118 int mode; // モード 119 int stage; // ボタンを押すと 0,1,2,...と変化する量 120 boolean done; // 一工程の一段落が終わったら 121 122 void setup() 123 t_btn_pushed=millis(); 124 t_medal_in=millis(); 125 mode=0; 126 stage=0; 127 done=true; 128 medalIn=false; 129 muststop=false; 130 played_btn=true; 131 played_lcl=true; 132 played_min=true; 133 134 pinMode(BUTTON, INPUT); 135 pinMode(SW_L, INPUT); 136 pinMode(SW_1, INPUT); 137 pinMode(SW_2, INPUT); 138 pinMode(SW_3, INPUT); 139 140 pinMode(LED0, OUTPUT); 141 pinMode(LED1, OUTPUT); 142 pinMode(LED2, OUTPUT); 143 pinMode(LED3, OUTPUT); 144 pinMode(LED4, OUTPUT); 145 pinMode(LED5, OUTPUT); 146 147 pinMode(SS, OUTPUT); 148 pinMode(SCLK, OUTPUT); 149 pinMode(MOSI, OUTPUT); 150 151 btn = LOW; 152 btn_old = LOW; 153 154 btn_old = LOW; 155 for (int i=0;i<4;i++) 156 sw[i] = LOW; 157 sw_old[i] = LOW; 158 159 digitalWrite(SCLK, HIGH); 160 digitalWrite(SS, HIGH); 161 digitalWrite(MOSI, LOW); 162 count=0; 163 stg=0; 164

Page 91: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

90

firstlight=true; 165 166 167 void loop() 168 // 電源投入直後 169 if (firstlight) 170 int t=(millis()-t_btn_pushed); 171 blinkLEDhard(t, 300, 300); 172 if (t>1500) 173 firstlight=false; 174 SetLED(); 175 return; 176 177 // ボタンの状態を btn に読み込む 178 btn = digitalRead(BUTTON); // ボタンの状態の読み込み 179 sw[0] = digitalRead(SW_L); // 蓋スイッチの状態の読み込み 180 sw[1] = digitalRead(SW_1); // メダルスイッチ 1の状態の読み込み 181 sw[2] = digitalRead(SW_2); // メダルスイッチ 2の状態の読み込み 182 sw[3] = digitalRead(SW_3); // メダルスイッチ 3の状態の読み込み 183 184 // ボタンを押した瞬間を記録 185 if (btn==HIGH && btn_old==LOW) 186 digitalWrite(SS, HIGH); 187 digitalWrite(SCLK, HIGH); 188 digitalWrite(MOSI, LOW); 189 stg=0; 190 count=0; 191 muststop=true; 192 firstlight=false; 193 194 // ボタンを離したときの処理 195 if (btn==LOW && btn_old==HIGH) 196 digitalWrite(SS, HIGH); 197 digitalWrite(SCLK, HIGH); 198 digitalWrite(MOSI, LOW); 199 stg=0; 200 count=0; 201 played_btn=false; 202 firstlight=false; 203 // 蓋が閉じていてメダルが入っている場合 204 if (mode==CLOSE_NOMEDAL || mode>=CLOSE_MEDAL1 && mode<=CLOSE_MEDAL7) 205 stage++; 206 // LED 用 207 t_btn_pushed=millis(); 208 done=false; 209 210 211 212 // LED 用 213 int t=millis()-t_btn_pushed; 214 215 // 蓋を開けた瞬間の検出→時刻の記録、蓋開きフラグ立てる 216 if(sw[0]==LOW && sw_old[0]==HIGH) 217 t_sw_lidopen = millis(); 218 firstlight=false; 219 lidopen = true; 220 done = false; 221

Page 92: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

91

222 // メダルが挿入された時の処理 223 for (int i=1;i<4;i++) 224 if (sw[i]==HIGH && sw_old[i]==LOW) 225 // サウンド用 226 digitalWrite(SS, HIGH); 227 digitalWrite(SCLK, HIGH); 228 digitalWrite(MOSI, LOW); 229 muststop=true; 230 played_min=false; 231 stg=0; 232 count=0; 233 // LED 用 234 medalIn=true; 235 lidopen=true; 236 t_medal_in=millis(); 237 firstlight=false; 238 break; 239 240 241 // 蓋が閉じた瞬間の時刻を記録する 242 if (sw[0]==HIGH && sw_old[0]==LOW) 243 // サウンド用 244 t_sw_lidclosed=millis(); 245 digitalWrite(SS, HIGH); 246 digitalWrite(SCLK, HIGH); 247 digitalWrite(MOSI, LOW); 248 muststop=true; 249 played_lcl=false; 250 stg=0; 251 count=0; 252 // LED 用 253 firstlight=false; 254 255 256 // メダルを入れてから 300 秒まで 257 if (millis()-t_medal_in<300000) 258 // 蓋を閉めた場合は強引に時間を経過させる 259 if (sw[0]==HIGH) 260 t_medal_in-=300000; 261 262 else 263 if (sw[1]==HIGH && sw[2]==LOW && sw[3]==LOW) mode=MEDAL_INCERT1; 264 if (sw[1]==LOW && sw[2]==HIGH && sw[3]==LOW) mode=MEDAL_INCERT2; 265 if (sw[1]==LOW && sw[2]==LOW && sw[3]==HIGH) mode=MEDAL_INCERT3; 266 if (sw[1]==HIGH && sw[2]==HIGH && sw[3]==LOW) mode=MEDAL_INCERT4; 267 if (sw[1]==HIGH && sw[2]==LOW && sw[3]==HIGH) mode=MEDAL_INCERT5; 268 if (sw[1]==LOW && sw[2]==HIGH && sw[3]==HIGH) mode=MEDAL_INCERT6; 269 if (sw[1]==HIGH && sw[2]==HIGH && sw[3]==HIGH) mode=MEDAL_INCERT7; 270 271 272 // メダルを入れてから 2秒以上経過 273 else 274 if (sw[0]==LOW) 275 if (sw[1]==LOW && sw[2]==LOW && sw[3]==LOW) mode=OPEN_NOMEDAL; 276 if (sw[1]==HIGH && sw[2]==LOW && sw[3]==LOW) mode=OPEN_MEDAL1; 277 if (sw[1]==LOW && sw[2]==HIGH && sw[3]==LOW) mode=OPEN_MEDAL2; 278

Page 93: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

92

if (sw[1]==LOW && sw[2]==LOW && sw[3]==HIGH) mode=OPEN_MEDAL3; 279 if (sw[1]==HIGH && sw[2]==HIGH && sw[3]==LOW) mode=OPEN_MEDAL4; 280 if (sw[1]==HIGH && sw[2]==LOW && sw[3]==HIGH) mode=OPEN_MEDAL5; 281 if (sw[1]==LOW && sw[2]==HIGH && sw[3]==HIGH) mode=OPEN_MEDAL6; 282 if (sw[1]==HIGH && sw[2]==HIGH && sw[3]==HIGH) mode=OPEN_MEDAL7; 283 284 else 285 if (sw[1]==LOW && sw[2]==LOW && sw[3]==LOW) mode=CLOSE_NOMEDAL; 286 if (sw[1]==HIGH && sw[2]==LOW && sw[3]==LOW) mode=CLOSE_MEDAL1; 287 if (sw[1]==LOW && sw[2]==HIGH && sw[3]==LOW) mode=CLOSE_MEDAL2; 288 if (sw[1]==LOW && sw[2]==LOW && sw[3]==HIGH) mode=CLOSE_MEDAL3; 289 if (sw[1]==HIGH && sw[2]==HIGH && sw[3]==LOW) mode=CLOSE_MEDAL4; 290 if (sw[1]==HIGH && sw[2]==LOW && sw[3]==HIGH) mode=CLOSE_MEDAL5; 291 if (sw[1]==LOW && sw[2]==HIGH && sw[3]==HIGH) mode=CLOSE_MEDAL6; 292 if (sw[1]==HIGH && sw[2]==HIGH && sw[3]==HIGH) mode=CLOSE_MEDAL7; 293 294 295 // どれかのスイッチが切り替わった瞬間を記録 296 for (int i=0;i<4;i++) 297 if(sw[i] != sw_old[i]) 298 t_sw_changed =millis(); 299 done=false; 300 stage=0; 301 302 303 304 // 蓋が閉じていたら「開けた直後フラグ」を false にする 305 if (sw[0]==HIGH) 306 lidopen=false; 307 308 // 蓋を開けた後の動作 309 if (lidopen) 310 LidOpen(); 311 312 // それ以外 313 else 314 switch(mode) 315 case CLOSE_NOMEDAL: LidClose_NoMedal(); break; 316 case CLOSE_MEDAL1: LidClose_Medal(0); break; 317 case CLOSE_MEDAL2: LidClose_Medal(1); break; 318 case CLOSE_MEDAL3: LidClose_Medal(2); break; 319 case CLOSE_MEDAL4: LidClose_Medal(3); break; 320 case CLOSE_MEDAL5: LidClose_Medal(4); break; 321 case CLOSE_MEDAL6: LidClose_Medal(5); break; 322 case CLOSE_MEDAL7: LidClose_Medal(6); break; 323 case MEDAL_INCERT1: Medal_Incert(0); break; 324 case MEDAL_INCERT2: Medal_Incert(1); break; 325 case MEDAL_INCERT3: Medal_Incert(2); break; 326 case MEDAL_INCERT4: Medal_Incert(3); break; 327 case MEDAL_INCERT5: Medal_Incert(4); break; 328 case MEDAL_INCERT6: Medal_Incert(5); break; 329 case MEDAL_INCERT7: Medal_Incert(6); break; 330 331 332 // サウンド関係 333 // ボタンを押してリセット 334 if (muststop) 335

Page 94: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

93

StopSound(); 336 // ボタンを離して再生 337 // 蓋閉じ、メダルあり状態で段階的に音を進める 338 if (!played_btn) 339 switch(mode) 340 case CLOSE_MEDAL1: 341 case CLOSE_MEDAL2: 342 case CLOSE_MEDAL3: 343 case CLOSE_MEDAL4: 344 case CLOSE_MEDAL5: 345 case CLOSE_MEDAL6: 346 switch(stage) 347 case 1: PlaySound(17); break; 348 case 2: PlaySound(19); break; 349 case 3: PlaySound(21); break; 350 case 4: PlaySound(23); break; 351 352 break; 353 case CLOSE_MEDAL7: 354 switch(stage) 355 case 1: PlaySound(17); break; 356 case 2: PlaySound(19); break; 357 case 3: PlaySound(21); break; 358 case 4: PlaySound(25); break; 359 360 break; 361 362 363 // 蓋を閉じたとき 364 if (!played_lcl && !muststop) 365 switch(mode) 366 case CLOSE_MEDAL1: PlaySound(15); break; 367 case CLOSE_MEDAL2: PlaySound(15); break; 368 case CLOSE_MEDAL3: PlaySound(7); break; 369 case CLOSE_MEDAL4: PlaySound(7); break; 370 case CLOSE_MEDAL5: PlaySound(11); break; 371 case CLOSE_MEDAL6: PlaySound(11); break; 372 case CLOSE_MEDAL7: PlaySound(3); break; 373 374 375 // メダルを入れた時 376 if (!played_min && !muststop) 377 switch(mode) 378 case MEDAL_INCERT1: PlaySound(1); break; 379 case MEDAL_INCERT2: PlaySound(1); break; 380 case MEDAL_INCERT3: PlaySound(5); break; 381 case MEDAL_INCERT4: PlaySound(5); break; 382 case MEDAL_INCERT5: PlaySound(9); break; 383 case MEDAL_INCERT6: PlaySound(9); break; 384 case MEDAL_INCERT7: PlaySound(13); break; 385 386 387 btn_old=btn; 388 // 一瞬前のボタンとスイッチの状態を記憶 389 for (int i=0;i<4;i++) 390 sw_old[i]=sw[i]; 391 392

Page 95: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

94

count++; 393 394 //////////////////////////////////////////////////////////////////// メイン部終わり 395 396 //////////////////////////////////////////////////////////////////// LED 系 397 void LidOpen() 398 // 工程が終了していたら全消し 399 if (done) 400 turnoffAll(); 401 SetLED(); 402 return; 403 404 int t=millis()-t_sw_lidopen; 405 if (t>2000) 406 lidopen=false; 407 done=true; 408 turnoffAll(); 409 SetLED(); 410 return; 411 412 rotateLEDhard(t, 60); 413 SetLED(); 414 415 416 void LidClose_NoMedal() 417 turnoffAll(); 418 SetLED(); 419 420 void LidOpen_NoMedal() 421 for (int i=0;i<6;i++) 422 led[i] = 0; 423 SetLED(); 424 425 void Medal_Incert(int medalnum) 426 blinkLEDsoft (millis(),rotspeed[medalnum]); 427 SetLED(); 428 429 430 // コントロールボタンによる動作 431 void LidClose_Medal(int medalnum) 432 // デフォルト状態 433 if (stage==0) 434 if (done) 435 turnoffAll(); 436 437 else 438 int t=millis()-t_sw_changed; 439 if (t*0.01<2*PI) 440 rotateLEDsoft(t, 0.01); 441 else 442 turnoffAll(); 443 done=true; 444 445 446 SetLED(); 447 448 else 449

Page 96: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

95

// LED の点灯状態を変更している途中段階 450 if (stage<4) 451 setValue(s[medalnum][stage-1][0],s[medalnum][stage-1][1], 452 s[medalnum][stage-1][2],s[medalnum][stage-1][3], 453 s[medalnum][stage-1][4],s[medalnum][stage-1][5]); 454 455 // 後の点滅 456 else 457 int t=millis()-t_btn_pushed; 458 if (t<628) 459 rotateLEDsoft(t,0.01); 460 461 else 462 turnoffAll(); 463 stage=0; 464 465 466 467 SetLED(); 468 469 // 全ての LED を点灯させる 470 void lightAll(void) 471 for (int i=0;i<6;i++) 472 led[i]=255; 473 474 475 // 全ての LED を消す 476 void turnoffAll(void) 477 for (int i=0;i<6;i++) 478 led[i]=0; 479 480 481 // 受け取った数値を配列 led[]に書き込む 482 void setValue(int L0, int L1, int L2, int L3, int L4, int L5) 483 led[0]=L0; 484 led[1]=L1; 485 led[2]=L2; 486 led[3]=L3; 487 led[4]=L4; 488 led[5]=L5; 489 490 // 受け取った数値を配列 led[]に書き込む 491 void setValue(boolean L0, boolean L1, boolean L2, boolean L3, boolean L4, boolean L5) 492 turnoffAll(); 493 if (L0) led[0]=255; 494 if (L1) led[1]=255; 495 if (L2) led[2]=255; 496 if (L3) led[3]=255; 497 if (L4) led[4]=255; 498 if (L5) led[5]=255; 499 500 501 // LED の明るさを連続的に変える 502 void rotateLEDsoft(int t, double omega) 503 led[0]=255.0f*(sin(t*omega)+1)/2; 504 led[1]=255.0f*(sin(t*omega+PI/3)+1)/2; 505 led[2]=255.0f*(sin(t*omega+PI*2/3)+1)/2; 506

Page 97: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

96

led[3]=255.0f*(sin(t*omega+PI)+1)/2; 507 led[4]=255.0f*(sin(t*omega+PI*4/3)+1)/2; 508 led[5]=255.0f*(sin(t*omega+PI*5/3)+1)/2; 509 510 511 // LED を順に点灯させる 512 void rotateLEDhard(int t, int d) 513 if (d>0) 514 for (int i = 0 ; i < 6 ; i++) 515 if (t % (d*6) > i*d && t % (d*6) < (i+1)*d) 516 led[i] = 255; 517 else 518 led[i] = 0; 519 520 521 else 522 for (int i = 0 ; i < 6 ; i++) 523 if (t % (d*6) > i*d && t % (d*6) < (i+1)*d) 524 led[5-i] = 255; 525 else 526 led[5-i] = 0; 527 528 529 530 531 // 全部を同時に sin 波的に点滅 532 void blinkLEDsoft(int t, double omega) 533 int brightness=255.0f*(sin(t*omega)+1)/2; 534 for(int i=0;i<6;i++) 535 led[i]=brightness; 536 537 538 // 全部を同時に ON, OFF 539 void blinkLEDhard(int t, int onlength, int offlength) 540 boolean isOn=t%(onlength+offlength)<onlength; 541 for (int i = 0 ; i < 6 ; i++) 542 if (isOn) 543 led[i]=255; 544 else 545 led[i]=0; 546 547 548 549 // 配列 led[]の情報を LED 用の出力ポートに書き込む 550 void SetLED(void) 551 analogWrite(LED0, led[0]); 552 analogWrite(LED1, led[1]); 553 analogWrite(LED2, led[2]); 554 analogWrite(LED3, led[3]); 555 analogWrite(LED4, led[4]); 556 analogWrite(LED5, led[5]); 557 558 //////////////////////////////////////////////////////////////////// LED 系終わり 559 560 561 //////////////////////////////////////////////////////////////////// サウンド系 562 void StopSound() 563

Page 98: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

97

int cmdPU[2]=0x01, 0x00; 564 int cmdSTOP[2]=0x02, 0x00; 565 int cmdPD[2]=0x07, 0x00; 566 switch(stg) 567 case 0: InputCommand(cmdPU, 2); break; 568 case 1: InputCommand(cmdSTOP, 2); break; 569 case 2: InputCommand(cmdPD, 2); break; 570 case 3: 571 muststop=false; 572 if (!played_lcl) 573 stg=0; 574 count=-1; 575 576 if (!played_min) 577 stg=0; 578 count=-1; 579 580 break; 581 582 583 584 void PlaySound(int soundnum) 585 int cmd[7]; 586 cmd[0]=0x80; 587 cmd[1]=0; 588 // スタート位置 589 cmd[2]=soundHead[soundnum]%256; 590 cmd[3]=soundHead[soundnum]/256; 591 // 終了位置 592 cmd[4]=soundHead[soundnum+1]%256; 593 cmd[5]=soundHead[soundnum+1]/256; 594 cmd[6]=0; 595 int cmdPU[2]=0x01, 0x00; 596 int cmdPD[2]=0x07, 0x00; 597 switch(stg) 598 case 0: InputCommand(cmdPU, 2); break; // Power Up 599 case 1: InputCommand(cmd, 7); break; // 再生 600 case 2: InputCommand(cmdPD, 2); break; // Power Down 601 602 if(stg==3) 603 if (!played_lcl && !muststop) 604 played_lcl=true; 605 if (!played_min && !muststop) 606 played_min=true; 607 played_btn=true; 608 609 610 611 void InputCommand(int cmd[], int length) 612 int command[56]; 613 for (int i=0;i<8;i++) 614 for (int j=0;j<length;j++) 615 if (cmd[j]%2==0) 616 command[8*j+i]=0; 617 else 618 command[8*j+i]=1; 619 cmd[j]/=2; 620

Page 99: 鄭 - aows.jpaows.jp › lab › GR_2010 › tei › tei.pdf · microtechnica 社製のISD1700 シリーズのIC を使用した。これは「スタンドアロンモード」と「SPI

98

621 622 if (count<=4+4*length*8) 623 if (count==0) 624 digitalWrite(SS, LOW); // MOSI からの入力を可能にする 625 626 // 1, 3, 5,...でクロックを上げ下げ(1 で下げ、3で上げ) 627 if (count%2==1) 628 if ((count-1)/2%2==0) 629 digitalWrite(SCLK, LOW); 630 else 631 digitalWrite(SCLK, HIGH); 632 633 // コマンド入力 634 if ((count-2)%4==0) 635 if (command[(count-2)/4]==1) 636 digitalWrite(MOSI, HIGH); 637 else 638 digitalWrite(MOSI, LOW); 639 640 641 else 642 digitalWrite(SS, HIGH); // MOSI からの入力を不可にする 643 stg++; 644 count=-1; 645 646