Longan Nanoを使ってみる 16 ～とりあえずのまとめ～

# 前の記事
[Longan Nanoを使ってみる 15 ～音楽を鳴らす～](https://qiita.com/BUBUBB/items/adb35e02209ad78dfa9b)

# 全体の目次
[Longan Nanoを使ってみる 1 ～ビルド環境の構築～](https://qiita.com/BUBUBB/items/7ce85ada67a3f6d1944d)
[Longan Nanoを使ってみる 2 ～デバッガの環境設定～](https://qiita.com/BUBUBB/items/864b2ef9404453810d5f)
　[Sipeed RISC-V Debugger](https://qiita.com/BUBUBB/items/61316a4df1d9f81e2864)
[Longan Nanoを使ってみる 3 ～デバッガの使用方法～](https://qiita.com/BUBUBB/items/8efa5989e7f16f67672e)
[Longan Nanoを使ってみる 4 ～printfを使ったデバッグ～](https://qiita.com/BUBUBB/items/b607a3eedc4b66e7a74f)
[Longan Nanoを使ってみる 5 ～ゲームのプロジェクトを作成～](https://qiita.com/BUBUBB/items/98d9c25120c0955d5200)
[Longan Nanoを使ってみる 6 ～文字出力～](https://qiita.com/BUBUBB/items/8dee2eabe78f38364674)
　[Longan Nanoを使ってみる ～FONTX2ファイルを作る～](https://qiita.com/BUBUBB/items/8760ac886423bf06be68)
[Longan Nanoを使ってみる 7 ～外枠とブロックを書く～](https://qiita.com/BUBUBB/items/96abb1158b413c9efd27)
　[Longan Nanoを使ってみる ～謎の画像表示関数～](https://qiita.com/BUBUBB/items/40b99468839e1daeebfb)
[Longan Nanoを使ってみる 8 ～ボールを動かす～](https://qiita.com/BUBUBB/items/92f4816af3c41ea13b9e)
[Longan Nanoを使ってみる 9 ～A/Dコンバータから入力～](https://qiita.com/BUBUBB/items/311c179f7d3a0e30495d)
[Longan Nanoを使ってみる 10 ～パドルを動かす～](https://qiita.com/BUBUBB/items/eb8149c68f6e5456e7ca)
[Longan Nanoを使ってみる 11 ～ボタンの入力](https://qiita.com/BUBUBB/items/2445940a6b0d2110ee04)
[Longan Nanoを使ってみる 12 ～ボールのロス～](https://qiita.com/BUBUBB/items/f8c6ff860de127c93cb9)
[Longan Nanoを使ってみる 13 ～ステージの遷移とゲームオーバー～](https://qiita.com/BUBUBB/items/f1ae81b835f55abe319e)
[Longan Nanoを使ってみる 14 ～PWMとサウンド～](https://qiita.com/BUBUBB/items/3b592078d30cfed0ec53)
[Longan Nanoを使ってみる 15 ～音楽を鳴らす～](https://qiita.com/BUBUBB/items/adb35e02209ad78dfa9b)
[Longan Nanoを使ってみる 16 ～とりあえずのまとめ～](https://qiita.com/BUBUBB/items/ba782ccc80f50b7ab8c3)

# まとめ
ここまでで、Longan-Nanoを買ってから、開発環境、デバッグ環境を構築し、簡単なゲームを作るまでを説明した。マイコンの機能としては、あまり大層なものではなく、製品付属のLED、LCD、内部タイマー類、PWM、ADコンバータ程度だが、これらは多くのプログラムで使う、最も一般的な機能である。
また、これらの使い方を通して、ドキュメント類の参照方法などがわかるだけで、ほかの機能も使用できる。


# 注意
このページは、quiita.com で公開されています。URLがqiita.com以外のサイト、例えばjpdebug.comなどのページでご覧になっている場合、悪質な無許可転載サイトで記事を見ています。正しい記事は、https://qiita.com/BUBUBB/items/7ce85ada67a3f6d1944d からリンクしています。

無許可転載サイトでの権利表記（CC BY SA 2.5、CC BY SA 3.0とCC BY SA 4.0など）は、不当な表示です。
正確な内容は、qiitaのページで参照してください。


## プログラムの拡張
このプログラムでは、ボールを最大５個、パドルを最大２個まで増やすことができる。プログラムを改変し、特別なブロックを壊したときにボールが増える、などを実装することができる。
また、現在、ボールの速度が一定だが、これも、奥の壁にヒットすると速度が増える、といった処理を加えた方がよい。

## プログラムのダウンロード

今回の記事で作成したコードは自由にダウンロードできる。バイナリは公開していない。別に公開しても構わないのだが、記事の趣旨として完成品を配るのは意味がないこと、そもそもLongan Nanoを使って他人が作成したゲームを遊ぶだけ、という人がいるとは思えないため。

環境構築ができれば、ビルドは簡単なのでぜひ試してほしい。

### 今回作成したプログラムのコード

今回作成したゲームのソースコードは [githubで公開](https://github.com/HisayukiNomura/NanoBreakout)している。
https://github.com/HisayukiNomura/NanoBreakout
※inMicroSDのフォルダ内にあるフォントファイルは、microSDのルートにコピーして使用する。

### 最初に作ったコード
今回の記事を作る前に作成した、Longan Nanoでテストプログラム以外で作った最初のコードも[githubで公開](https://github.com/HisayukiNomura/Breakout)している。
https://github.com/HisayukiNomura/Breakout

もとになったコードは、ファイルの分割があまりされておらず、１ファイルが長いなど、多少わかりにくくなっているが基本的な構造は同じ。フォントは、http://jikasei.me/font/jf-dotfont/ のJFドットK12 … JIS X 0213：2000 対応 を使用させて頂いた。

ボールが複数画面に出る、ボールの速度が変化する、ゲームの難易度が選択できる、デモ画面がある、など、ゲームとしての体裁がある程度整っている。


# 感想
小さいPICなど、マイコンでは遊んだことがあったが、メモリやプログラムの制約が厳しく、常に色々気にしながらのコーディングだった。（PIC16F88の場合、プログラムメモリが4Kワード、RAMが368バイト）

一方、Longan Nanoの採用しているGD32Vではプログラムメモリが128KBytes、RAMが32KBytesという広大な空間でプログラム可能であり、ほとんど困ることはなかった。（もちろん、PICも32MXシリーズでは類似のスペックを持ってる）

ただ、遊びとして考えると、制約が多い環境でのプログラミングも面白く、Longan Nanoまで来てしまうと、単に「ひと昔のパソコン」を使っているような気分になり、新しいものを触っているようには感じない。Longan Nanoはドキュメントが少なく、APIのソースコードを直接見たり、類似のアーキテクチャを持っているSTM32シリーズのドキュメントを参照せざるを得ないことも多かった。ユーザーもまだPICやArudiuno (←やったことはないが）のように多くはない。

ただ、液晶、USBなどが一通りそろって、デバッグ環境まで買って２０００円、というのはお値打ちで、もし、遊んだことがない人がいたら、ぜひ遊んでみるとよいと思う。