JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

Arduino UNO R4 (WiFi) OLEDテスト その2

2024-05-29 17:38:43 | Arduino
 前の記事に続き、Arduino UNO R4 WiFi でOLEDに文字を表示するテストをします。

 Zennというサイトにあるデモプログラムにのスケッチの文字表示の部分だけを取り出しました。
--------------------------------------------------------------------
#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

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  Serial.begin(115200);

// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

  // Show initial display buffer contents on the screen --
  // the library initializes this with an Adafruit splash screen.
  //display.display();
  //delay(2000); // Pause for 2 seconds

  // Clear the buffer
  display.clearDisplay();

  display.setTextSize(1);      // Normal 1:1 pixel scale
  display.setTextColor(WHITE); // Draw white text
  display.setCursor(0, 0);     // Start at top-left corner
  display.cp437(true);         // Use full 256 char 'Code Page 437' font

  // Not all the characters will fit on the display. This is normal.
  // Library will draw what it can and the rest will be clipped.
for(int16_t i=0; i<256; i++) {
    if(i == '\n') display.write(' ');
    else          display.write(i);
  }
  display.display();
delay(2000);
  display.clearDisplay();

  display.setTextSize(1);             // Normal 1:1 pixel scale
  display.setTextColor(WHITE);        // Draw white text
  display.setCursor(0,0);             // Start at top-left corner
  display.println(F("Hello, world!"));

  display.setCursor(0,20);
  display.setTextColor(BLACK, WHITE); // Draw 'inverse' text
  display.println(3.141592);

  display.setCursor(0,40);
  display.setTextSize(2);             // Draw 2X-scale text
  display.setTextColor(WHITE);
  display.print(F("0x")); display.println(0xDEADBEEF, HEX);

  display.display();

}

void loop() {

}
--------------------------------------------------------------------
 最初にこのように文字が表示されます。


display.write(i);によってasciiコードの対応する文字を表示することができます。

 2秒後に次のような画面になります。


 文字サイズ1で「Hello, World!」が表示されます。

 次に反転文字で数字3.141592を表示するわけですが、3.14までしか表示されません。

 最後に、文字サイズ2で、HEX表示をしています。

 display.print()またはdisplay.println()で、書式を指定して文字を表示するようです。

最新の画像もっと見る

コメントを投稿