Arduino nano に126×64ドットのOLEDディスプレイを繋いだのだが


2019年 07月 09日

前回、Arduinoの小型版のArduino nano に、128×64のモノクロのOLED(有機EL)を繋いでみたことを書いた。今回は、もっと掘り下げてみよう。

Arduino-nano-OLED-1.JPG

まず、もっとも標準的なArduino UNOから、より小さい、ブレッドボード上に挿せるArduino nanoについて説明しよう。

機能的にはArduino UNOとほぼ同じであるが、ピンに違いがあるので、結線するときには必ず印刷されているピンの記号を見ながら行おう。

今回は、I2CでOLEDディスプレイを繋ぐので、必要な結線は4本だけである。

OLED-128x64display.JPG

ディスプレイの上に、ピンが4つあるが、左から GND, VCC, SCL, SDA になっている。

これを以下の I2Cのバスに従って結線するだけで良い。

I2Cbus-arduino.JPG

これで、最初のブレッドボードの配線になる。

次に、このOLED用のライブラリを取ってこないといけない。それには、adafruitが用意してくれている、2つのライブラリ Adafruit_SSD1306 と Adafruit_GFX をダウンロードし、Arduino IDEに入れるのだが、このあたりの説明はネットに多数転がっているので省略する。いや、探さなくても、リンク先のページ(要するに本家のページ)に、英語でちゃんと説明があるので、ここを読むのが正統派だ。

さて、これらをインストールすると、サンプルプログラムも入るので、それを実行することで動作確認ができる。

さて、Arduino UNO から Arduino nano(実際は互換品)に変更したことにより、パソコン上の開発環境Arduino IDEの操作がちょっとだけ変わってくる。

「ツール」→「ボード」で、Arduino Nano を選ぶ。

次に、プロセッサを選ぶので、何か調べて選択しよう。普通は ATmega328P を選べば良い。

次に、シリアルポートを選ぶ。 UNOの時には、”/dev/ACM0″か”/dev/ACM1″ であったが、 Nanoでは “/dev/ttyUSB0″か “/dev/ttyUSB1″になるが、メニューが決めてくれるのを選べば十分だ。

次に、そのデバイスを通してプログラムを書き込むために、デバイスのモードを変更する。以下は、Ubuntu/Linuxの場合だ。

fuji$ sudo chmod a+wxr /dev/ttyUSB0

サンプルプログラムを実行するには、「ファイル」→「スケッチ例」→「Adafruit SSD1306」→「ssd1306_128x64_i2c」

これでプログラムが表示されるので、 (⇒)マイコンボードに書き込むを押すと、自動的にコンパイルし、エラーが出なければ、そのままマイコンボードに書き込み始める。

しばらくすると、”ボードへの書き込みが完了しました”が表示される。

しかし、OLEDには何も表示されず、真っ暗のままだ。 なぜ? 何をミスったのだろうか?

※最初の画像は、この問題が解決後の状態である。