Arduinoでカラーディスプレイの制御

ディスプレイを使うと見た目のレベルがグンと上がります。

Arduinoで簡単に使えるカラーディスプレイを試してみましょう。

使用したもの

0.95インチカラーディスプレイ

Amazonで購入できます。とても小さいのでデータ表示やスマートウォッチなどに利用できそうです。

https://www.amazon.co.jp/dp/B0711RKXB5

Arduino Nano(互換機)

こちらもAmazonで購入しました。純正品ではなく互換機ですが、性能は全く同じで、純正品とほぼ同じように使えます。

ピンは付属してきます。自分ではんだ付けを行う必要があります。

https://www.amazon.co.jp/dp/B01CZQANN0/

接続

Arduino Nano側ディスプレイ側
GNDGND
5VVcc
D13SCL
D11SDA
D9RES
D8DC
D10 CS
ブレッドボードでの接続

Arduinoからの給電でも問題なく動きます。

少し通信が遅くなっても良いのなら、電源ピン以外のArduino側のピンをプログラムで変えることが出来ます。

ライブラリ

Adafruit-SSD1331-OLED-Driver-Library-for-ArduinoAdafruit-GFX-Libraryを使用します。

関数名から機能が容易に推定できる読みやすいライブラリです。

ライブラリマネージャーをクリック
このようなウィンドウが出てくるので
赤丸にライブラリー名を入れて検索。
青丸のInstallをクリックしてください。
スケッチサンプルはここにあります。関数もこれを参考にしました。

スケッチ

文字を表示する

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Color definitions
#define  BLACK           0x0000
#define  RED             0xF800

Adafruit_SSD1331 display = Adafruit_SSD1331(&SPI, cs, dc, rst);


void setup(void) {
  display.begin();

  display.fillScreen(BLACK);
  display.setCursor(0,0);
  display.print("HELLO");

  display.setTextSize(3);
  display.setTextColor(RED);
  display.setCursor(10,10);
  display.print("HELLO");
}

void loop() {
}
写真だとオレンジに見えますが実際には赤です。

線とドット

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Color definitions
#define  BLACK           0x0000
#define  RED             0xF800

Adafruit_SSD1331 display = Adafruit_SSD1331(&SPI, cs, dc, rst);


void setup(void) {
  display.begin();

  display.fillScreen(BLACK);
  display.setCursor(0,0);
  display.print("Line&Dot");

  //display.drawPixel(X座標, Y座標, 色);  
  display.drawPixel(display.width()/2, display.height()/2, RED);  


  //display.drawLine(始点のX座標, 始点のY座標, 終点のX座標, 終点のY座標, 色);           
  display.drawLine(0, display.height()/2 - 10, display.width(), display.height()/2 - 10, RED);  
  
}

void loop() {
}

ストップウォッチみたいなもの

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>
#include <stdio.h>

#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Color definitions
#define  BLACK           0x0000
#define  RED             0xF800

Adafruit_SSD1331 display = Adafruit_SSD1331(&SPI, cs, dc, rst);


void setup(void) {
  display.begin();

  display.fillScreen(BLACK);
  display.setCursor(5, display.height() / 2 - 10);
  display.setTextSize(3);
  display.print("00 00");
 
  display.fillCircle(display.width() / 2, display.height() / 2 + 7, 3, RED);
  display.fillCircle(display.width() / 2, display.height() / 2 - 7, 3, RED);
}

void loop() {
  unsigned char sec = 0, minute = 0;
  char hyouzi[4];

  for(;;){
    delay(1000);
    if(sec < 59){
      sec++;
    }else{
      sec = 0;
      minute++;
    }
    
    display.fillScreen(BLACK);
    display.fillCircle(display.width() / 2, display.height() / 2 + 7, 3, RED);
    display.fillCircle(display.width() / 2, display.height() / 2 - 7, 3, RED);
    display.setCursor(5, display.height() / 2 - 10);
    display.setTextSize(3);
    sprintf(hyouzi, "%02d %02d", minute, sec);
    display.print(hyouzi);
  }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)