ディスプレイを使うと見た目のレベルがグンと上がります。
Arduinoで簡単に使えるカラーディスプレイを試してみましょう。
使用したもの
0.95インチカラーディスプレイ
Amazonで購入できます。とても小さいのでデータ表示やスマートウォッチなどに利用できそうです。
https://www.amazon.co.jp/dp/B0711RKXB5
Arduino Nano(互換機)
こちらもAmazonで購入しました。純正品ではなく互換機ですが、性能は全く同じで、純正品とほぼ同じように使えます。
ピンは付属してきます。自分ではんだ付けを行う必要があります。
https://www.amazon.co.jp/dp/B01CZQANN0/
接続
Arduino Nano側 | ディスプレイ側 |
GND | GND |
5V | Vcc |
D13 | SCL |
D11 | SDA |
D9 | RES |
D8 | DC |
D10 | CS |

Arduinoからの給電でも問題なく動きます。
少し通信が遅くなっても良いのなら、電源ピン以外のArduino側のピンをプログラムで変えることが出来ます。
ライブラリ
Adafruit-SSD1331-OLED-Driver-Library-for-ArduinoとAdafruit-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);
}
}
コメントを残す