11/1(日) ウニクリッカー販売➝うみたかマルシェ@品川 11/3(火祝) 魔改造プラレール展示➝超エレキ万博@秋葉原
Raspberry Pi / Arduino

OLEDディスプレイ「SSD1306」をArduinoで動かす

AI要約

128×64、白色表示のOLED「SSD1306」をArduinoに接続し、Adafruit SSD1306で制御しました。テキストと波形グラフを描画し、左上を原点とする画面座標系を確認しました。

やること

有機LED(OLED)を用いたI2C制御のディスプレイモジュール「SSD1306」を買いました。解像度は128×64で、描画色は「白のみ」です。

0.96インチ 128×64ドット有機ELディスプレイ(OLED) 白色: オプトエレクトロニクス 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作0.96インチ 128×64ドット有機ELディスプレイ(OLED) 白色秋月電子通商 電子部品通信販売

試しに動かしてみましょう。

コード

Arduino IDEで「Adafruit SSD1306」をインストール。

次のように配線。

Arduino UnoSSD1306
GNDGND
5VVCC(※3.3~5V対応)
A5 (=SCL)SCL
A4(=SDA)SDA

テキストとグラフ描画のために以下のコードにしました。配列の先頭から新しい値を入れて、既存の値は後ろにずらしています。

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

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

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

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

int a = 0;
int wave[SCREEN_WIDTH];

void loop() {

  // 波形を1個ずつずらす
  for (int i = SCREEN_WIDTH - 1; i > 0; i--) {
    wave[i] = wave[i - 1];
  }

  // aを1増やす
  a++;

  // 32で0に戻す
  if (a >= 32) {
    a = 0;
  }
  
  // 最新のaを0番目に入れる
  wave[0] = a;

  // Arduinoバッファクリア
  display.clearDisplay();
  
  // テキスト描画
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(10, 10);
  display.println(a);

  //グラフ描画
  for (int x = 0; x < SCREEN_WIDTH; x++) {
    //y軸を反転する
    int y = (SCREEN_HEIGHT - 1) - wave[x];
    display.drawPixel(x, y, SSD1306_WHITE);
  }
  
  // SSD1306へ転送
  display.display();
}

座標系は画像処理のセオリー通り左上が原点、右にx、下にyですね。ディスプレイの一番左が現在の値です。

おわりに

実はこれで自作キーボード関連のツールを作りたいんですよね~

次回をお楽しみに ( ˘ω˘ ) ネテマテ

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました