128×64ドットのOLEDに、8行21文字、全168文字を表示


2019年 07月 22日

OLEDは非常に鮮明な表示と言われているので、文字を非常に小さくしてみた。

DSCN4780-small.JPG    DSCN4782-small.JPG

漢字を表示したりするには、フォントを入れたりしないといけないのだが、面倒なので止めた。

とりあえず、これを表示しているスケッチ(プログラム)を示す。

#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     4

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
displayText(display,"Arduino is an open-source hardware and software company,"
"project and user community that designs and manufactures "
"single-board microcontrollers and microcontroller kits " );
}

void loop() {

}

void displayText(Adafruit_SSD1306 disp, char* text) {
disp.setTextColor(WHITE);
disp.clearDisplay();
disp.setTextSize(2);
disp.setCursor(0,0);
disp.print(text);
disp.display();
}

さて、次は、2つのディスプレイに異なる内容を表示してみよう。

adafruitのデモプログラムに手を入れて、2つのディスプレイに異なるグラフィックス表示をさせるのは面倒だったので、とりあえずこのプログラムを修正して、2つのディスプレイで、最後まで表示してみよう。

2つのOLEDを使うようにプログラムを変更した。
あまりにも自然な拡張なので、何の説明も不要だろう。

#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     4

Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
Serial.begin(115200);
display1.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display2.begin(SSD1306_SWITCHCAPVCC, 0x3D);

displayText(display1,"Arduino is an open-source hardware and software company,"
"project and user community that designs and manufactures "
"single-board microcontrollers and microcontroller kits " );
displayText(display2,"for building digital devices and interactive objects "
"that can sense and control both physically and digitally.");
}

void loop() {

}

void displayText(Adafruit_SSD1306 disp, char* text) {
disp.setTextColor(WHITE);
disp.clearDisplay();
disp.setTextSize(1);
disp.setCursor(0,0);
disp.print(text);
disp.display();
}

これで実行したら、表示がこうなってしまった。

DSCN4791-400.JPG

OLEDの画面は、どちらも真っ暗のまま。どうなったのだろう。

期待の画面は、次のようなものなのだが、何がいけなかったかな。

DSCN4799-400.JPG