目次:
- 用品:
- ステップ1:正しいものを手に入れる
- ステップ2:ハードウェア側
- ステップ3:構造コンセプト - LEDボード
- ステップ4:建設コンセプト - 運転手
- ステップ5:ゲームのルール
- ステップ6:ソフトウェア:メニューとアニメーション
- ステップ7:ソフトウェア:最終コード
- ステップ8:あなたは完了です!次は何?
ある日私は職場の机の後ろに座っていましたが、周りを少し見回した後に何かを作る必要があるという奇妙な必要性を感じました。そして、それが頭の中でアイデアを生み出しました。 。
だから、一体何がたまごっちなのかわからないあなたのために、ここにウィキペディアからのちょっとした抜粋があります。
「たまごっち(たまごっちたまごっち?)は、WiZの横井彰宏とバンダイの舞田亜希によって日本で作られた、1996年に日本で最初に販売されたハンドヘルドデジタルペットです。」
だから私はこの古典的な玩具を取り上げて、ディスプレイ用のLEDマトリックスと、頭脳用のArduinoをデスクトップのガジェットに組み込んで、人々にとってより身近なものにしています。それで、私たちが世界初の(私の知る限りでは)デスクトップたまごっちを設計し、構築し、そしてプログラムするときに私に加わってください。
用品:
ステップ1:正しいものを手に入れる
他のエレクトロニクスプロジェクトと同様に、いくつかの基本的なツールを入手する必要があります。
1)はんだごて
2)はんだ線
3)カッター
4)一対のニードルノーズプライヤー
オプション:はんだ付けミスを修正するために、はんだブレードまたははんだポンプを入手してください
電子機器に関しては、部品リストがもう少し長くなっています。
1)2個の22pFキャップを備えたarduinoブートローダ+ 16MHz水晶を備えたATmega328P
*あなたはarduinoプラットフォームやFDTIアダプタのようにチップをプログラムするために何かが必要になるでしょう
2)4×74HC595シフトレジスタ
3)2 x ULN2803ダーリントントランジスタアレイ
4)1×DS1302 RTC + 32.768kHzクリスタル
5)1×3Vコイン型電池ホルダー+バッテリー。
6)4×直角プッシュボタン
7)1×Peizzoブザー
8)4 x 8 x 8 LEDマトリックスモジュール
9)16 x330Ω抵抗(マトリックスの値を計算する必要があります)
10)2×16列のメスピンヘッダー
11)2×16列オスピンヘッダー
12)1×4列4メスヘッダー(プログラミング用)
13)5 x 100nFキャップ
14)1 x 10uFキャップ
15)1×10K抵抗
15)電源ジャックコネクタ
16)5V DCウォールイボ
17)大きな試作品
18)接続用ワイヤー
ステップ2:ハードウェア側
たとえこのプロジェクトが主にソフトウェアに焦点を当てていたとしても、コードを書いてそれをデバッグしやすくするために最初にハードウェアを構築する必要があります。
ハードウェアは2つの主要部分で構成されています。マイクロコントローラ部分とLEDディスプレイです。
マイクロコントローラの部分は非常に簡単です、それはスタンドアロンのarduino(arduinoのブートローダを持つATmega328)です。
いくつかの周辺機器(4つのボタン、ブザーとRTC)、しかしそれはそれがすべての思考をするので最も重要な部分です。
LED表示部分はもう少し複雑で、はんだ付けするのに時間がかかります。この回路は4つのシフトレジスタ(74HC 595)で構成されています。
2つのダーリントントランジスタアレイ(ULN2803)および4つの8 x 8 LEDマトリックス。
ほとんどのLEDディスプレイと同様に、16 x 16個のLEDを個別に駆動するのはマイクロコントローラから256ピンを必要とするため、ディスプレイを多重化する必要があることは驚くには当たりません。
マルチプレクシングの方法でも、ディスプレイを駆動するためにマイクロコントローラから32(16行+ 16列)のピンが必要になるでしょう。この場合も、解決策はシフトレジスタをI / O拡張として使用することです。ビットシフトレジスタは32個の出力を与え、それらすべてを制御するのに3行しかかかりません。
しかし、シフトレジスタは1つのピンで16個のLEDの電流をシンクすることができないため(ここで全行が点灯している場合)、問題はここで終わらないので、ダーリントントランジスタアレイを使用して手助けする必要があります。シフトレジスタを飛ばす可能性がある大きな電流を処理できるバッファのように動作します。
要約すると、4つのデイジーチェーンシフトレジスタを使ってディスプレイを制御します。最初の2つはダーリントン配列を使用して行を駆動し、他の2つは列を駆動します。
このプロジェクトで計算する必要がある唯一のものは、LED列を駆動する抵抗の値です。
式は非常に単純で、次のようになります。
R =(Vsource - Vled)/ Iled
Vsourceは5V、Vledはマトリックス内の単一LEDの順方向電圧、Iledはその同じLEDの順方向電流です。
あなたがこれを手助けするためにオンライン計算機を使うこともできます。
ステップ3:構造コンセプト - LEDボード
私がビルドを始めたとき、私はケースを使わずにきれいな外観を得たいと思っていました(正しいケースを見つけることは悪夢です)ので、私は行きました
ツーピース構造、すなわちLEDマトリックスを保持する1つのボードとすべての電子機器を保持する2つのボード。
このようにして正面を見たときに見えるのはLEDディスプレイ自体だけで、他のものはすべてディスプレイの背後に隠れています。
あなたがディスプレイの後ろに他のボードを隠したいので、LEDマトリックスを持つ最初のボードは、2番目のもののサイズを決定します。そのため、マトリックスアセンブリをボード上に置き、どこにカットするかをマークしてボードをカットします。それが最初のものと同じサイズになるように2番目のボードを切ります。この建物スタイルのトリックは、同じサイズのプロトボードを作成する必要があるため、ボードをサンドして同じサイズにすることをお勧めします。
私は4つの8 x 8 LEDマトリックスを持っていたので、1つの16 x 16 LEDマトリックスを得るためにそれらを一緒に接続しなければなりませんでした、それは非常に単純で、それらを一緒に接続するのにほんの少し時間がかかります。これを行う方法は、水平行列の行をonとotherに接続し、垂直行列の列を接続することです(私はいくつかの細いワイヤーラッピングワイヤーで接続しました)。
このボードに残っている唯一の部分は一緒にボードを接続するヘッダを接続することです、このコネクタの配置は2番目のボードのスイッチの位置によって決定されます。スイッチはボードの側面にあるので、ボードの端にコネクタを配置することはできません。コネクタが端から約4つの穴に配置されているのはそのためです。
1つは行用、もう1つは列用です。
そして外観を完成させるために、私はアセンブリを隠してきれいな外観を得るためにマトリックスの上に一枚の白い紙を置くことを勧めます。
ディスプレイが接着剤から安全であるように、私は紙をマトリックスの端に接着しました。
ステップ4:建設コンセプト - 運転手
今はドライバボードがスペースの制約のためにこのビルドの最も複雑な部分であり、私はそれをどのようにビルドするかについてあなたに言うことはできません。
私があなたに言うことができるのはボタンやコネクタのような重要なコンポーネントの配置です。ボタンはボードの側面にあり、ほとんどが直角になっているため、見えなくなりますが、それでもボタンを押すことができます。
そこから2つのボードを結合するコネクタを配置します。コネクタはできる限り端に近づけてしっかりとした接続をする必要があります。つまり、端にボタンを配置し、そこからどこに配置するかを決めます。コネクタを入れてください。
注意:両方のボードのコネクタが完全に結合し、ボードの側面がぴったり重なっていることを確認することは非常に重要です。
それらの重要な部品が完成した後、あなたはあなたが正しいと思うように残りを造ることは自由ですが、「頭上」に行く部品がないことを確認してください。
配線を簡単にするために、グループで作成し、そのグループ内のすべての部分を互いに近くに配置することをお勧めします。
列コネクタは、2つのダーリントンチップと2つのシフトレジスタに接続する必要があります。そのため、束を互いに近づけて配置するのが理にかなっています。 。
また、将来のMOD用にマイクロコントローラ用のプログラミングヘッダを必ずいくつか入れてください。
ステップ5:ゲームのルール
ハードウェアの部分を終えた後は、コードとゲームの仕組みについて考えてみましょう。
私が最初から見つめて、決して完璧ではない私自身の規則を作り上げなければならなかったので、これは私にとって最も難しい部分でした。
ゲーム自体は、悪用するのが非常に簡単でうまくやっていくことができますが、これは本格的なゲームではなく、クールで小さなガジェットになることを目的としています。
だから、このちょっとした免責事項で、ゲームのルールについて少し話をすることができます。
ペットは5つの基本的な統計を持っています:健康、体重、幸福、飢餓と年齢。
プレイヤーの役割は、この統計と彼が持っている4つの行動、すなわちペットの餌やり、彼と一緒に遊んで、彼の後をきれいにして医療をすることによってバランスをとることです。
各アクションにはプラスの効果とマイナスの効果があり、プレイヤーは最善の妥協点を選択するように努力する必要があります。
プレイヤーがペットを養うことを選択したとき、彼には3つの選択肢があります。彼に肉食を与える、彼に果物またはキャンディーの御馳走を与える。
肉食は最も空腹点を補い、体重に多くを追加し、果物はペットの健康を高めますがペットの幸せを下げますそしてキャンディーは大きな幸せのブーストを与えますが健康を下げそしてペットの体重を上げます。
プレイヤーがペットと遊ぶことを選択すると、Simonゲームが開始され、プレイヤーの幸福度がどれだけ上手くいったかによって異なりますが、プレイヤーが非常にひどい場合は幸福は低下します。
時々ペットはトイレに行きます、そして、プレーヤーは彼の後をきれいにする必要があります、プレーヤーターンごとの失敗はペットの健康を下げて、ペットを病気にする機会を上げます。
また、ペットが病気になる確率はランダムにあります。ペットが古くても汚れていても、その確率は高くなります。それぞれ3つのレベルの病気があり、それぞれそれ自身の悪影響があります。プレーヤーは彼を治すためにペットに打撃を与えることができますが、これはペットの健康を低下させます(ショットを撮ることが好きな人はいません:D)。
そして(私にとって)最も無力な部分は、ペットが23:00に自動的に眠り、8:00に目が覚めるようになることです。もちろん、あなたはあなたの好みに合わせてこの部分を変更し、ペットのための新しい就寝時刻を設定することができます。
ステップ6:ソフトウェア:メニューとアニメーション
ここでは、ゲームのすべての機能と状態を決定した後で、すべてのアニメーション、設定、アクション、およびゲームの状態を作成して、それらを実現させる時が来た、プロジェクトで最も時間がかかる部分です。
このステップでは、paint.netとexcelの2つのプログラムを組み合わせて使用しました。
ペイントでは、すべてのアイコンとメニュー画面を1つずつ作成しました。あなたが簡単にコピー、ペイント、削除、そして画像を操作することができるのでペイントを使うことは大きな助けです。私が各アクション、設定、食べ物、そして感情のために立ち上がるカスタムアイコンを思いつくのに苦労したので、この部分が少なからず私にとって難しいことではありませんでした。
注:ペイントでは、ピクセルグリッドオプションを使用して、セクションをピクセルに分割してそれぞれをペイントすることが簡単にできるようにしました。
アニメーションとアイコンの作業を終えた後、アイコンにグループの番号を付け、アイコンのビットマップの作成に取り掛かりました。そのために、Excelのお気に入りのトリックを使用してビットマップを作成しました。
特定の領域のセルを使って「ペイント」できるExcelスプレッドシートを作成した後、必要な形式でビットマップを書き出します。
これが終わったら、ビットマップをコードにコピーしてソフトウェアを書き始めるだけです。
ステップ7:ソフトウェア:最終コード
このプロジェクトの主要部分はソフトウェアであり、それがこのプロジェクトに個性を与えるものです。
コード自体の中でそれを行ったので、ここで詳細にコードを説明することはしません。そこにたくさんのコメントがあることを期待してください(いくつかの恐ろしいスペルミスを伴うもの:D)。
このコードは3つのライブラリを使用しますが、それらはすべてArduino IDEに付属しているので、ダウンロードする必要はありません。
コードを最新の状態に保ち、将来それらのライブラリを見つける手間を省くために、特別なライブラリを使用せずにコードを作成しました。
これが、コードが長く、関数が異なればたくさんある理由です。
これで、コード自体に2つの主要部分があります。すべてのゲームルールと「ペット」の動作を処理するメインループと、表示の更新を処理するタイマー割り込みルーチンです。
コードの追加と改善には常に新しいものがあるため、コードに関する作業はまだ終わっていません。そのため、コードを随時更新します。しかし今のところ、コードは動作状態にあり、完全に機能しています。
ステップ8:あなたは完了です!次は何?
わーい!これで終わりです!それとも私たちですか?
すべての基本機能を備えた、完全に機能するベンチトップのたまごっちがありますが、なぜそこでやめるのですか。
追加および改善することがたくさんありますが、それはあなた次第です。それで、ハードルを取り、改善し、変え、そして楽しんでください!
そして誇りを持ってあなたのデッキに入れて、あなたの新しい創造を自慢して見せることを忘れないでください。
P.S
それを大事にして時々それを供給することを忘れないでください:)