MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Arduinoの基礎 - SC1602のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Arduinoの基礎 - SC1602
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == 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に文字を表示する == ==== SC1602とは ==== SC1602の定格とピン配置は下図の通りである。<br> ピン番号が1から順番に、VSS, VDD, ...と表示している。<br> [[ファイル:Arduino SC1602 01.png|フレームなし|中央]] [[ファイル:Arduino SC1602 02.png|フレームなし|中央]] <br> ==== ArduinoとLCDを接続する ==== SC1602への接続方法を以下に記載する。<br> <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> 5番ピンのR/Wは、LCDに表示(書き込み)を行うので、Gndに接続する。<br> 7番ピン~10番ピンのDB0 - DB3は、4ビットで操作する(DB5 - DB8だけで制御する)ので使用しない。<br> その他のピンは、Arduinoへ接続する。<br> [[ファイル:Arduino SC1602 03.png|フレームなし|中央]] <br> 次の表と図を参考に接続する。<br> <center> {| class="wikitable" |- ! LCDピン !! Arduinoピン !! 説明 |- | RS || 4 || Register Select Signal |- | E || 6 || Operation (データ R/W) Enable Signal |- | DB4 || 10 || Data Bus Line |- | DB5 || 11 || Data Bus Line |- | DB6 || 12 || Data Bus Line |- | DB7 || 13 || Data Bus Line |} </center> [[ファイル:Arduino SC1602 04.png|フレームなし|中央]] <br><br> ==== LCDに文字を出力する ==== ArduinoからLCDを利用するために、LiquidCrystalライブラリを使用する。<br> なお、LiquidCrystalライブラリは標準でインストールされている。<br> <br> リファレンスを参照すると、LiquidCrystalのコンストラクタで次のようにピン番号を指定すればよい。<br> '''LiquidCrystal(rs, enable, d4, d5, d6, d7)''' <br> 以下に、LiquidCrystalライブラリを使用して、ArduinoからLCDに文字を出力するサンプルコードを記述する。<br> <syntaxhighlight lang="c++"> #include <LiquidCrystal.h> LiquidCrystal lcd(4, 6, 10, 11, 12, 13); void setup() { lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Hello, world!"); } void loop() { } </syntaxhighlight> <br> また、ArduinoとLCDを接続して、スケッチをダウンロードすると次のようになる。<br> [[ファイル:Arduino SC1602 05.jpg|フレームなし|中央]] <br><br> == SC1602 I2Cアダプタを利用する == 上記では、 SC1602を直接制御して文字を表示したが、電源や制御信号、データ信号の送信等のために約10本の配線が必要であるが、<br> GPIOピンが少ないマイコンを使用する時は扱い辛い。<br> そこで、SC1602 I2Cアダプタを使用すると、電源とI2C(SDA/SCL)で接続が可能となり単純化できる。(I2Cはプルアップが必要)<br> <br> ここでは、SC1602 I2Cアダプタの使用方法を記載する。<br> まず、I2Cアダプタは次のようなものである。上がSC1602、下がSC1602 I2Cアダプタである。<br> (同様のモジュールが各社から販売されているが、各社の仕様は違う可能性があるのでデータシートをよく読むこと)<br> [[ファイル:Arduino SC1602 06.jpg|フレームなし|中央]] <br> SC1602 I2Cアダプタのピンアサインは次の通りである。<br> [[ファイル:Arduino SC1602 07.png|フレームなし|中央]] 左側のGnd/Vccは、基本的にジャンパでショートされているが、バックライトを無効化する場合はオープンにする。<br> オープンにすると必ずバックライトがオンになるのではなく、プログラムから制御が可能である。<br> <br> 中央のポテンショメータは画面のコントラスト調整用である。<br> <br> ジャンパA0 - A2はアドレス選択用で、全てオープンにすると0x27となる。<br> ジャンパの設定により、A2 - A0で表される3ビット値を0x27から引いたアドレスにシフトする。<br> 例えば、A2をショート(1)、A1をオープン(0)、A0をショート(1)にした場合、0b101 = 0x5なので、0x27 - 0x5 = 0x22となる。<br> <br> 右側の4本のピンは、上からGnd、Vcc、SDA、SCLである。<br> <br> I2CインターフェイスSDA、SCLは、Arduino UnoではそれぞれA4、A5である。<br> <center> {| class="wikitable" !colspan="6"|Arduino Uno R3 |- | SDA || A4 |- | SCL || A5 |} </center> <br> また、I2Cはプルアップが必要である。<br> 次の項目では、LiquidCrystal_I2Cライブラリが内部でWireライブラリを使用しているが、<br> これは、SDA / SCLピンについて、Arduinoの内部プルアップをアクティベートするものである。<br> <br><br> ==== LiquidCrystal_I2Cライブラリ ==== I2Cアダプタを使用するサンプルコードでは、LiquidCrystal_I2Cライブラリを使用する。<br> <br> LiquidCrystal_I2Cライブラリのインストール手順を以下に示す。<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> <syntaxhighlight lang="c++"> #include <Wire.h> // I2Cライブラリ #include <LiquidCrystal_I2C.h> // 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() { lcd.init(); // LCDの初期化 lcd.backlight(); // LCDバックライトの点灯 } 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() { 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秒待機 } </syntaxhighlight> <br> <br><br> __FORCETOC__ [[カテゴリ:Arduino]]
Arduinoの基礎 - SC1602
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse