Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

Arduinoでたまごっち! Tamaguinoで恐竜を育てよう。【その1】「プログラムの紹介」

Mira

Tamaguino🥚
Arduinoを使ってたまごっちを作ろう。
f:id:miraluna:20200315140623j:plain

目次
🎀 その1「プログラムの紹介」(このページ)
🎀 その2「実機の作製方法
🎀 その3「Tamaguinoで遊ぼう

<このページの目次
1.Tamaguino製作者の紹介
2.プログラムソースのダウンロード
3.ライブラリのダウンロード
4.ブレッドボードで試運転
5.OLED表示バグの修正
6.みつはを一人立ちさせる

みなさん「たまごっち」って知っていますか?
私は今までアニメのキャラクターだと思っていたんだけど、もともとは違うの。きっと知っている方のほうが多いわよね。

        これが「たまごっち」→ 

「たまごっち」はバーチャルペット”たまごっち”を育てるキーホルダー型のゲーム機。
持ち運べるデジタルペットという発想はきっと画期的だったでしょうね。
一時はどこのおもちゃ屋さんでも売り切れ状態で、手に入れるのがとっても大変だったらしいわ。それほど大人気の商品だったの。

今回はその”たまごっち”を、Arduinoを使って作りたいと思います。


.「Tamaguino」は”いただきもの”なので製作者の紹介
今から作っていくのはバンダイさんが作ったオリジナルのたまごっちではなくて、たまごっちが大好きだから自分で作っちゃった方の作品をお手本にさせていただきます。

製作者は Alojz Jakob さん。Thank you for your fantastic project "Tamaguino"!!
Tamaguinoのページへのリンク→ 🎀 Tamaguino 🎀

Alojzさんの作ったたまごっちのプログラムは、恐竜をヴァーチャルペットにして育てるゲーム。名前は「Tamaguino」。Alojzさんは自身のページやGitHubという場所で「Tamaguino」のプログラムコード(スケッチ)を公開されていて、誰でも自由にダウンロードして使うことができるようにしてくれているの。だから私もそのプログラムをダウンロードさせていただいて、Tamaguinoを作りたいと思います。

.プログラムソースのダウンロード

まず上のリンクからTamaguinoのページに入ります。
f:id:miraluna:20200317181909p:plain
そこにはTamaguinoのソースをダウンロードできるリンクがあります。
「Source on GitHub」からならAlojzさんのGitHubのページへ行くことができて、そのページにある「Clone or download」と書かれた緑のボックスからプログラムをダウンロードできます。

f:id:miraluna:20200317181903p:plain
その隣には「Download as zip」というのがあるので、GitHubからではなく、直接zipファイルをダウンロードして解凍することもできます。私はこっちの方法でやった。

.ライブラリのダウンロード

Tamaguinoのスケッチ(プログラム)には2つのライブラリが必要です(使うのは4つだけど、そのうちの2つはArduino IDEにもともと入ってる)。

ライブラリとは ↓
手作りGPSロガー プラスαの2回目 「Arduinoでライブラリを使うための準備」 - Mira&Luna's nursery lab

必要となる2つのライブラリもAlojzさんはちゃんと用意してくれてる。
上のダウンロードページの写真を見ると、下に「Adafruit GFX Library」と「Adafruit SSD1306 Library」という2つのリンクがあります。これが必要な2つのライブラリ。リンクからGitHubへ移動すると、やはり緑のボックスからダウンロードできるわ(Internet Explorer からやってダウンロードできない方は、Google ChromeMicrosoft Edge とかからならダウンロードできると思う)。


ライブラリをダウンロードしたなら Arduino IDE にインストールをしましょう。
:) ダウンロードしたzipファイルを解凍する。
:) 解凍したファイルを「ドキュメント」の中の「Arduino」の中の「Libraries」のフォルダに入れる。
:) Arduino IDE を開いて、「ツール」から「ライブラリを管理」を指定。
:) 「ライブラリマネージャ」が開かれるので、2つのライブラリを探して「インストール」ボタンでインストールする。

たぶん「」と「」だけ、あるいは「」と「」だけでインストールできると思う。
インストールしたら Arduino IDE を一度閉じて、もう一度起動させましょう。
これでO.K.

それではTamaguinoのプログラムをArduinoに書き込んで、ブレッドボードで試運転してみましょう。

.ブレッドボードで試運転

f:id:miraluna:20200317181913p:plain
ブレッドボードに必要なパーツを配置します。
配線方法は上の図の通り。ディスプレイはI²C接続のOLEDです。あとはブザーとタクトスイッチ。抵抗器は3つとも10KΩよ。私は他に電解コンデンサも使います。使用パーツについては【その2】「実機の作製方法」で紹介しますね。

さて、ArduinoにTamaguinoのスケッチを書き込んで、上の配線図の通りに接続するとこんなふうになると思います。
  こんなふう→ f:id:miraluna:20200312192533j:plain:w450

本当はこういう画面になるはずなの。
こういう画面→ f:id:miraluna:20200318184009j:plain:w300

みんながみんなこうなるのかは分からないけど、Alojzさんのところに多くのメールが届いたそうで、どうやら画面表示にバグがあるみたい。バージョンや仕様のせいかしらね。
Tamaguinoのページにはその修正方法も書かれています。

.OLED表示バグの修正

OLED(ディスプレイ)の表示バグの前に、ライブラリのバージョンについてもTamaguinoのページに書かれていました。
ライブラリのバージョンがどんどんアップデートされて、みつは(ATmega328-マイコンのこと)にデータが入りきらなくなってきたんだって。だからTamaguinoに適したライブラリのバージョンが示されてる。
「Adafruit GFX」   は Ver1.1.5
「Adafruit SSD1306」は Ver1.1.2
このバージョンは古いものなの。つまり最新版をダウングレードすることでみつはの容量を越えないようにするわけ。
どうやってダウングレードするかというと、
:) Arduino IDE を起動して、「ツール」→「ライブラリを管理」を指定する。
:) 「ライブラリマネージャ」が開かれるので、ライブラリの名前を検索ボックスに入れてライブラリを探し出す。
:) 「バージョン」のボックスから1.1.5あるいは1.1.2を指定し、「インストール」する。

つまりバージョンを指定して再インストールするわけね。
これでライブラリのバージョンをダウングレードできます。
初めにインストールするときに古いバージョンを指定すればよりスムーズね。


次は肝心の、OLED表示のバグの修正方法。
写真を見てみると本来表示されるべき画面の上半分だけが表示されているのがわかるかしら。横はちゃんと表示されているから、縦に2倍の長さに伸びた図になっていますね。これは使用しているOLEDが「横128 x 縦64」のドットを表示できるものなのに対して、「横128 x 縦32」のプログラムで動作させているため。
その設定を変更します。

まずダウンロードしたライブラリのフォルダを開きます。「ドキュメント」「Arduino」「libraries」の中に「Adafruit SSD1306」があると思います(OSによっては違う場所にあるかも)。そのフォルダの中に「Adafruit_SSD1306」というファイルが2つあります。1つはCPPファイル。もう1つはHファイル。このHファイルのほうを開きましょう。
ファイルを開くとSSD1306ディスプレイに関してこんな3行があります。

// #define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16

がんばって見つけてね。

「#define」というのは「設定」のことで、3種類のサイズのディスプレイが想定されている。128x64, 128x32, 96x16 ね。
ここで適切なサイズを選択します。
どうやって選択するかというと、「//」が意味しているのは"この行はプログラムではありません"というもの。つまり「//」が頭についている行はプログラム上では無視されるの。すると上の3行では1行目と3行目がプログラムとして読まれないわけだから、スラッシュ(/)のない2行目だけを書いた(指定した)ことになるわけ。

実際に使用するOLED(ディスプレイ)は1行目の"128x64"だから、1行目のスラッシュだけを外して......

#define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16

こうすれば"128x64"を指定したことになりますね。
Arduino IDE をいったん閉じてからまた起動して、スケッチを書き込めば......。
f:id:miraluna:20200313001133j:plain:w400 修正完了 (∂_∂🎀y

.みつは(ATmega328P)を一人立ちさせる。

魔女は12歳になると一人立ちするっていうけど、私は12歳を過ぎてもまだ一人立ちしてないな。魔女なのに。 なんてね。小さい頃から魔女になりたいミラです。
さて、ここまで Tamaguino のソフト面の作り方を紹介してきましたが、次回はハード面の実機の実装方法を紹介します。そのときに実機をArduinoから独立させて作ります。

◆ 今はArduinoで直接動かしている     ◆ 実装時は独立させる
f:id:miraluna:20200317181913p:plain:w250     f:id:miraluna:20200315140623j:plain:w250

そのためにはArduinoの箱に納まっている箱入り娘みつはを一人立ちさせなくてはいけません。
◆ Arduinoの箱入り娘           ◆ みつはの一人立ち
f:id:miraluna:20191122170928j:plain:w200        f:id:miraluna:20191122170945j:plain:w250

「みつは」はAtmel社のAVRマイコン「ATmega328P-PU」。Arduinoの本体ともいえるコンピュータです。
Arduinoにはパソコンとの通信を行えるシリアルコンバータとか、電圧を変えるレギュレータとか、ピンを挿せるソケットとか、いろいろなものが装備されているけど、それらの装備を取り払ってマイコンだけで動作させることもできます。
今回の「みつはの一人立ち」というのは、Arduinoから独立させてマイコンだけで動作させる、ということなの。

みつはを一人立ちさせるまでの道のり
αArduinoの他に「みつは(ATmega328)」を用意する。
βArduino IDE に「ATmega328」のボードをインストールする。
γArduinoに"Arduino ISP"を書き込む。
δArduinoとみつはを配線する。
ε:みつはにブートローダを書き込む。
ζ:みつはにスケッチを書き込む。

こうして書き出してみるとみつはの一人立ちは長い道のりね。
詳しい説明は他の記事で書いているので下のリンク「ATmegaにブートローダを書き込む」を見てくださいね。
ATmega328P-PUは2020年3月現在、秋月電子通商さんで230円です。
      追記:) 2021年1月現在、秋月電子通商さんで210円です。
     買い物時の参考に→ ATmegaに書かれたアルファベットの読み方

β(ベータ)からε(イプシロン)までのやり方 ↓
miraluna.hatenablog.com

ζ(ゼータ)のスケッチの書込みは、ブートローダを書き込んだときの配線と「ツール」の設定をそのままにして、「マイコンボードに書き込む」を押します。

これでプログラムの準備はできました。
次回はTamaguinoの実機を実装していきたいと思います。


目次
🎀 その1「プログラムの紹介」(このページ)
🎀 その2「実機の作製方法
🎀 その3「Tamaguinoで遊ぼう

  🎀ミラの部屋へ🎀