Raspberry Pi PicoによるOLED(SSD1306)表示をU8g2ライブラリでテストしました。
結線
OLED Pico
SDA - GP16
SCL - GP17
VCC - 3V3
GND - GND
参考サイト
●OLEDディスプレイ
●ArduinoでOLEDを動かす(u8g2libライブラリを使用)
●図形の表示
●機能拡張ボードをArduinoIDEで開発(OLED編)
●u8g2 のフォントの使い方を理解する
U8g2関数
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0)
U8G2_R0:回転なし
U8G2_R1:90度回転
U8G2_R2:180度回転
U8G2_R3:270度回転
U8G2_MIRROR:ミラー表示
u8g2.setFlipMode(0) 画面表示(通常)
u8g2.setFlipMode(1) 画面表示(上下反転)
u8g2.setCursor(X座標 ,Y座標 )
u8g2.print( ) → ("文字列”) ,(変数)
u8g2.drawPixel(X座標, Y座標)
u8g2.setFont(フォント名)
u8g2.drawStr(X座標, Y座標, 文字列)
u8g2.drawLine(始点のX座標, 始点のY座標, 終点のX座標, 終点のY座標)
u8g2.drawFrame(座標X,座標Y,幅,高さ) □
u8g2.drawBox(始点のX座標, 始点のY座標, 幅, 高さ) ■
u8g2.drawCircle(中心座標X,中心座標Y,半径,描画方法)〇
u8g2.drawTriangle(座標X1,座標Y1座標X1,座標Y1,座標X2,座標Y2,座標X3,座標Y3)三角
u8g2.drawRFrame(座標X,座標Y,幅,高さ,角半径) 角丸
u8g2.drawEllipse(中心座標X,中心座標Y,横半径,縦半径,描画方法) 楕円
U8G2_DRAW_ALL - 円全体を描画します
U8G2_DRAW_UPPER_RIGHT - 円の上右側1/4のみ描画
U8G2_DRAW_UPPER_LEFT - 円の上左側1/4のみ描画
U8G2_DRAW_LOWER_LEFT - 円の下左側1/4のみ描画
U8G2_DRAW_LOWER_RIGHT - 円の下右側1/4のみ描画
u8g2.drawXBM(座標X,座標Y,幅,高さ,bitmap)
u8g2.drawUTF8(座標X,座標Y,const char *s)
u8g2.drawGlyph(座標X,座標Y,uint16_t encoding)
u8g2フォント
All U8g2 Fonts【https://github.com/olikraus/u8g2/wiki/fntlistall】
OLEDテスト表示
プログラム Arduino IDE【ボード:Raspberry Pi Pico】
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
void setup(void) {
Wire.setSDA(16); //SDA
Wire.setSCL(17); //SCL
Wire.begin();
u8g2.begin (); // OLEDの初期化
u8g2.setFlipMode(0); // 画面の向きを設定、数字を変えると向きが変わる
}
void loop(void) {
u8g2.clearBuffer(); // バッファのクリア
u8g2.setFont(u8g2_font_7x14_tr); // フォント設定
//文字列表示
u8g2.setCursor(0,10); //(X座標 ,Y座標 )
u8g2.print("Ab "); //"文字列”
//文字列変数
String st = "Cd"; // 文字列変数
u8g2.print(st);
//小数点を含む数値を文字列に変換
double a = 123.456; //数値
char str[50]; //文字列
dtostrf(a, 6, 1, str); //dtostrf(数値,空白+数値の長さ,小数点以下の表示,文字列)
u8g2.print(str);
u8g2.setFont(u8g2_font_mozart_nbp_tr);
u8g2.drawStr(0, 20, "mozart_nbp_tr");
u8g2.setFont(u8g2_font_5x7_tr);
u8g2.drawStr(0, 30, "5x7_tr");
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(0, 40, "6x10_tr");
u8g2.drawLine(0, 45, 128, 40); // 線
u8g2.drawFrame(0, 50 , 10 , 10); // □
u8g2.drawBox(12, 50, 10, 10); // ■
u8g2.drawCircle(32, 55, 5, U8G2_DRAW_ALL); //〇
u8g2.drawTriangle(42, 60, 52, 50, 62, 60); //▲
u8g2.sendBuffer(); // バッファを転送して表示
for (;;) {}
}
0 件のコメント:
コメントを投稿