電源電圧: ±5V
出力波形: White Noise / 疑似 Pink Noise (-6dB/oct) / 疑似 Blue Noise (-6dB/oct)
出力振幅: 1Vp-p程度(Pink Noise) ~ 7Vp-p程度(Blue Noise)
出力インピーダンス: 1kΩ~1.5kΩ程度
回路図
ブレッドボードテスト用配線図
#define RULER_STR "ABCDEFGHI012345678901234567890"としていて、
u8g2.drawStr(0,10,RULER_STR); // write something to the internal memoryと、「#define」した文字列を3回も定義していることになるので、これが原因かも?と思って「#define」のところを「const char*」に変更してみた。
u8g2.drawStr(0,21,RULER_STR); // write something to the internal memory
u8g2.drawStr(0,32,RULER_STR); // write something to the internal memory
#include <Arduino.h> #include <U8g2lib.h> #include <Wire.h> U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED void setup(void) { u8g2.begin(); } const char* RULER_STR = "ABCDEFGHI012345678901234567890"; void loop(void) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_8x13_tf); // choose a suitable font u8g2.drawStr(0,10,RULER_STR); // write something to the internal memory u8g2.drawStr(0,21,RULER_STR); // write something to the internal memory u8g2.drawStr(0,32,RULER_STR); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display delay(1000); u8g2.setDrawColor(1); u8g2.drawBox(0, 0, 128, 32); u8g2.sendBuffer(); delay(1000); }
最大30720バイトのフラッシュメモリのうち、スケッチが9650バイト(31%)を使っています。となって、SRAMの消費量は「#define」の時と同じ1512バイト。この程度は最適化されるようだ。
最大2048バイトのRAMのうち、グローバル変数が1512バイト(73%)を使っていて、ローカル変数で536バイト使うことができます。
#include <Arduino.h> #include <U8g2lib.h> #include <Wire.h> U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED void setup(void) { u8g2.begin(); } const char* RULER_STR = "ABCDEFGHI012345678901234567890"; void loop(void) { u8g2.firstPage(); do { // u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_8x13_tf); // choose a suitable font u8g2.drawStr(0,10,RULER_STR); // write something to the internal memory u8g2.drawStr(0,21,RULER_STR); // write something to the internal memory u8g2.drawStr(0,32,RULER_STR); // write something to the internal memory // u8g2.sendBuffer(); // transfer internal memory to the display } while (u8g2.nextPage()); delay(1000); u8g2.firstPage(); do { // u8g2.clearBuffer(); // clear the internal memory u8g2.setDrawColor(1); u8g2.drawBox(0, 0, 128, 32); // u8g2.sendBuffer(); } while (u8g2.nextPage()); delay(1000); }
U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLEDに変更した(クラス名の途中のFを1にする)。描画の仕方もPage単位で「do while()」で回すように変更。
最大30720バイトのフラッシュメモリのうち、スケッチが9730バイト(31%)を使っています。Full Bufferが1512Bなのに対して、Page Bufferだと616Bで済んでいる。
最大2048バイトのRAMのうち、グローバル変数が616バイト(30%)を使っていて、ローカル変数で1432バイト使うことができます。