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

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

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

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

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

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

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

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

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を改良、強化、何でもしてください(;´∀`)

コンポーネント | 仕組み

本CMSは, ルート部, フロントエンド部, モジュール部, サービス部, クライアント部に分かれます.

各部の詳細を説明します.

CollabCMS | Welcome!
CollabCMS
CollabCMS

CollabCMSは,コンテンツを中心に置き,コンテンツに対して様々なアプローチをとることができる ウェブコンテンツ管理システム(CMS: ContentsManagementSystem)です.

多くのCMS(フラットファイル型,データベース型にかかわらず)は,システムを通してコンテンツファイルを編集することを前提にしています.CMS上でコンテンツ編集中に,生のファイルを編集することは多くの場合想定されていません.

CollabCMSは,コンテンツファイルとそのファイル構造をデータベースの基本とします.システムを通さずにコンテンツを変更,移動,削除しても正しく動作します.ある人が,CMS上でコンテンツを編集中に,ほかの人が生のファイルを編集できます.

コンテンツの編集で,多くのCMSは編集画面上にいろいろなツールを用意して,文章作成の補助をしています.ですが,その機能は編集画面を開いているときのみ有効であり,ファイルそのものを編集している際にはまったく意味を成しません.

CollabCMSでは,コンテンツファイルに可読性,可視性の高い記法を採用し,コンテンツファイルそのものが,文章作成の手助けをしてくれます.よく使われる記法(Markdownなど)は,セクションレベルにかかわらず,すべて左寄せで書かれますが,採用した記法は,インデントが挟まれます.これにより,文章の階層構造(アウトライン)が見やすくなり,書きやすくなります.

CollabCMSは,基本的なコンテンツ管理機能を持ちます.例えば,コンテンツの追加,編集,移動,削除のほかに,画像などのファイルをサーバーにあげることなどが可能です.ユーザごとのコンテンツ管理や非公開設定が標準で行えます.

標準で足りない機能は別のアプリケーションに任せてしまうことが可能です.例えば,バージョン管理をGitを用いて行うことができます.さらに,コンテンツフォルダをクラウドストレージ(Google Drive,OneDriveなど)と同期させ,クラウドを通してコンテンツを編集することができます(その場合,パソコンで好きなエディタで編集できるでしょう).

このように,CollabCMSは,システムでありつつもコンテンツファイルをベースにするため,コンテンツをファイルとしてみることができ,コンテンツへ対して様々なアプローチをとることができます.

一般的なCMS
一般的なCMS
CollabCMS
CollabCMS

個人~中規模のコンテンツ管理を想定しています.以下の方にお勧めです.

  • 個人利用での備忘録
  • サークルなど中規模の情報共有

CollabCMSの特徴は以下のとおりです.

  • ディレクトリ,コンテンツファイルベース管理
  • キャッシュ利用による速いレスポンス
  • コンテンツ表示と編集
  • コンテンツあいまい検索
  • ユーザごとのコンテンツ管理と非公開設定
  • 読み/書きやすい文章作成支援フォーマット
  • データベース(MySQLなど)を使用しない
  • SSL(TLS)を使用できない環境でのある程度のセキュリティ
  • クラウドストレージサービス(GitHub,GitLab,Google Drive,OneDrive,…)との連携
  • ローカリゼーションに対応
  • タグを用いた変動的なカテゴライズ

CollabCMSの対応環境は以下のとおりです.無料のレンタルサーバでも動くようにしています.

  • Apacheウェブサーバ上でphpが動作できること(php7.0.x以上)
  • phpがファイルの操作を行えること

このシステムの前バージョンはContentsViewer でした.ContentsViewerはCollabCMSのモジュールの一部になりました.

このシステムは古いバージョンです

version 2020.08.31 から, 本CMS名をCollabCMSからContentsPlanetへ変更しました.

このページは, version 2020.Jun.26までのバージョンに関する情報です.

新バージョンContentsPlanetに関する情報は, [Welcome!/ContentsPlanet (CMS)]を参照してください.

導入方法 | ContentsPlanet (CMS)

ここでは, 本CMSの導入方法を説明します.

すぐに使用したい方は, 項目のはじめるをご覧ください.

ContentsPlanet (CMS) | Welcome!
ContentsPlanet
ContentsPlanet

ContentsPlanet は, 次の三つの特徴を持つWebコンテンツ管理システム(CMS)です.

  • OS標準のファイルシステムを介した他システム(Git, FTP, GitHub, GitLab, OneDrive, Google Drive, …) との連携
  • アウトラインの視認性と可読性を考慮したエディタに依存しないコンテンツ記述軽量マークアップ言語
  • ディレクトリを超えたコンテンツの検索性とトピックモデルに基づいたコンテンツ管理(自動タグ付け, 自動カテゴライズ, 関連提示)
TerminalPro4アプリケーション例 | 端末第四世代(TerminalPro4)

TerminalPro4用のアプリケーション例を挙げていきます.

  • NON: 何もしないプログラム
  • GLCDTest: GLCD動作確認プログラム(fps表示)
  • CtrlTest: コントローラ動作確認プログラム
  • SerialMonitor: シリアルモニター
  • MediaPlyer: 音楽プレイヤー
  • Bullet: シューティングゲーム(東方風)
  • NadekoAdventure: 千石撫子(化物語)横スクロールゲーム
  • Notes: 音ゲー

これらアプリケーションはダウンロードページ から取得したフォルダ内にある’Exapmle’フォルダに存在します.

Controllerの関数一覧 | コントローラ読み取りライブラリ
Begin Controllerの開始
Stick スイッチ情報取得
Read スイッチ情報取得
Controllerの使い方 | コントローラ読み取りライブラリ

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

  • ボタン数,ピン設定
  • ボタン番号設定
  • スイッチ情報の読み込み
Controllerの導入方法 | コントローラ読み取りライブラリ

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

  • ダウンロード
  • ファイルの説明
  • インクルード
  • コントローラの使用開始
コントローラ読み取りライブラリ | コントローラー

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

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

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

導入方法 | CollabCMS

ここでは, CollabCMSの導入方法を説明します.

すぐに使用したい方は, 項目のはじめるをご覧ください.

コンポーネント | 仕組み

CollabCMSは, ルート部, フロントエンド部, モジュール部, サービス部, クライアント部に分かれます.

各部の詳細を説明します.

音楽再生
Arduinoでメロディーを鳴らす | Arduino

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

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

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

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

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

Arduinoで音楽を鳴らす | Arduino

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

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

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

対応環境

メインのArduino

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

音楽を再生するためのArduino

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

対応しているArduinoについて

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

microSD

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

音楽ファイル

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

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

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

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

対応環境

メインのArduino

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

音楽を再生するためのArduino

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

対応しているArduinoについて

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

microSD

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

音楽ファイル

  • 対応ファイル形式: Wave
  • サンプリング周波数: 32KHz, 16KHz, 8KHz
  • 量子化精度: 8bit
液晶
GLCDControllerの紹介 | グラフィック液晶
フレームレート測定画面
フレームレート測定画面

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

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

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

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

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

「https://contentsviewer.work/Master/:tagmap/アプリ,オセロ,ライブラリ,Web/Arduino,CMS?layer=ja」から取得