LCDモジュールをI2C通信で接続する場合の覚書(ESP8266)

LCDモジュールをI2C通信で接続する場合の覚書

I2C通信用のポート(ライブラリーで固定化されている)
Arduino   では、SDA(データ線)はアナログの4番ピンに,SCL(クロック線)はアナログの5番ピン
Arduino Megaでは,SDAがデジタルの20番ピン,SCLがデジタルの21番ピン
ESP8266  では、SDA(データ線)はGPIO04,SCL(クロック線)はGPIO05

購入した、IICシリアル16×2 LCDモジュール
- I2Cアドレス:0x27 

1602 LCD ブラック IIC/I2C/TWI/SPI シリアル インタフェース ボード モジュール
I2Cアドレス:0x20〜0x27 (ボード上のA0,A1,A2を短絡する事でアドレスを変更)
        0x27 , 0x3F (チップによって開始アドレスが異なる)

ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール

I2Cアドレス:0x48, 0x49, 0x4A, 0x4B

LiquidCrystal_I2Cライブラリーをインストール


#include "Wire.h" // SDA:GPIO04 SCL:GPIO05
#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(0x27, 20, 4); // 0x20 , 0x27 , 0x3F

void setup()
{
lcd.begin();
lcd.setCursor(0,0);
lcd.print("amazon");
lcd.setCursor(0,1);
lcd.print("abcdefgh123456");
}
void loop()
{
}


3688.jpg

ちゃんと表示しました。

アマゾンで買った 20x4 Character LCD について

アマゾンで買った 
SODIAL(R)2004 20x4文字のLCDディスプレイモジュールブルーブラックライト
 (プリント板の裏の2004A が型式かな)

「標準関数で動作しました。」とコメントが記載されているのだけど・・・

何故か表示しない????

結線は合っているし・・・変だな~・・・

検索しました。

写真から推測するとこれポイのだけど

2004 20x4 Character LCD Display Module Blue Color HD44780



ふと回路図を見て!

一般的な 16x2 LCD の回路図では可変抵抗が5vに結線されているが

回路図4

このモジュールの回路図は5vには接続されていない
回路図2

という事で結線を下図に変更したら表示しました。

ちなみに可変抵抗は4kΩ近辺の表示が良い感じです。

LCDの標準関数で桁指定・行指定はできました。

バックライトは180Ωとか330Ωとかを経由して5Vに結線してます(A端子)

しかしながら簡単な回路だから最初からプリント板へ半田付けしたのは失敗!

2個購入していたからブレッドボードで組み立てて動作確認する事になりました。

やっぱ最初から半田付けは不味いですね

追加(10/7)
単体では表示など問題は無いのだが
電力量計と組合わせた場合、正しくSDカードの書きこみが出来ない
原因はSDライブラリーが使用しているデジタルピンと競合した事と考えられる
SDライブラリー
Initializes the SD library and card. This begins use of the SPI bus (digital pins 11, 12, and 13 on most Arduino boards; 50, 51, and 52 on the Mega) and the chip select pin, which defaults to the hardware SS pin (pin 10 on most Arduino boards, 53 on the Mega). Note that even if you use a different chip select pin, the hardware SS pin must be kept as an output or the SD library functions will not work.

Arduino SPI bus 11,12,13 SS 10
Mega   SPI bus 50,51,52 SS 53
だと考えたのだが・・・
Mega でも 11,10 を使用すると書込みが正しく動作しない

4 も使用できない(SD CARD SS)

動作確認済み
LiquidCrystal lcd(12,13,7,6,9,8); // rs, enable, d4, d5, d6, d7

追加(10/9)
接続のピン数が多いとESP8266だと一杯一杯になる為、例えば温度センサーを付けようとすると無理が有る
その為にI2C(SPI)インタフェースで接続できると結線も楽だ
EasyWordMall 1602 LCD ブラック IIC/I2C/TWI/SPI シリアル インタフェース ボード モジュール


I2Cアドレス:0X20〜0X27

Dovewill Arduino対応 IIC I2Cシリアル・1602 16x2 キャラクタ LCDモジュール 液晶ディスプレイ  2個入り


単に刺すだけで使える便利さ(デバッグに最適)
キーパッド シールド ボード ブルー バックライト Arduinoロボット LCD 1602 1280 2560 UNO US用品


arduino をソフトで reset する方法

arduinoで電力モニターを作成しているのだけど
メッセージ送信が多かった時に多発するのだが・・・・
通信機能や計測のハングアップをする時がある
原因は???メモリーの可能性が高いのだが
この場合ハードリセットするしかない
せめて遠隔指示でリセットできないものか!?
検索してヒットする事も少ないのでメモを残す

two ways to reset arduino in software

In this example, you do not need any extra wiring. We initialize the reset function, then call reset.

void(* resetFunc) (void) = 0;//declare reset function at address 0
...
resetFunc(); //call reset


他のサイトで紹介されていた方法

software_Reset() ;

void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile (" jmp 0");
}


基本0番地を実行という事でしょうか

前回調べた時はもっと複雑だったのだが・・・・えらい簡単、試してみます

追記(7/8)
arduino電力モニターに組込み遠隔指示でリセット動作を確認。やったね素晴らしい!

プロフィール

お気楽どん

Author:お気楽どん

最新記事
最新コメント
ありがとう
気が向いたら
にほんブログ村 ライフスタイルブログへにほんブログ村 その他趣味ブログ 電子工作へ にほんブログ村 環境ブログ 風力発電・太陽光発電へ
天気予報
カテゴリ
検索BOX・タグ一覧
リンク