傀儡師の館.Python
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
1月
2月
3月
4月
5月
6月
7月
8月
9月
10月
11月
12月
全1件 (1件中 1-1件目)
1
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 0x3evoid 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ライブラリ – ST7032ESP-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 が出なくなる。
2016.11.16
コメント(0)