Arduino しようぜ!ソフトウエア実機編

「Arduino しようぜ!」の4回目、ソフトウエア実機編です。(「Arduino しようぜ!」は大谷選手の「野球しようぜ!」へのオマージュです。)
今回も可能な限り専門的な用語を使わずに、ArduinoでOLEDに名前を表示するまでを解説します。
ハードウエアの準備は終了したので、Arduino IDEでスケッチを作成して、OLEDディスプレイに文字を表示します。
(前回のハードウエア実践編は、以下をクリック)

Arduinoで使うソフトウエアは、通常はArduino IDEですね。
Arduinoの開発には、「Arduino言語」を使います。これは、C++を簡略化したものと言われています。
C++のプログラムファイルは、拡張子がcppとhですが、Arduinoの標準ライブラリのsrcフォルダなどには各種のcppとhファイルが入っています。

プログラムの決まり事

プログラム(Arduinoではスケッチ)を作る際には、いくつかの決まり事があり、それを守らないとエラーが出ます。

1 プログラムは、半角英数記号で書く。
日本語変換はOFFにしてください。よくある間違いに、全角の空白があります。全角の文字と半角の文字は見ればわかることが多いですが、全角のスペースは見た目ではわかりません。気をつけましょう。

2 プログラムで使われる数字には、2進数、8進数、10進数と16進数があります。
2進数は、頭に「0b」がつきます。例 0b0111110
8進数は、頭に「0」がつきます。例076
16進数は、頭に「0x」がつきます。例0x3E
10進数には、何もつきません。例62
先日、年月日を入力するとき、日付に誤って「09」と入力したら8進数と勘違いされてエラーになりました。
気をつけましょう。

3 行の最後(命令の最後)には「;」を付けます。文書の最後の「。」と同じです。
ただし、「#」から始まるときは付けません。(命令ではないため。)
「{」や「}」で終わる行にも付けません。

4 1つの処理をブロックといい、「{」と「}」で囲みます。
Arduino IDEで新規作成を選ぶと「void setup() {」と自動的に表示されますが、その2行ほど下にある「}」までが1ブロックです。セットなので相方のカッコを消すとエラーになります。

5 大文字と小文字は区別されます。コピーペーストせずに画面とおりに入力してもエラーになるときは、だいたいコレです。

6 すでに決まった言葉(予約語)があります。それを他の用途に使うとエラーになります。

7 日本語は使えません。
しかし、「//」の後ろと「/*」~「*/」に囲まれた部分は、コメントと言って自由にメモ書き出来る部分です。
分かりやすいプログラムを書くためにも、積極的に(日本語で)書きましょう。

プログラムの構造

Arduino IDEで実際にスケッチを作る場合を見てみましょう。
「ファイル」の「新規スケッチ」を選ぶと、このような画面になります。
何も考えずに機械的に、上のブロックには設定を書いて、下のブロックには処理を書けばよいのですが、意味が気になる方もいると思うので簡単に説明します。

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

それぞれの意味は簡単な順に

「//」で始まる部分はコメントで、プログラムとしては無視されます。

「setup()」と書かれたブロックは、設定部分です。ブロック内に書かれたことは、最初に1度だけ実行されます。
各ピンの設定やパソコンとの通信の準備などを行います。

「loop()」と書かれたブロックは、繰り返し行われる部分です。実際のピンの入出力などの処理を記載します。

先頭の「void」とは・・・
説明が難しいのですが、何もしないという意味です。「?」ですよね。
C言語は「関数」の集まりで出来ていて、「関数」の最初に宣言というのが必要です。
「関数」は必ず「あなたは誰、中身は何」と聞かれたら返事をしなければならない決まりがあります。
ところが、最初のブロックには誰からも何も聞かれないので、「何もない」ことにしました。
禅の問答みたいですね。(説明が下手ですみません。)

OLEDを設定して表示

すでにハード的な接続は終わっているので、ソフトウエアを作ります。
まだ、Arduino IDEをインストールしていない方は、入れておいてください。

ライブラリの導入

OLEDを使うために必要なファイルの準備をします。
Arduinoでは、素人でも簡単にプログラムが作れるように、部品メーカさんなどが「ライブラリ」と呼ばれる「ソフト的な部品」を準備してくれています。せっかく準備して頂いたものは有り難く使いましょう。

左の列の上から3段目の「本棚?」みたいなアイコンを押すと、「ライブラリマネージャー」が開きます。
(もう一度同じアイコンを押すと消えます。)
検索窓に、購入したOLEDの型番の「Adafruit SSD1306」と入力します。
最初に出てきたライブラリの「インストール」を押します。

こんな窓が出てくるので、「全てをインストール」を押します。

無事ライブラリのインストールが終了しました。

OLEDの接続テスト

まだ、買ってきたOLEDが正常品で使えるのか分からないので、スケッチの作成に入る前に動作確認をします。
手順は簡単です。
「ファイル」の「スケッチ例」から、「カスタムライブラリのスケッチ例」の中の「Adafruit SSD1306」で「ssd1306_128x64_i2c」を読み込みます。

Arduino UNOを接続

まず、私のところではArduinoをつなぐ際に不具合が発生したので解消します。
(Windowsをお使いで、問題なくArduinoが認識できた方は読み飛ばしてください。)

Arduino UNO R3とubuntu(Linux)パソコンの接続不良

作業部屋ではubuntu(Linux)パソコンを使っており、以前は異常なく動いていたArduinoですが、久々にパソコンにつないだら認識しません。この文章を書いているWindows11パソコンでは問題ありません。
最近使っている、UNO R4(新型UNO)を再度つなぎましたが正常です。

UNO R4はUSBケーブルが違うので、ケーブルの不良か?と思って何本も交換しましたが変わりません。
パソコンのUSBポートの異常か?(でもR4では大丈夫だし。)
色々やってみましたが解決しません

最終的には、「brltty」の不具合でした。
「brltty」は、Linuxで点字ディスプレイを使うためのUSBドライバらしいですが、今のところ自宅では点字ディスプレイを使う予定はないので、削除しました。
「sudo apt remove brltty」でこのドライバを消したら嘘のように快調です。
解決しました。

実際のOLEDテスト

パソコンとArduinoがつながったら、OLEDのテスト用スケッチを「検証」して書き込みます。
パソコンの性能にもよりますが、少し待つとArduinoに正常に書き込まれて、自動的に一連のOLEDテストが流れます。
もし、正常に書き込まれてもOLEDに表示が出ない場合は、接続ミスが考えられるので、USBケーブルを外して再確認します。
(配線を変更・確認するときは、必ずUSBケーブルを抜いてください。)
それでもダメなら、アドレスを確認してみてください。

OLEDの裏側にアドレスを設定するジャンパがありますが、アドレスとの対応は下表のようになります。

ジャンパ向きアドレス
0x780x3C
0x7A0x3A

OLEDのアドレス

読み込んだOLEDの表示テストのスケッチでは、35行目の
「define SCREEN_ADDRESS 0x3C」でアドレスを設定しています。
(オリジナルのスケッチでは「0x3D」となっていましたが、「0x3C」に書き換えないと表示できませんでした。)
もし、購入したOLEDのアドレスが「0x7A」側に変更されていたら「0x3A」に書き換えれば動きます。

ところで、なぜOLEDの裏には「0x78」と書いているのに、スケッチには「0x3C」と入力するのでしょうか?

「0x78」は、16進数の「78」なので、2進数では「0111 1000」になります。
(Windows付属の電卓を「プログラマー」にして、「HEX」(16進数)を押せば簡単に変換できます。)

OLEDは出力装置で、Arduinoに向けてデータを送ったりはしません。つまり書き込み専用です。
先程の2進数の最下桁は、書き込み専用の場合は「0」固定なので省略する決まりになっています。
すると「0111 1000」が「011 1100」になります。
(電卓の「BIN」にして上記の2進数の数字を入力してみましょう。「011 1100」は、16進数では「3C」(0x3C)になります。)

OLEDのテスト画面

OLEDテストの画面は、色々なデモが走ります。
(ちょっと遅いですが)電子工作のレベルが上がれば、自分でもこれだけの表示をプログラムで実現できます。
なんだかワクワクしませんか?

OLEDに名前を表示する

やっと最初の冒険が始まります。
なるべくプログラム用語を使わずに、スケッチ作成について書いてみます。

冒険の書 第1章(事前の定義)

OLEDテストのスケッチを開いたままで、「ファイル」の「新規スケッチ」を作成します。

「新規スケッチ」にOLEDテストのスケッチから、以下の部分をマウスで選択してコピーして貼り付けます。
(//以下はコメントなので、必要な内容はOLEDテストの21行目からです。)

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library. 
// On an arduino UNO:       A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO:   2(SDA),  3(SCL), ...
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

途中の「//」部分(コメント)は、いらないので削除します。

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

「#include」は、他に準備したプログラムを読み込む設定です。
ここでは、Arduino IDEに読み込んだライブラリを取り込みます。
読み込むファイル名の前後に「<」と「>」が必要です。

「#define」は、名前を作ってプログラムを分かりやすくする工夫です。
「#define SCREEN_WIDTH 128」では、画面幅(SCREEN_WIDTH)という名前を作り、その値は「128」にしました。
これで、画面幅が「64」や「32」のOLEDに差し替えても、ここの数字を変えるだけでOKです。
ちなみに、「#define」で作る入れ物の名前は大文字を使います。これは、次回に紹介する「const」という書き換え禁止の定数が小文字なのと区別するためです。

つまり、「#include」で必要なファイルを読み込んで、「#define」で設定値を決めています。
それは、コピーした最終行の「Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);」を使えるようにするためです。この部分を書き換えると・・・
「Adafruit_SSD1306 display(128, 64, &Wire, -1);」と同じことです。
今後の手間を考えなければ、この様に書き換えられます。
(「#define SCREEN_ADDRESS 0x3D」部分も、この後で直接値を指定すれば消せます。)

すると、このようになります。

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

さらに、「#include <SPI.h>」と「#include <Wire.h>」もいらないので消せます。
「#include <SPI.h>」は、ハードウエアのところで説明したSPI用なのでいりません。(なぜ有るの?)
「#include <Wire.h>」は、下で読み込んでいる「Adafruit_SSD1306.h」の中身に記載されているので消せます。
最終的には、「void setup() {」前に記載する内容は、このようになります。

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

この中身を解説すると、OLEDディスプレイの横幅を128、縦幅を64に、「&Wire」はI2Cで使う設定、最後の「-1」はリセットピンの端子がないOLEDでは必須の設定です。これらの設定を「display」という名前で設定しました。
今後出てくる「display」は、ここで設定した内容を引用しています。
なので、ここを例えば「oled」という名前にしたら、以下の「display」と書いた部分も「oled」と書き換えないとエラーになります。(自分で決める場合も、小文字にしてください。)

冒険の書 第2章(設定)

「void setup() {」ブロック内の記載です。
ここには、設定又は1度しか行われない内容を記載します。

OLEDテストの中身を見てみます。

  Serial.begin(9600);

  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

  // Show initial display buffer contents on the screen --
  // the library initializes this with an Adafruit splash screen.
  display.display();
  delay(2000); // Pause for 2 seconds

  // Clear the buffer
  display.clearDisplay();

「Serial.begin(9600);」は、パソコンにArduinoからデータを送るための設定なので消します。
次の「//」部分もコメントなのでいりません。

「if」の部分は少し面倒ですが、プログラムで判断を行っている部分です。
もし◯なら△、◯と違うなら✕、などと処理します。
なので、「if(!」と「) [」
「Serial.println(F(“SSD1306 allocation failed”));」
「for(;;); // Don’t proceed, loop forever」
「]」
は、いらないので消します。
すると、「display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)」が残ります。
このままだと文末の「;」がなくてエラーになるので、「;」を追加します。

ここで、「display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)」を見てください。
「SCREEN_ADDRESS」は、「#define」の定義の部分に書いてあった「#define SCREEN_ADDRESS 0x3D」を消してしまったので「SCREEN_ADDRESS」を「0x3D」に戻します。

書き換えて残った「display.begin(SSD1306_SWITCHCAPVCC, 0x3C);」の細かな意味です。
「begin」は()内の内容でOLEDを初期化して準備します。
「SSD1306_SWITCHCAPVCC」はOLEDの電源を内部の3.3 Vから昇圧して生成します。
(これ以外の設定には「SSD1306_EXTERNALVCC」があります。ライブラリの説明には書いていませんが、OLEDのハードウエア・マニュアルには、OLEDパネルの駆動用に「OLED high voltage pin」に7~15 Vを入力すると有るので、ここに給電した場合を意味していると思われます。)
「0x3C」はOLEDディスプレイのアドレス設定です。
もちろん残します。
(この部分のハードウエア的な検証は、以下をクリック)

さらに、「Adafruit」社のマークを表示するための
「display.display();」と
「delay(2000);」を消します。

最終的には、こんな感じです。

 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

 display.clearDisplay();

これまでを振り返ってみましょう。
図面にすると、このように入れ子になっているイメージです。

一番最初は、#includeでライブラリなどを読み込む
2番目に、#defineで分かりやすくするために名前をつける
そして、void setup()でOLEDの設定まで出来ました。
次は、OLEDに表示する内容を記載します。

冒険の書 第3章(実践)

この後のOLEDに文字を表示したりする細かな制御は、これまでのようにOLEDテストのスケッチからコピーしてくるには、内容の理解が大変です。
実際に、見てもらえば分かりますが、「ssd1306_128x64_i2c」のスケッチは色々なデモをするために415も行あります。
そこで、必要な内容をまとめました。

.clearDisplay(); ディスプレイの表示内容を消去します。

.setTextSize(n); 表示するフォントのサイズを指定します。(n = 1~8)

.setCursor(x,y); テキストを表示開始する場所を指定します。

.print(“message”); 表示するテキストの内容です。「”」で囲います。日本語は使えません。

.display(); 設定した内容でディスプレイに表示します。

以下は参考です。
.drawPixel(x, y, color); 線を引きます。
.drawRect(x, y, w, h, color); 4角を描きます。
.fillRect(x, y, w, h, color); 4角で塗りつぶします。
.drawRoundRect(x, y, w, h, rad, color); 角丸の4角を描きます。
.fillRoundRect(x, y, w, h, rad, color); 角丸で塗りつぶします。
.drawCircle(x, y, r, color); 丸を描きます。
.fillCircle(x, y, r, color); 丸で塗りつぶします。
.drawTriangle(x0, y0, x1, y1, x2, y2, color); 三角を描きます。
.fillTriangle(x0, y0, x1, y1, x2, y2, color); 三角で塗りつぶします。
.invertDisplay(true); 表示を反転します。
.setRotation(n); n=0で0度、1で90度、2で180度、3で270度、画面が回転
.setFont(const GFXfont); GFXfontで用意されている半角英数のフォントを読み込む。
(凡例 w:幅、h:高さ、rad:角丸の大きさ、r:円の直径、color:通常はWHITE)

その他に、表示内容のスクロールや画像の表示などが出来ます。

これらを踏まえて、OLEDの画面に名前を表示しましょう。
なお、悲しいお知らせですが、日本語は世界標準ではないので、OLEDに漢字・ひらがな・カタカナは表示できません。
(表示する方法はあるのですが、大変面倒なので今回は省略します。)
アルファベット・数字で我慢しましょう。

「Yatte Miyoh!」と表示するなら、こんな感じですね。

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Yatte Miyoh!");
  display.display();

これを、「void setup()」のブロックにペーストします。
今回は、繰り返しや判断・点滅などの処理はせず1度だけの表示なので「void loop()」には何も記入しません。

細かな説明をします。

display.clearDisplay();
最初に画面を消去します。
これは、何かのノイズなどで変な表示が残ったものを除去します。

display.setTextSize(1);
次にフォントサイズを指定します。
これを「2」にすると、文字が大きくなります。

display.setTextColor(WHITE);
カラーのディスプレイじゃないですが、文字を表示するためには「WHITE」と大文字で指定します。

display.setCursor(0, 0);
文字の表示開始位置を指定します。(0, 0)は、OLEDの左最上部です。
色々と数字を変えてみましょう。

display.print(“Yatte Miyoh!”);
やっと「名前」を入力します。
半角英数字・記号なら表示できます。
「”」で囲みます。

display.display();
これまでに指定した内容で、OLEDに表示を開始します。

全てをまとめてスケッチにすると、こんな感じになります。
(黄色部分は、最初に設定した名前の「display」と対応した部分です。)

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Yatte Miyoh!");
  display.display();
}

void loop() {
}

マウスで選択、コピーしてArduino IDEの新規スケッチに貼り付けましょう。

Arduino IDEの「検証」をしてみます。エラーなく出来たでしょうか?
では、ハードウエア編でOLEDを接続した実機のArduinoに書き込みましょう。

「ちっこい」文字で。名前が表示できましたね。
色々と設定を変えて、2行でちょうど良い感じにしてみました。
変更箇所は、文字サイズを「3」、2行目の開始位置を「0, 30」にしてみました。
文字を全体的にずらして、周りを角丸で囲うことも出来ます。ぜひ試してみてください。

  display.clearDisplay();
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Yatte");
  display.setCursor(0, 30);
  display.print("Miyoh!");
  display.display();

フォントサイズ3,2行目 (0, 30)での表示例

冒険の書 第4章(結)

OLEDに好きな文字や線などが表示できるようになりました。
最後に、「#define」でプログラムを分かりやすくします。

熱中してプログラミングをしているときは覚えていますが、翌日または数日後に自分が書いたプログラムを見ると何が書いてあるか分からなくなったりします。
それを防止するのが、「#define」と「//」を使ったコメントです。
それでは、やってみよう!

現在のスケッチです。

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  display.clearDisplay();
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Yatte");
  display.setCursor(0, 30);
  display.print("Miyoh!");
  display.display();
}

void loop() {
}

「void setup()」の前に、分かりやすいように最初のところにまとめて置き換える内容を指定します。
「#define」で指定する候補は、画面のサイズ、I2Cアドレス、フォントサイズ、1行目の表示内容、2行目の表示内容 ぐらいでしょうか?

英語を正確に書くのは大変なので、OLEDテストのスケッチで消去した内容から、必要な内容をコピペします。

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32

画面サイズとアドレスは見つかったので、あとは「フォントサイズ」と表示する文字を指定します、
また、コメントは日本語にしてみました。

#define SCREEN_WIDTH 128 // OLEDの表示幅
#define SCREEN_HEIGHT 64 // OLEDの高さ
#define SCREEN_ADDRESS 0x3C // アドレス指定 0x78 - 0x3C, 0x7A - 0x3A
#define FONT_SIZE 3  //表示フォントの大きさ
#define OLED_TEXT1 "Yatte"  //1行目の表示内容
#define OLED_TEXT2 "Miyoh!"  //2行目の表示内容

「#include」の下に貼り付けます。
(対応する部分を色分けしてみました。見づらいですか。)

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLEDの表示幅
#define SCREEN_HEIGHT 64 // OLEDの高さ
#define SCREEN_ADDRESS 0x3C // アドレス指定 0x78 - 0x3C, 0x7A - 0x3A
#define FONT_SIZE 3  //表示フォントの大きさ
#define OLED_TEXT1 "Yatte"  //1行目の表示内容
#define OLED_TEXT2 "Miyoh!"  //2行目の表示内容

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  display.clearDisplay();
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Yatte");
  display.setCursor(0, 30);
  display.print("Miyoh!");
  display.display();
}

void loop() {
}

そして、対応する部分を書き換えます。

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLEDの表示幅
#define SCREEN_HEIGHT 64 // OLEDの高さ
#define SCREEN_ADDRESS 0x3C // アドレス指定 0x78 - 0x3C, 0x7A - 0x3A
#define FONT_SIZE 3  //表示フォントの大きさ
#define OLED_TEXT1 "Yatte"  //1行目の表示内容
#define OLED_TEXT2 "Miyoh!"  //2行目の表示内容

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

  display.clearDisplay();
  display.setTextSize(FONT_SIZE);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print(OLED_TEXT1);
  display.setCursor(0, 30);
  display.print(OLED_TEXT2);
  display.display();
}

void loop() {
}

出来ました。
「新規スケッチ」を作成して貼り付けます。
「検証」でエラーがなければ、Arduinoに書き込みます。
完成しました。

まとめ

電子工作レベルはDランクですが、何とかArduinoにOLEDをつないで名前を表示するまでを、ハードウエア編とソフトウエア編の記事にまとめました。

普通のArduino入門書は、Arduino上のLEDを点滅させて、次のページには複雑な周辺機器をつないで、スケッチも特に説明もなく分岐などの処理を行うことが多いようで、ここで落ちこぼれますね。そうならないように、LEDの点灯ではなく、興味を持てそうな文字の表示を選んでみました。

次回はLCDに文字を表示する記事を書きますが、ハードとソフトをまとめて記事にする予定です。
(その次は、何かの入力編ですね。)

少しでも面白そうだと思った方は、ぜひ、Arduinoの冒険をはじめてみましょう。
「Arduino しようぜ!」

コメント