Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。

スポンサー

無料ブログはココログ

« Arduino UNOでArduino ProMiniにプログラムを書く方法 | トップページ | ArduinoによるOLED表示機の作り方(ソフトウェア編-2) »

2021年2月13日 (土)

ArduinoによるOLED表示機の作り方(ソフトウェア編-1)

本日は初めてArduinoを使うことを前提に書きます。Arduino は Arduino IDEという統合開発環境でソフトウェアを書いたり、マイコンへプログラムを書き込んだりします。

Arduino_ide00

Arduino IDEのインストール方法は色んな方々か分かりやすい記事を書かれているのでweb検索すれば困ることは無いと思いますが、一応、推薦しておくサイトを列挙しておきます。

 

Arduino IDE インストール方法

 ステップbyステップでとても丁寧なインストール説明です。

Arduino IDEのインストールと設定

 win、mac、linux 対応で書かれています。

 

 

Arduino IDEの起動

インストールが終わったらArduino IDE(以降 IDE)を起動します。マイコンのプログラム開発環境としてはシンプルで良いと思います。バリバリ開発したい人はVScodeにArduinoプラグインを入れるなどしてください。

Arduino_ide00

   < シンプルで使いやすいIDE >

 

 

グラフィックライブラリの登録

小型OLED、LCD用の(SSD1306などの)ドライバがあるグラフィックライブラリとしてはAdafruit のものと、本日紹介するu8glib/u8g2が有名だと思います。

Adafruit-GFX-Library

olikraus / u8g2

 

u8glibとu8g2は、バージョンの違いでu8g2が新しく色々と機能が増えているようです。今回はシンプルに文字を表示したいだけですのでu8glibを使っていきます。

では早速IDEに登録してみましょう。

Arduino_ide01

「ツール」->「ライブラリを管理」でライブラリマネージャというのが開きます。

検索Windowに「u8glib」と入力すると、

Arduino_ide02

こんな感じに見えてきます。u8glibの項目の「インストール」ボタンを押すとライブラリがインストールされます。U8g2はドライバの種類も増えているのでu8glibでは対応していないチップのOLED/LCDを使う場合はU8g2から探してみると良いかもしれません。

 

 

Hello World で動作確認

グラフィックライブラリのインストールが終わったら実際に動かしてみます。OLEDの接続は先日の記事を参考にしてください。

Arduino_ide03

「ファイル」->「スケッチ例」->「U8glib」->「Hello World」を選択してみます。

Hello Worldとは、プログラミングを始めるときの第一歩に使用するお決まりのモノですね。

 

新しいIDEが開きます。沢山のコードが書かれていますが、殆どはコメントアウトされたものです。

行の先頭に//っては、C,C++言語ではおなじみですよね。 その行はコメントという意味です。

Arduino_ide04

今回使うOLEDのSSD1306チップの128x32ピクセルの行を探します。

「ctrl」+「f」で検索Windowが開くので SSD1306_128X32で検索しても良いでしょう。

 

上のように3行ありますね。// コメントのところに詳細が書かれています。

「SW SPI」
「HW SPI」
「I2C / TWI」  で、今回のはI2C接続なので

3行目のところの行の先頭の // を消します。

これがソースコード上、唯一の変更点です。

u8glibは様々なICに対応したドライバを持っているので、どれを使うか指定しています。

 

 

ボードとプロセッサの設定

コンパイルする前に、ボードとCPUを設定しておきます。

Arduino_ide05

今回のボードはArduino Pro mini 互換だったので「Arduino Pro  or Pro Mini」を選択します。

Arduino_ide06

プロセッサは「ATmega328P(5V, 16MHz)」です。3.3V仕様のボードもあるんですね。間違って買ってしまったら色々と大変かも。

プロセッサの1行下のシリアルポートってのは、書込み機のポートの事です。今回はArduino UNOを書込み機として使用しているため「UNO」のポートを選択しています。専用のUSBシリアル変換器を使う場合はそのポートを選択してください。

 

 

コンパイルとプログラム書込み

次にコンパイルと書込みです。この矢印ボタンを押すとコンパイルと書込みをやってくれます。

Arduino_ide07

一度目のコンパイルは、ちょっと時間がかかります。1分くらい。

 

Arduino_ide08

書込みが終わりました。

Arduino_ide09

OLEDに「Hello World!」と表示されていればOKです。

ソースコードをいじった所は「//」を消しただけです。意外と簡単でしたね。

 

 

フォントや文字を変えてみる

コードをスクロールしていくと以下のようなところが出てきます。

Arduino_ide10

u8g_font_unifont ってのが今、表示したフォントです。

ドキュメント\Arduino\libraries\U8glib\src\clib\u8g.h  というソースの中に同梱されているフォント一式が書いてあります。

/*
Free-Universal Regular
r: Reduced char set (codes 32 - 128)
n: Numbers (codes 42 - 57)
no char: Full set (codes 32 - 255)
*/

とコメントに書いてあるとおり、フォント名の末尾に「r」が書いてあるものが通常の英数字です。数字だけなら「n」です。Full setはどんな時に使うのでしょうかね。

 

例えば、

  u8g.setFont(u8g_font_04b_03r); 

にすると、

Arduino_ide11

めっちゃ小さい! これはこれで楽しめそうです。

何気に等幅フォントではなくプロポーショナルフォントになっているところがニクイですね。

 

 

  u8g.drawStr( 0, 22, "Hello World!");

というところの"Hello World!" という文字を変えると表示される文字が変わります。

0, 22,  は文字を描画する位置(X,Y)の指定です。適当に数値を変えてみるとわかると思います。

Aruduino20

 

表示領域の原点「0,0」から文字を書こうとすると画面の上側にはみ出てしまうので、縦方向はフォントの高さよりも大きくする必要があります。

 

 

 

思ったよりも記事が長くなったので、本日はここまで。

次回はUART信号を受信して、OLEDに数字を表示するところを説明しようと思います。

 

 

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村

ブログランキングに参加中です。 めざせ1位! 

もしよろしければ「ぽちっと」お願いします。 

« Arduino UNOでArduino ProMiniにプログラムを書く方法 | トップページ | ArduinoによるOLED表示機の作り方(ソフトウェア編-2) »

電子ボリューム」カテゴリの記事

Aruduino」カテゴリの記事

コメント

値段と入手性と、使う機能の範囲から考えますと、Seeeduino XIAOで取り込むことをお勧めします。
秋月で580円でUSBソケット付きで書き込みも楽になりますし、十分小さいですので。
https://akizukidenshi.com/catalog/g/gM-15178/

DR.KSKさん

情報ありがとうございます。 こんなモノもあるのですね。ぜひ挑戦してみてください。
電流が10mAよりも小さいと ProMiniよりも良くなりそうです。

うちにESP32基板もあるのですが、ベースボードを含んだ電流が100mAとProMiniの10倍もあって全然いけてないことが分かりました。

目標というか理想は、コントローラに使っているPICと同様の1mA切りですね。

コメントを書く

(ウェブ上には掲載しません)

« Arduino UNOでArduino ProMiniにプログラムを書く方法 | トップページ | ArduinoによるOLED表示機の作り方(ソフトウェア編-2) »

サイト内検索

Sponsors link

2021年5月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31