u8gとu8g2の違いはhttps://github.com/olikraus/u8g2/wiki/u8gvsu8g2に
Improvements
- Full "RAM" memory buffer without picture loop
- Arduino SPI and TWI Libraries instead of custom code
- Support for Unicode and UTF-8
- Faster compilation
- High speed text only API (U8x8)
- Hardware 180 degree rotation for some displays available
- Tested with AVR, SAM and ESP8266 boards
ライブラリのArduinoへのインストールはhttps://github.com/olikraus/u8g2/wiki/u8g2installにキャプチャ画像入で紹介されているのでその通りにすればインストールできた。
exampleは
- full_buffer フルバッファで1回で書込み。
- games おまけ
- page_buffer ページ単位で書き込み。
- u8x8 8x8ドットの文字にのみ対応した軽量版
見やすいフォントをさがしてみる。
Arduinoのスケッチ
<HiLetgo_IIC_OLED_SSD1306_128x32_u8g2_F_FontTest.ino>
#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(); } #define 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); }
u8g2のFull Pageバージョンを使ってみた。
クラスは
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED
を指定すれば動作した。「UNIVISON」という名前が何を意味するのかよくわからないですが(^q^;
スケッチはカットアンドトライで見やすいフォントを探したもの。loop()内のdrawBox()は画面のフルサイズで四角を書いて表示領域を確認した。このOLEDの表示域は少し上に偏っているようだ。
「u8g2_font_8x13_tf」を指定すると昔のパソコンっぽい感じのフォントで、16桁3行表示できる。
I2Cの通信状態
ch1:SDA ch2:SCL
デフォルトでFast Mode(400kHz)で動作している。
波形がかなりなまっているので、モジュール上でプルアップされている(おそらく)4.7kΩと並列になるようにブレッドボード上でも4.7kΩのRでプルアップした。
4.7kΩ//4.7kΩ = 2.35kΩ相当のプルアップになる。
ch1:SDA ch2:SCL
波形はきれいになる(←ノイズ等に強くなり誤動作が減る)が、電流が多く流れるのでトレードオフです。
メモ:
exampleのu8g2/page_buffer/Japaneseは、Arduino Uno R3だとメモリが足りなくてコンパイルできなかった。
Arduino:1.8.1 (Windows 10), ボード:"Arduino/Genuino Uno"
最大32256バイトのフラッシュメモリのうち、スケッチが32634バイト(101%)を使っています。
最大2048バイトのRAMのうち、グローバル変数が614バイト(29%)を使っていて、ローカル変数で1434バイト使うことができます。
スケッチが大きすぎます。http://www.arduino.cc/en/Guide/Troubleshooting#size には、小さくするコツが書いてあります。
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
フォントデータがでかいのかな?
上記スケッチでも
最大32256バイトのフラッシュメモリのうち、スケッチが9644バイト(29%)を使っています。
最大2048バイトのRAMのうち、グローバル変数が1512バイト(73%)を使っていて、ローカル変数で536バイト使うことができます。
メモリ食いますね(@@;
0 件のコメント:
コメントを投稿