スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「ぼくのかんがえたさいきょうのデジタルインベーダーゲーム」Arduino版

先日公開した「ぼくのかんがえたさいきょうのデジタルインベーダーゲーム」ですが、PICマイコンを使ったことと、ハンダ付けする場所が多かったりして「夏休みの工作」としてはちょっとハードルが高くなってしまったような気がするので、今更ですがArduino+ブレッドボードで作って見ました。
電卓ゲームArduino版

実は自分はArduinoIDEでまともなアプリケーションを開発するのは初めてで、ArduinoIDEの文化にはちょっと違和感がありました。
・ライブラリへの依存度が高く、また割り込みタイマーハードウェアの競合など暗黙の了解が多い
・性能を出しきるような完成度の高いアプリを作ろうと思うと、結局自分でハードウェアを叩いたりしなくてはならない。
・IDEのバージョン変更が結構頻繁で、しかもフォルダ構成など表に出ない部分での変更が多いので、ネット上の古い情報が役立たないことがある(これはまあどのマイコンでも同じようなもんですが)

しかし、Arduinoは現時点では情報量が多く、何よりも格安でマイコン電子工作を始めるための土台として確実だと思います。
何かしたいと思うことをすぐさま実現できるようにArduino用には各種の拡張シールドをコネクタに挿し、ライブラリをダウンロードしてスケッチをコピペするだけで使える準備が出来ているのですから、手書きで回路図を描いたり部品をバラで集めてはんだごてでちまちまやって、アセンブラで頭をひねらせていた古い世代の自分からすれば、うらやましい時代になりました。


[回路図というか接続図]
電卓ゲームArduino版配線図


[主な部品]
・Arduino本体aitendo びんぼうでいいの
今回は激安の互換品を使いましたが、もちろん本家のArduinoでもいいし、互換ボードでもかまいません。ATmega168以上の8bit AVRが搭載されているArduino互換ボードなら多分動くでしょう。もし初めてならば、ハンダ付けなどの必要が無い純正品のほうがいいかも。
・7セグメントLEDモジュールaitendo 4桁7セグLED表示器 [ZDS4-G369SRB-7.7]×2個
今回は激安品を使いましたが、合計8桁分のダイナミック表示用、カソードコモンの7セグメントLEDモジュールがあれば、配線次第で使えます。
アノードコモンタイプでも使うことが出来ますが、ピン出力の論理を反転(セグメント出力は1でオンから0でオン、桁出力は0でオンから1でオン)するようにスケッチの変更が必要です。
・圧電サウンダ
圧電スピーカーとも呼ばれるもので、発振機を内蔵しているブザーではなくて、ただの発音素子のほうです。今回はArduinoのピンから直接駆動するので、インピーダンスの小さいダイナミックスピーカーは使えません。
・カーボン抵抗1/4W 1kΩ×8
普通のリードタイプの抵抗器です。
・プッシュスイッチ×3
PIC版ではロータリーエンコーダを使いましたが、入手性を考えて普通の押しボタンでUP/DOWNということにしました。ブレッドボードに挿せるタイプのタクトスイッチを使えば、ハンダ付けも不要です。


[解説のようなもの]
今回はブレッドボードを使いました。LEDへの配線数が多くて地道な作業になります。
電卓ゲームArduino版ブレッドボード
小さいボードしか持って居なかった上にケーブルが短いので混雑しています。画像はあまり参考にしないでください(笑)

電源は5V、ATmega328PのI/Oに流せる電流は1ピンあたり40mAなので、1セグメントあたり最大でも5mAに抑える必要があります。
今回使用したLEDはVf=約1.8V、3mA程度で十分な明るさがあるので、電流制限抵抗は(5V-1.8V)/3mA = 1066Ωとなりますが、近い値で手持ちのなかから1kΩとしました。
もし青色や白色のLEDで動作させたい場合には、Vf=3.5Vとして計算、(5V-3.5)/3mA = 500Ωとなりますので、抵抗を470Ωから560Ω程度に変更します。お使いになるLEDのスペックシートをよく読んで、電流を流し過ぎないように注意してください。


[スケッチ]
ArduinoIDEは1.0系の1.0.5-r2を使いましたが、恐らく最新のArduinoIDE(1.6.x)でも動作するのではないかと思います。
割り込み処理をするために当初はMsTimer2ライブラリを使っていましたが、サウンド発生用のtone関数がTimer2で競合してしまうため、TimerOneライブラリを使って割り込み処理をかけるようにしました。

tone関数を使って音階を奏でているのですが、どうもノイジーな音になってしまっています。恐らく割り込み処理の優先度の関係?でそうなるのでしょうが、ライブラリの内部でどう処理されているのかは勉強不足で把握しておりませんので、現状はこれで勘弁してください。

ゲームのルールや内容については「ぼくのかんがえたさいきょうのデジタルインベーダーゲーム」を参照してください。

なお、このスケッチ並びに製作記事を参考にされたことによる全ての事象について、私は一切の責任は負いません。[At Own Your Risk]

ソースコードの表示にはGitHub:Gistを利用しています。
スポンサーサイト

テーマ : 電子工作
ジャンル : 趣味・実用

コメントの投稿

非公開コメント

最近の記事
プロフィール

Bonezine

Author:Bonezine
狭い視野で浅はかな発想と奇異な日常を語ります。本気にしちゃだめだよ。

最近のコメント
月別アーカイブ
カテゴリー
最近のトラックバック
ブログ内検索
RSSフィード
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。