傀儡師の館.Python

2016/11/17(木)02:52

I2C 接続の LCD を ESP-WROOM-02 につないでみる (3)

電子工作(18)

I2C 接続の LCD を ESP-WROOM-02 につないでみる (2)のあと、Arch Linux がアップデート中にフリーズしまって復旧するのに手間取っていた。boot 領域が壊れてしまったので、復旧するついでに、MBR から GPT に変換して、BIOS モードでの起動から UEFI モードでの起動に代えた。色々おかしな状態になってしまったのを調整して、順調に戻ったので、電子工作を再開する。ちなみに、Arch Linux は、それなりに馴染んできて、いい感じで使えている。 LCD は AQM0802A をとりあえず使っているが、ON/OFF したいとかあるので、ちゃんとした使い方を調べているうちに、Arduino IDE の [Sketch] - [Include Library] - [Manage Libraries] で出てくる [Library Manager] で AQM0802A を検索して、Hideki Yamauchi さんの "FaBoLCDmini_AQM0802A" をインストール ボタンを押してインストールしてしまうのが一番楽な使い方かもしれないと思った。 I2C で接続しているのでプリミティブに、AQM0802A スペックシート の "DISPLAY INSTRUCTION TABLE" とかを見ながらコードを書いていけば、ライブラリがなくても制御できるようになったが、スペックシートを確認しながらコードを書くのも面倒なので、ライブラリ化されたものを使うことにした。ライブラリを使わずに書こうとすると、 #include <Wire.h> #define LCD_ADDR 0x3e void setup(){ Wire.begin(4, 5); delay(40); // 初期化: ■初期設定例■ uint8_t cmd_init[] = {0x38, 0x39, 0x14, 0x70, 0x56, 0x6c, 0x38, 0x0d, 0x01}; size_t i; i = sizeof(cmd_init); for (i=0; i<len; i++) { Wire.beginTransmission(LCD_ADDR); Wire.write(0x00); Wire.write(cmd[i]); Wire.endTransmission(); delayMicroseconds(27); // 26.3us } 以下、省略 } ディスプレイを OFF にするには、Display ON/OFF のところを見て、 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B で、D: Display ON/OFF controlbit を 0、 C: Cursor ON/OFF control bit を 0、B: Cursor Blink ON/OFF control bit を 0 としたいので、000001000 で、16進数に直して、0x08 を Wire.write してやれば、ディスプレイをオフにできるのも確認できた。参考になるページは、ESP-WROOM-02 AQM0802A とかキーワードにして検索すればたくさん見つかる。 ESP-WROOM-02 の Arduino 環境で I2C 制御 ESP8266 (ESP-WROOM-02) で I2C LCD 8桁2行 を制御する I2C液晶のArduinoライブラリ – ST7032 ESP-WROOM-02でLCD表示 ライブラリを使えば、Example を参考にして、 #include <Wire.h> #include <FaBoLCDmini_AQM0802A.h> // ライブラリの初期化 FaBoLCDmini_AQM0802A lcd; void setup() { // LCD の初期化 lcd.begin(); } void loop() { lcd.home(); // 0, 0 にカーソルを移動 // 0 から 9 を表示 for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // ディスプレイをOFF lcd.noDisplay(); delay(500); // ディスプレイを ON lcd.display(); delay(500); } 色々、公開されているライブラリもあるのだが、Arduino IDE から、簡単にインストールできてすぐ使えるので、これが一番楽かもしれない。スマホからの ON/OFF を考えていたが、電池の消耗を抑えるために、やっぱり、物理的にスイッチを追加して、ON/OFF するようにしようかな。とりあえず太陽電池付きのバッテリーを買ったので、どの程度、連続動作できるかも試してみようかと思っているところ。 ちなみに、FaBoLCDmini_AQM0802A を使うと、"WARNING: library FaBo_213_LCD_mini_AQM0802A claims to run on [avr] architecture(s) and may be incompatible with your current board which runs on [esp8266] architecture(s)." のようなエラーが出るが、ESP-WROOM-02 を使っているときは、Arduino/libraries/FaBo_213_LCD_mini_AQM0802A/library.properties を編集して、architectures=avr を architectures=esp8266 に書き換えてしまえば、WARNING が出なくなる。

続きを読む

このブログでよく読まれている記事

もっと見る

総合記事ランキング

もっと見る