Outline

Directory: Arduino

Subdirectories

Contents

Arduino

このページではArduinoをもちいた電子回路,プログラムなどに関する情報を扱います.

Arduinoで2Dグラフィックを扱う

Arduinoでグラフィック液晶やドットマトリックスを操作することは定番です. またそれらを操作するライブラリも豊富です. ただ, それらに共通してある2Dに何かを描画するという機能は多くの場合独立していません. この機能を独立させることで, いかなる表示機においても2Dに対する描画法を統一できます. 例えば, ドットマトリックスで描画していたものをグラフィック液晶に簡単に移植できます. メンテナンスもしやすくなるでしょう. 描画の機能のパフォーマンスが向上すれば, その恩恵はその機能を使っているすべての表示機にも与えられます.

キャンバスとは, Arduinoで2Dグラフィックを扱う時に便利なライブラリです. キャンバスはメモリ上にある描画空間に対して処理を行います―例えば, 点を打つ, 線を引くなど―.

キャンバス単体で用いることはほとんどありません. キャンバスと実際に目に見えるものに描画するものとを組み合わせて使用します.

このキャンバスの特徴は以下の通りです.

  • 応用しやすい関数セット
  • 白紙のキャンバスに文字、画像、直線などを描くような操作
  • 高い移植性
  • 高い描画効率

キャンバスを強化, 改良, 何でもしてください(’ω’)ノ

ダウンロードページ

キャンバスは以下のページからダウンロードできます.

キャンバスの特徴

このキャンバスの特徴は大きく分けて4つあります.

  • 応用しやすい関数セット
  • 白紙のキャンバスに文字、画像、直線などを描くような操作
  • 高い移植性
  • 高い描画効率
キャンバスの関数, 変数一覧

関数

SetSize キャンバスの大きさ設定
Canvas コンストラクタ
SizeX キャンバスx方向の大きさ
SizeY キャンバスy方向の大きさ
Pos 描画位置の指定
Dot 点の描画
Line 直線の描画
VerticalLine 垂直直線の描画
Boxf 矩形の描画
Boxw ワイヤー矩形の描画
Celput 画像の表示
Mes 文字列の描画
PutChar 文字の描画

変数

color 色情報
posX 描画位置x座標
posY 描画位置y座標
キャンバスの使い方

ここでは, Canvasの基本的な使い方を説明します. 説明内容は以下のとおりです.

  • ファイルの配置
  • キャンバスの開始
  • 点を打つ
  • 文字を書く
  • 画像を描く
  • 最後に
コントローラ読み取りライブラリ

Controllerとは、このページで紹介したコントローラーを制御するものです。このヘッダファイルにある関数でコントローラーからのスイッチ情報を読み取りどのボタンが押されているかを判断します。Controllerができることは次の通りです。

  • ボタンが押されている間もそのボタン入力を検出すること(トリガー形式)ができます
  • ボタンが一回押されてそのあとも押されているときはそのボタン入力を検出しないこと(非トリガー形式)ができます
  • インスタンス生成でコントローラーを簡単に追加できます
  • ボタンの同時入力に対応しています

Controllerを改良、強化、何でもしてください(;´∀`)

コントローラー製作

コントローラ製作に関することについて説明します. 説明の項目は以下のとおりです.

  • 部品入手
  • 製作
  • 説明
  • 参考文献
コントローラー

Arduinoを用いた電子工作でよく使うものの一つにスイッチがあります. 一つか二つのスイッチを使うのなら問題はないのですが、大量のスイッチを用いた電子工作となるとスイッチ一つに一つのピンを消費するわけにはいかなくなります.

例えば、ちょっとしたゲーム機を作るとしましょう. 十字キー、ABボタンなどで少なくとも6つぐらいのスイッチが必要となります. またグラフィック液晶との接続に13ピンほど使います.ピンが足りません.一つのピンで複数のスイッチ入力を読み取る必要があります.

また別の問題として仮に上の問題を解決―例えば抵抗による分圧方法によって解決―したとしても同時入力ができない問題があります. ゲーム機を作るとしてボタンの同時入力ができないのはかなり大きな問題でしょう.

このページではこれらの問題を解決する一つの方法を説明します。

このページで紹介する方法で以下のことができます。

  • 一ピンあたりボタン六個の入力が可能
  • 同時入力も可能
グラフィック液晶

グラフィック液晶に関する情報をあつかいます. 扱うグラフィック液晶は’SG12864ASLB-GB’です.

グラフィック液晶外観
グラフィック液晶外観
GLCDControllerの紹介
フレームレート測定画面
フレームレート測定画面

GLCDControllerとは、グラフィック液晶SG12864ASLB-GBを操作するものです. GLCDControllerの特徴は以下の通りです.

  • 2Dグラフィック操作ライブラリCanvasの利点を受け継ぎ
  • 高いフレームレート

このGLCDControllerのメンバ変数としてCanvasがあるのですが, このCanvasが2Dグラフィック操作を簡単にします. Canvasについての特徴はCanvasの特徴を参照してください.

画面の更新速度ですが,最高60fps以上(最高fps85fps, 平均60fps, 全画面更新15fps)まで出せます(ArduinoUno 16Mhzで検証).

GLCDControllerを改良、強化、何でもしてください(;´∀`)

Controllerの導入方法

Controllerの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • ファイルの説明
  • インクルード
  • コントローラの使用開始
GLCDControllerの導入方法

ここでは, GLCDControllerの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • ファイルの説明
  • インクルード
MediaPlayerの導入方法

MediaPlayerの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • ファイルの説明
  • 音楽再生モジュールの作成
  • 再生モジュールとコントローラの接続
  • コントローラ側の準備
SketchWriterの導入方法

SketchWriterの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • ファイルの説明
  • SDカード、操作したいArduinoと接続
  • インクルード, SketchWriterを開始
Arduinoで音楽を鳴らす

Arduinoで電子工作をしていると音を鳴らしたくなります. その鳴る音は電子音のようなピーピー音ではなく, ゲーム機でなっているような音―むしろ音楽といった方がいいでしょう―にしたいです.

このページではArduinoを用いて音楽を鳴らすことができる’MediaPalyer’を紹介します. 外部シールドを使わないで音楽を鳴らすことができます.

ただし以下の環境が必要です.

対応環境

メインのArduino

下の音楽再生用のArduinoをコントロールするためのものです.

音楽を再生するためのArduino

MediaPlayerは音楽を再生するためのArduinoを必要とします. これはつまり音楽を再生する処理とそのほかのメイン処理を分けるということになります. こうすることで, Arduinoは音楽を再生するための処理に集中することができます.

対応しているArduinoについて

  • 動作周波数: 8MHz, 16MHz

microSD

音楽ファイルを保存するために必要です

音楽ファイル

  • 対応ファイル形式: Wave
  • サンプリング周波数: 32KHz, 16KHz, 8KHz
  • 量子化精度: 8bit
Arduinoでメロディーを鳴らす

Arduinoで何か作品を作っているとき, その作品に音を鳴らせたい時があります. 本格的に音楽を鳴らすのではなく, 効果音としてちょこっと入れたいという意味です. 例えば, 簡単な早押しゲームを作るとして, ボタンを押したときの効果音を入れたいという時です. ですが, この効果音を入れたいために別のArduinoを用意するのはコストの点で好ましくありません. -オーディオプレイヤーのように音楽を鳴らしたい時は[Arduino/Arduinoで音楽を鳴らす]を参照してください.-

ここで, このMelodyPlayerがあります. このMelodyPlayerは新たにArduinoを用意する必要はありません. また, 音楽再生処理はバックグラウンドで行っているためメインプログラムに何も影響を与えません. メロディーを流しながら何か他の処理―LED点灯, ボタン入力など―をすることができます. あなたがすでに書いたスケッチのコードに一行"Play(’Melody名’)"と入れるだけでメロディーが再生されます.

MelodyPlayerができるのは以下の通りです.

  • インクルードするだけで簡単にメロディー再生
  • 簡単にメロディーを追加

ただしMelodyPlayerはピン3,9,10,11のPWM出力を妨げます.

MelodyPlayerの導入方法

MelodyPlayerの導入方法を説明します. 説明項目は以下のとおりです.

  • ダウンロード
  • ファイルの説明
  • インクルード
  • ピン接続
MelodyPlayerの関数一覧
関数
Begin MelodyPlayerの開始
End MelodyPlayerの終了
Play メロディー再生
Stop メロディー停止
IsPlaying 再生中かどうか
Enum
PLAY_MODE プレイモード
MelodyPlayerの使い方

ここでは, MelodyPlayerの基本的な使い方を説明します. 説明項目は以下のとおりです.

  • 再生
  • メロディーの追加方法
Optibootについて

Optibootに関して簡単に説明します. 説明項目は以下のとおりです.

  • optibootとは
  • optibootの起動方法
  • optibootにコマンドを送る
  • optibootにスケッチを送る
Controllerの関数一覧
Begin Controllerの開始
Stick スイッチ情報取得
Read スイッチ情報取得
GLCDControllerの関数, 変数一覧
関数
Begin GLCDControllerの開始
Draw グラフィック液晶への描画
変数
canvas 描画空間
MediaPlayerの関数, 変数一覧
関数
Begin MediaPlayerControllerの開始
Stop 音楽停止
Load 音楽ファイルロード
Play 音楽再生
Enum
PLAY_MODE プレイモード
SketchWriterの関数, 変数一覧
関数
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とは、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を改良、強化、何でもしてください(;´∀`)

ArduinoでArduinoにスケッチ書き込み

Arduinoにプログラムを書き込むにはパソコンが必要です. パソコンでプログラムを書きArduinoをパソコンに接続し、スケッチをマイコンボードに書き込みます. 別のプログラムを実行したいとき、またパソコンに接続してスケッチを書き込みます。これは大変労力かかると同時にパソコンなしではプログラムの変更は不可能です.

このページでは、それを解決する一つの方法を提案します。それは, Arduinoが別のArduinoへスケッチを書き込むということです. 詳しく言うと, スケッチをコンパイルした後に作成されるHexFileをSDカードに保存し, そのHexFileをある一つのArduinoが読み込み別のArduinoへスケッチを書き込むということです.

このページで紹介する方法で以下のことができます。

  • ArduinoでArduinoにスケッチ書き込み
  • 他機能の組み合わせで応用可能

"他機能の組み合わせで応用可能"の例ですが, ある端末を作ったとします。その端末にはグラフィック液晶ディスプレイ、コントローラーが付いています。使用者にグラフィック液晶でスケッチの選択をさせることで、一つの端末で複数のプログラムを実行することができます; パソコンでいちいちスケッチを書き込む必要はありません。

対応環境

ただし、以下の環境が必要です。

スケッチを書き込まれるArduinoにはブートローダー"optiboot"がかきこまれていること

optibootがかきこまれているArduinoは"Arduino UNO"です。このサイトでもこれを使用しています。

スケッチを書き込むArduinoは16MHzで動作していること

optibootとの通信には115200bpsのシリアル通信が用いられています。8MHzなどの低周波数で動作するArduinoではこの通信がうまくいきません。

Controllerの使い方

ここでは, Controllerの基本的な説明を行います. 説明項目は以下のとおりです.

  • ボタン数,ピン設定
  • ボタン番号設定
  • スイッチ情報の読み込み
グラフィック液晶の操作方法

ここでは, グラフィック液晶’SG12864ASLB-GB’の操作方法を説明します. これは, いわゆるライブラリの説明ではなく, ハードウェアそのものに対する操作方法です. この内容から, 自作のライブラリなどを製作することが可能です.

説明項目は以下のとおりです.

  • 入手方法
  • ピン配置
  • 名称
  • 実際に使ってみる
  • 参考文献
GLCDControllerの使い方

GLCDControllerの基本的な使い方を説明します. 説明項目は以下のとおりです.

  • GLCDControllerのしくみ
  • ピン設定とGLCDControllerの開始
  • 文字の表示
  • 画像の表示
MediaPlayerの使い方

ここでは, MediaPlayerの基本的な使い方を説明します. 説明項目は以下のとおりです.

  • 音楽ファイルを準備する
  • ピン接続
  • 音楽を再生する
SketchWriterの使い方

ここでは, SketchWriterの基本的な使い方を説明します. 説明項目は以下のとおりです.

  • SketchWriterのしくみ
  • HexFileの入手
  • スケッチの送信
Retrieved from "https://contentsviewer.work/Master/Arduino?hl=ja"