ライブラリ, ボット, Unicode, Arduino, スレッドプール, リアルタイムOS
その他
Arduinoでグラフィック液晶やドットマトリックスを操作することは定番です. またそれらを操作するライブラリも豊富です. ただ, それらに共通してある2Dに何かを描画するという機能は多くの場合独立していません. この機能を独立させることで, いかなる表示機においても2Dに対する描画法を統一できます. 例えば, ドットマトリックスで描画していたものをグラフィック液晶に簡単に移植できます. メンテナンスもしやすくなるでしょう. 描画の機能のパフォーマンスが向上すれば, その恩恵はその機能を使っているすべての表示機にも与えられます.
キャンバスとは, Arduinoで2Dグラフィックを扱う時に便利なライブラリです. キャンバスはメモリ上にある描画空間に対して処理を行います―例えば, 点を打つ, 線を引くなど―.
キャンバス単体で用いることはほとんどありません. キャンバスと実際に目に見えるものに描画するものとを組み合わせて使用します.
このキャンバスの特徴は以下の通りです.
- 応用しやすい関数セット
- 白紙のキャンバスに文字、画像、直線などを描くような操作
- 高い移植性
- 高い描画効率
キャンバスを強化, 改良, 何でもしてください(’ω’)ノ
SketchWriterとは、optiboot―これが書き込まれているArduinoはArduinoUnoです―と通信することができるものです。このSketchWriterはoptibootに対してメモリのセット、データの送信、アプリの実行、を命令することができます。それらの命令を使ってパソコンを用いずにArduinoにスケッチ―Arduinoではプログラムのことをスケッチと呼んでいます―を書き込むことができます。SketchWriterができることは以下のことです。
- optibootに対しての基本命令の送信
- スケッチが書かれたHexFile(Hexファイル)の読み込み
- Arduinoにスケッチを送信
- 今後応用可能な関数セット
optibootに対しての基本命令とはメモリのセット、 データの送信、 アプリの実行、 optibootと同期などをさします。このヘッダを用いるとArduinoからArduinoへスケッチ―プログラム―を書き込むことができます。
ただし、以下の環境が必要です。
スケッチを書き込まれるArduinoにはブートローダー"optiboot"がかきこまれていること
optibootがかきこまれているArduinoは"Arduino UNO"です。このサイトでもこれを使用しています。
スケッチを書き込むArduinoは16MHzで動作していること
optibootとの通信には115200bpsのシリアル通信が用いられています。8MHzなどの低周波数で動作するArduinoではこの通信がうまくいきません。
SketchWriterを改良、強化、何でもしてください(;´∀`)
ここでは, Controllerの基本的な説明を行います. 説明項目は以下のとおりです.
- ボタン数,ピン設定
- ボタン番号設定
- スイッチ情報の読み込み
Controllerの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- インクルード
- コントローラの使用開始
このページでは, 筆者が作成したライブラリが置かれます.
Controllerとは、このページで紹介したコントローラーを制御するものです。このヘッダファイルにある関数でコントローラーからのスイッチ情報を読み取りどのボタンが押されているかを判断します。Controllerができることは次の通りです。
- ボタンが押されている間もそのボタン入力を検出すること(トリガー形式)ができます
- ボタンが一回押されてそのあとも押されているときはそのボタン入力を検出しないこと(非トリガー形式)ができます
- インスタンス生成でコントローラーを簡単に追加できます
- ボタンの同時入力に対応しています
Controllerを改良、強化、何でもしてください(;´∀`)
ここでは, Canvasの基本的な使い方を説明します. 説明内容は以下のとおりです.
- ファイルの配置
- キャンバスの開始
- 点を打つ
- 文字を書く
- 画像を描く
- 最後に
このキャンバスの特徴は大きく分けて4つあります.
- 応用しやすい関数セット
- 白紙のキャンバスに文字、画像、直線などを描くような操作
- 高い移植性
- 高い描画効率
ここでは, MelodyPlayerの基本的な使い方を説明します. 説明項目は以下のとおりです.
- 再生
- メロディーの追加方法
Arduinoにプログラムを書き込むにはパソコンが必要です. パソコンでプログラムを書きArduinoをパソコンに接続し、スケッチをマイコンボードに書き込みます. 別のプログラムを実行したいとき、またパソコンに接続してスケッチを書き込みます。これは大変労力かかると同時にパソコンなしではプログラムの変更は不可能です.
このページでは、それを解決する一つの方法を提案します。それは, Arduinoが別のArduinoへスケッチを書き込むということです. 詳しく言うと, スケッチをコンパイルした後に作成されるHexFileをSDカードに保存し, そのHexFileをある一つのArduinoが読み込み別のArduinoへスケッチを書き込むということです.
このページで紹介する方法で以下のことができます。
- ArduinoでArduinoにスケッチ書き込み
- 他機能の組み合わせで応用可能
"他機能の組み合わせで応用可能"の例ですが, ある端末を作ったとします。その端末にはグラフィック液晶ディスプレイ、コントローラーが付いています。使用者にグラフィック液晶でスケッチの選択をさせることで、一つの端末で複数のプログラムを実行することができます; パソコンでいちいちスケッチを書き込む必要はありません。
ただし、以下の環境が必要です。
スケッチを書き込まれるArduinoにはブートローダー"optiboot"がかきこまれていること
optibootがかきこまれているArduinoは"Arduino UNO"です。このサイトでもこれを使用しています。
スケッチを書き込むArduinoは16MHzで動作していること
optibootとの通信には115200bpsのシリアル通信が用いられています。8MHzなどの低周波数で動作するArduinoではこの通信がうまくいきません。
Arduinoを用いた電子工作でよく使うものの一つにスイッチがあります. 一つか二つのスイッチを使うのなら問題はないのですが、大量のスイッチを用いた電子工作となるとスイッチ一つに一つのピンを消費するわけにはいかなくなります.
例えば、ちょっとしたゲーム機を作るとしましょう. 十字キー、ABボタンなどで少なくとも6つぐらいのスイッチが必要となります. またグラフィック液晶との接続に13ピンほど使います.ピンが足りません.一つのピンで複数のスイッチ入力を読み取る必要があります.
また別の問題として仮に上の問題を解決―例えば抵抗による分圧方法によって解決―したとしても同時入力ができない問題があります. ゲーム機を作るとしてボタンの同時入力ができないのはかなり大きな問題でしょう.
このページではこれらの問題を解決する一つの方法を説明します。
このページで紹介する方法で以下のことができます。
- 一ピンあたりボタン六個の入力が可能
- 同時入力も可能
ここでは, OSの機能とArduino標準機能と融合していきます. 融合するものとしては, Arduino言語―setup(), loop()―, Arduino標準関数に影響するタイマー割り込み部分です.
このページではArduinoをもちいた電子回路,プログラムなどに関する情報を扱います.
MelodyPlayerの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- インクルード
- ピン接続
ここでは, OSには必ずなくてはいけない機能の一つであるタスク管理について説明します.
タスク管理には非常に多くのことが関わっているため以下のように分けていきます.
- タスクコントロールブロック(TCB)
- メモリの構造
- 状態リスト
- コンテクスト
- システム割り込み
TerminalPro4の特徴としては以下があげられます.
- ゲーム機として成り立つ必要最低限の機能
- 迅速なアプリケーション切り替え
- 簡単なソフトウェア開発
Begin | SketchWriterの開始 |
---|---|
End | SketchWriterの終了 |
SetReaetPin | リセット信号を出すピンの設定 |
ResetArduino | Arduinoにリセットをかける |
GetCh | optibootからシリアルデータを受け取る |
Wait | optibootからの処理完了信号-STK_OK-待機 |
GetInSync | optibootからのSTK_INSYNK信号待機 |
VerifySpace | コマンド有効化 |
AppStart | プログラムの開始 |
GetSync | optibootと同期をとる |
GetParameter | optibootからOPTIBOOT_MAJVERまたはOPTIBOOT_MINVERを取得 |
SetAddress | メモリのオフセット値を送信 |
SendData | データの送信 |
SketchWrite | スケッチの書き込み |
SerialClear | シリアルデータ削除 |
SetFileName | 文字列’sketchName’にファイル名を代入 |
SketchLoad | スケッチ-HexFile-の読み込み |
SketchReload | スケッチ-HexFile-の再読み込み |
SketchClose | スケッチ-HexFile-を閉じる |
ReadHexVal | HexFileから1Byteの数値を読み込む |
ReadHexData | HexData読み込み, 配列’hexData’に格納 |
hexData[hexDataBufSize] | 読み込んだHexData |
---|---|
fileEnded | HexFile読み取り位置状態 |
sketchName | ロードしたHexFile名 |
sendDataSize | 一回でoptibootに送るデータサイズ |
hexDataBufSize | 配列’hexData’のサイズ |
ここでは, SketchWriterの基本的な使い方を説明します. 説明項目は以下のとおりです.
- SketchWriterのしくみ
- HexFileの入手
- スケッチの送信
SketchWriterの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- SDカード、操作したいArduinoと接続
- インクルード, SketchWriterを開始
GLCDControllerの基本的な使い方を説明します. 説明項目は以下のとおりです.
- GLCDControllerのしくみ
- ピン設定とGLCDControllerの開始
- 文字の表示
- 画像の表示
ここでは, GLCDControllerの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- ファイルの説明
- インクルード