📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
文字列「presire220a-22」を「presire2-22」に置換
 
(同じ利用者による、間の14版が非表示)
1行目: 1行目:
== 概要 ==
ArduinoにLCD(SC1602)を接続して、文字を表示する。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|-
! colspan="3"; style="background-color:#44CC99;" | 参考書
|- style="text-align: center;"
| style="width: 33%"| <center><html><a href="https://www.amazon.co.jp/dp/B083DT6181?th=1&psc=1&linkCode=ll1&tag=presire2-22&linkId=4c7c111599ad42a41a8b978a99f0663f&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/61P+FnH6pQL._AC_SL1000_.jpg" ></a></html><br>[https://www.amazon.co.jp/dp/B083DT6181?th=1&psc=1&linkCode=ll1&tag=presire2-22&linkId=4c7c111599ad42a41a8b978a99f0663f&language=ja_JP&ref_=as_li_ss_tl KKHMF 1602 LCDモジュール バックライト付き 2個]</center>
| style="width: 33%"| <center><html><a href="https://www.amazon.co.jp/EasyWordMall-1602-%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/dp/B010Q000V2?dib=eyJ2IjoiMSJ9.G0BbjTkXGSM4_aX7BFMMQ90LA6JK7_T1Ece8nH7pkaHrSDkR8e65sq0pzi9kcHuf2jq0UErLiS1nudS75mzyhAAEjPTPwLJoLt31eJxTrJCd6VT99t9Xp866zltM2DkhQ82zAgXbRqGTz171liS7JpJJvLI_uoyY4Z4qQ-FJ6RiEmHsCvFJT0ItQxTMm7-OFc8aDkQ_gWBCAr98t2ZG427YCmEc8X_3FWNE367rFnfGfjMEMT2aj3PShNU9t6wMQG_wEmolaVvxPYqsoRWv3swExiL97TF7LroobmUnH19I.7Jkjvcv0KulPiV5iFANIuQq9Ry6T37lWIBNSopYUEWk&dib_tag=se&keywords=1602%2BLCD%2BI2C&qid=1715695704&sr=8-4&th=1&linkCode=ll1&tag=presire2-22&linkId=5b78bcb84de022d27f95c4aa8526aacd&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/41wdzc119eL._AC_.jpg" /></a></html><br>[https://www.amazon.co.jp/EasyWordMall-1602-%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/dp/B010Q000V2?dib=eyJ2IjoiMSJ9.G0BbjTkXGSM4_aX7BFMMQ90LA6JK7_T1Ece8nH7pkaHrSDkR8e65sq0pzi9kcHuf2jq0UErLiS1nudS75mzyhAAEjPTPwLJoLt31eJxTrJCd6VT99t9Xp866zltM2DkhQ82zAgXbRqGTz171liS7JpJJvLI_uoyY4Z4qQ-FJ6RiEmHsCvFJT0ItQxTMm7-OFc8aDkQ_gWBCAr98t2ZG427YCmEc8X_3FWNE367rFnfGfjMEMT2aj3PShNU9t6wMQG_wEmolaVvxPYqsoRWv3swExiL97TF7LroobmUnH19I.7Jkjvcv0KulPiV5iFANIuQq9Ry6T37lWIBNSopYUEWk&dib_tag=se&keywords=1602%2BLCD%2BI2C&qid=1715695704&sr=8-4&th=1&linkCode=ll1&tag=presire2-22&linkId=5b78bcb84de022d27f95c4aa8526aacd&language=ja_JP&ref_=as_li_ss_tl KKHMF 1602 LCD ブラック IIC/I2Cモジュール]</center>
| style="width: 34%"| <center><html><a href="https://www.amazon.co.jp/WayinTop-%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-16%C3%972%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF-%E3%83%90%E3%83%83%E3%82%AF%E3%83%A9%E3%82%A4%E3%83%88%E4%BB%98%E3%81%8D-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9/dp/B07WTMXRTQ?dib=eyJ2IjoiMSJ9.G0BbjTkXGSM4_aX7BFMMQ90LA6JK7_T1Ece8nH7pkaHrSDkR8e65sq0pzi9kcHuf2jq0UErLiS1nudS75mzyhAAEjPTPwLJoLt31eJxTrJCd6VT99t9Xp866zltM2DkhQ82zAgXbRqGTz171liS7JpJJvLI_uoyY4Z4qQ-FJ6RiEmHsCvFJT0ItQxTMm7-OFc8aDkQ_gWBCAr98t2ZG427YCmEc8X_3FWNE367rFnfGfjMEMT2aj3PShNU9t6wMQG_wEmolaVvxPYqsoRWv3swExiL97TF7LroobmUnH19I.7Jkjvcv0KulPiV5iFANIuQq9Ry6T37lWIBNSopYUEWk&dib_tag=se&keywords=1602+LCD+I2C&qid=1715695704&sr=8-7&linkCode=ll1&tag=presire2-22&linkId=eddf740dad0d30ae93bdba12d550ad59&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/61KVH3HkqQL._AC_SL1001_.jpg" /></a></html><br>[https://www.amazon.co.jp/WayinTop-%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-16%C3%972%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF-%E3%83%90%E3%83%83%E3%82%AF%E3%83%A9%E3%82%A4%E3%83%88%E4%BB%98%E3%81%8D-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9/dp/B07WTMXRTQ?dib=eyJ2IjoiMSJ9.G0BbjTkXGSM4_aX7BFMMQ90LA6JK7_T1Ece8nH7pkaHrSDkR8e65sq0pzi9kcHuf2jq0UErLiS1nudS75mzyhAAEjPTPwLJoLt31eJxTrJCd6VT99t9Xp866zltM2DkhQ82zAgXbRqGTz171liS7JpJJvLI_uoyY4Z4qQ-FJ6RiEmHsCvFJT0ItQxTMm7-OFc8aDkQ_gWBCAr98t2ZG427YCmEc8X_3FWNE367rFnfGfjMEMT2aj3PShNU9t6wMQG_wEmolaVvxPYqsoRWv3swExiL97TF7LroobmUnH19I.7Jkjvcv0KulPiV5iFANIuQq9Ry6T37lWIBNSopYUEWk&dib_tag=se&keywords=1602+LCD+I2C&qid=1715695704&sr=8-7&linkCode=ll1&tag=presire2-22&linkId=eddf740dad0d30ae93bdba12d550ad59&language=ja_JP&ref_=as_li_ss_tl WayinTop 1602 LCD バックライト付き + IIC/I2Cモジュール]</center>
|}
</center>
<br><br>
== LCDに文字を表示する ==
== LCDに文字を表示する ==
==== 概要 ====
==== SC1602とは ====
ここでは、ArduinoにLCD(SC1602)を接続して、文字を表示する方法を記載する。<br>
SC1602の定格とピン配置は下図の通りである。<br>
SC1602の定格とピン配置は下図の通りである。<br>
ピン番号が1から順番に、VSS, VDD, ...と表示している。<br>
ピン番号が1から順番に、VSS, VDD, ...と表示している。<br>
[[ファイル:Arduino SC1602 01.png|フレームなし|中央]]
[[ファイル:Arduino SC1602 01.png|フレームなし|中央]]
[[ファイル:Arduino SC1602 02.png|フレームなし|中央]]
[[ファイル:Arduino SC1602 02.png|フレームなし|中央]]
<br><br>
<br>
 
==== ArduinoとLCDを接続する ====
==== ArduinoとLCDを接続する ====
SC1602への接続方法を以下に記載する。<br>
SC1602への接続方法を以下に記載する。<br>
<br>
まず、電源は1番ピン~3番ピン、V<small>SS</small>とV<small>0</small>はGnd、V<small>DD</small>は+5.0[V]、バックライトの電源は15番ピン~16番ピン、<br>
まず、電源は1番ピン~3番ピン、V<small>SS</small>とV<small>0</small>はGnd、V<small>DD</small>は+5.0[V]、バックライトの電源は15番ピン~16番ピン、<br>
LED+(A)は+5.0[V]、 LED-(K)はGndにそれぞれ接続する。<br>
LED+(A)は+5.0[V]、 LED-(K)はGndにそれぞれ接続する。<br>
41行目: 55行目:
==== LCDに文字を出力する ====
==== LCDに文字を出力する ====
ArduinoからLCDを利用するために、LiquidCrystalライブラリを使用する。<br>
ArduinoからLCDを利用するために、LiquidCrystalライブラリを使用する。<br>
なお、LiquidCrystalライブラリは標準でインストールされている。<br>
<br>
リファレンスを参照すると、LiquidCrystalのコンストラクタで次のようにピン番号を指定すればよい。<br>
リファレンスを参照すると、LiquidCrystalのコンストラクタで次のようにピン番号を指定すればよい。<br>
  '''LiquidCrystal(rs, enable, d4, d5, d6, d7)'''
  '''LiquidCrystal(rs, enable, d4, d5, d6, d7)'''
<br>
<br>
以下に、LiquidCrystalライブラリを使用して、ArduinoからLCDに文字を出力するサンプルコードを記述する。<br>
以下に、LiquidCrystalライブラリを使用して、ArduinoからLCDに文字を出力するサンプルコードを記述する。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  #include <LiquidCrystal.h>
  #include <LiquidCrystal.h>
   
   
62行目: 78行目:
   
   
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
また、ArduinoとLCDを接続して、スケッチをダウンロードすると次のようになる。<br>
また、ArduinoとLCDを接続して、スケッチをダウンロードすると次のようになる。<br>
107行目: 123行目:
<br><br>
<br><br>


==== LiquidCrystal_I2C ライブラリ ====
==== LiquidCrystal_I2Cライブラリ ====
I2Cアダプタを使用するサンプルコードでは、LiquidCrystal_I2Cライブラリを使用する。<br>
I2Cアダプタを使用するサンプルコードでは、LiquidCrystal_I2Cライブラリを使用する。<br>
LiquidCrystal_I2Cライブラリは[https://github.com/marcoschwartz/LiquidCrystal_I2C ここ]からダウンロードできる。<br>
Arduiono IDEの[スケッチ] -[ライブラリをインクルード] - [.zip形式のライブラリをインスト-ル]にてLiquidCrystal_I2Cライブラリを取り込む。<br>
<br>
<br>
取り込んだライブラリは、C:\Users\[ユーザ名]\Documents\Arduino\librariesに保存される。<br>
LiquidCrystal_I2Cライブラリのインストール手順を以下に示す。<br>
もし、同一の名前のライブラリが同じシステム内に存在してコンパイルが失敗する場合は、不要なライブラリを削除する。<br>
# まず、Arduino IDEから[ツール]メニューバー - [ライブラリを管理...]を選択してライブラリマネージャを起動する。
# 次に、検索欄に"LiquidCrystal I2C"と入力して、"LiquidCrystal I2C by Frank de Brabander"をインストールする。<br>また、以下に示すWebサイトからダウンロードすることもできる。
#: https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/
#: https://github.com/marcoschwartz/LiquidCrystal_I2C
# zipファイルをダウンロードした場合、Arduiono IDEから、[スケッチ]メニューバー - [ライブラリをインクルード] - [.zip形式のライブラリをインストール]を選択して、<br>LiquidCrystal_I2Cライブラリを取り込む。<br><br>取り込んだライブラリは、以下のディレクトリに保存される。
#* Linux
#*: ~/Arduino/libraries
#* Windows
#*: C:\Users\ユーザ名\Documents\Arduino\libraries
# もし、同一の名前のライブラリが同じディレクトリに存在しており、コンパイルが失敗する場合は、不要なライブラリを削除する。
<br>
<br>
以下にサンプルコードを記述する。<br>
以下にサンプルコードを記述する。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
#include <Wire.h>  // I2Cライブラリ
  #include <LiquidCrystal_I2C.h>
  #include <LiquidCrystal_I2C.h>
   
   
  LiquidCrystal_I2C lcd(0x27,16,2);
// LCD : 16x2, IC : PCF8574T
  LiquidCrystal_I2C lcd(0x27, 16, 2);
// LCD : 16x2, IC : PCF8574AT
// LiquidCrystal_I2C lcd(0x3F, 16, 2);
// LCD : 20x4, IC : PCF8574T
// LiquidCrystal_I2C lcd(0x27, 20, 4);
// LCD : 20x4, IC : PCF8574AT
// LiquidCrystal_I2C lcd(0x3F, 20, 4);
   
   
  void setup()
  void setup()
  {
  {
     lcd.init();  
     lcd.init();       // LCDの初期化
     lcd.backlight();
     lcd.backlight(); // LCDバックライトの点灯
     lcd.setCursor(0, 0);
}
     lcd.print("Hello, world!");
void loop()
{
     lcd.setCursor(0, 0); // 1行目の先頭にカーソルを移動
     lcd.print("Hello,");
    lcd.setCursor(0, 1);  // 2行目の先頭にカーソルを移動
    lcd.print("world!");
   
    delay(1000);
   
    lcd.clear();  // 表示をクリア
   
    delay(1000);
}
</syntaxhighlight>
<br>
[[ファイル:Arduino SC1602 08.jpg|フレームなし|中央]]
<br><br>
 
== I2CScanner ==
I2CScannerというプログラムを使用することにより、LCDのI2Cアドレスを確認することができる。<br>
これは、ArduinoにI2C対応機器を接続して、シリアルモニタからI2Cアドレスを確認するものである。<br>
<br>
* I2CScannerのGithub
*: https://github.com/asukiaaa/I2CScanner
<br>
<syntaxhighlight lang="c++">
#include <Wire.h>
void setup()
{
#ifdef _ESP32_HAL_I2C_H_
    Wire.begin(26, 25);
#else
    Wire.begin();
#endif
    Serial.begin(115200);
    while (!Serial); // シリアルモニタが起動するまで待機
    Serial.println("\nI2C Scanner");
  }
  }
   
   
  void loop()
  void loop()
  {
  {
    byte error    = 0x00,
        address  = 0x00;
    int  nDevices = 0;
   
   
    Serial.println("Scanning...");
    for (address = 1; address < 127; address++) {
      // I2CScannerは、Write.endTransmisstionメソッドの戻り値を利用して、デバイスがそのアドレスに認識(確認応答)したかどうかを確認する
      Wire.beginTransmission(address);
      error = Wire.endTransmission();
      if (error == 0) {
          Serial.print("I2C device found at address 0x");
          if (address < 16) {
            Serial.print("0");
          }
          Serial.print(address, HEX);
          Serial.println("  !");
          nDevices++;
      }
      else if (error == 4) {
          Serial.print("Unknown error at address 0x");
          if (address < 16) {
            Serial.print("0");
          }
          Serial.println(address, HEX);
      }
    }
    if (nDevices == 0) {
      Serial.println("No I2C devices found\n");
    }
    else {
      Serial.println("done\n");
    }
    delay(5000);  // 次のスキャンまで5秒待機
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
[[ファイル:Arduino SC1602 08.jpg|フレームなし|中央]]
 
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Arduino]]
[[カテゴリ:Arduino]]