Get free delivery on all orders over £20!

ArduinoでPCF8575 I/O Expanderを使用する方法

How to Use the PCF8575 I/O Expander with Arduino

PCF8575は、I2Cインターフェイスを介してマイクロコントローラーと通信する16ビットI/Oエキスパンダーです。 Arduinoの入出力ピンの数を拡大することができ、多くのセンサー、ボタン、またはLEDを必要とするプロジェクトに最適です。このチュートリアルでは、PCF8575をArduinoと接続および使用することをガイドします。


あなたが必要とするもの

  1. PCF8575 I/O Expanderモジュール
  2. Arduino委員会(例:UNO、MEGA、NANO)
  3. テスト用のセンサー、ボタン、またはLED
  4. ブレッドボードとジャンパーワイヤ
  5. Arduino IDEがインストールされたコンピューター

ステップ1:PCF8575モジュールの理解

PCF8575は、入力または出力として構成できる16の追加のGPIOピンを提供します。 I2Cプロトコルを介して通信し、複数のモジュールを同じバスに接続するための調整可能なI2Cアドレスを持っています。

ピンアウト

ピン 関数
VCC 電源(3.3V/5V)
GND 地面
SDA I2Cデータライン
SCL I2Cクロックライン
P0-P15 汎用I/Oピン

I2Cアドレス構成

  • I2Cアドレスは、A0、A1、およびA2ピンによって決定されます。
    • GNDへのすべてのピン: 0x20 (デフォルトアドレス)
    • VCCへのすべてのピン: 0x27

ステップ2:PCF8575をArduinoに配線します

PCF8575をArduinoに接続する方法は次のとおりです。

PCF8575ピン Arduino Pin
VCC 5V
GND GND
SDA A4(SDA)
SCL A5(SCL)

周辺機器(LEDまたはボタンなど)をP0-P15ピンに接続します。

注記: 他のArduinoボードについては、正しいI2Cピンを使用してください。


ステップ3:必要なライブラリをインストールします

PCF8575での作業を簡素化するには、「PCF8575」ライブラリをインストールします。

インストールする手順:

  1. Arduino IDEを開きます。
  2. 行きます スケッチ > ライブラリを含めます > ライブラリを管理します.
  3. 「PCF8575」を検索してクリックします インストール.

ステップ4:コードをアップロードします

例:LEDの制御

このコードは、PCF8575を使用してLEDをオンおよびオフにする方法を示しています。

#include <Wire.h>
#include <PCF8575.h>

PCF8575 pcf8575(0x20); // Initialize with the default I2C address

void setup() {
  Serial.begin(9600);

  // Set all pins as outputs
  for (int i = 0; i < 16; i++) {
    pcf8575.pinMode(i, OUTPUT);
  }

  Serial.println("PCF8575 initialized.");
}

void loop() {
  // Turn all LEDs on
  for (int i = 0; i < 16; i++) {
    pcf8575.digitalWrite(i, HIGH);
  }
  delay(1000);

  // Turn all LEDs off
  for (int i = 0; i < 16; i++) {
    pcf8575.digitalWrite(i, LOW);
  }
  delay(1000);
}

例:ボタンの読み取り

このコードは、PCF8575に接続されたボタンから入力を読み取る方法を示しています。

#include <Wire.h>
#include <PCF8575.h>

PCF8575 pcf8575(0x20); // Initialize with the default I2C address

void setup() {
  Serial.begin(9600);

  // Set all pins as inputs
  for (int i = 0; i < 16; i++) {
    pcf8575.pinMode(i, INPUT);
  }

  Serial.println("PCF8575 initialized.");
}

void loop() {
  for (int i = 0; i < 16; i++) {
    int state = pcf8575.digitalRead(i);
    Serial.print("Pin ");
    Serial.print(i);
    Serial.print(": ");
    Serial.println(state);
  }
  delay(500);
}

ステップ5:セットアップをテストします

  1. USBを介してArduinoをコンピューターに接続します。
  2. Arduino IDEを開き、正しいものを選択します ボード そして ポート の下 ツール メニュー。
  3. クリックしてコードをArduinoにアップロードします アップロード.
  4. LEDの例では、LEDがオンとオフになっているのを観察します。ボタンの例では、シリアルモニターの[モニター]ボタン状態。

PCF8575のアプリケーション

  1. ArduinoプロジェクトのGPIOピンの拡大
  2. 複雑なLEDマトリックスを構築します
  3. 複数のセンサーまたはボタン配列の読み取り
  4. リレーとアクチュエーターの制御

トラブルシューティング

  • モジュールからの応答はありません: I2C接続を確認し、構成をアドレスします。
  • 一貫性のない測定値: I2Cラインの安定した電源と適切なプルアップ抵抗を確保します。
  • 間違ったピン動作: コードのピンモード(入力/出力)を再確認します。

結論

PCF8575 I/O ExpanderとArduinoをインターフェースすることに成功し、16個のGPIOピンを制御または読み取ることができます。さまざまな周辺機器を試して、この汎用性の高いモジュールでプロジェクトを拡大してください!

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

2件のコメント

Hallo Bruce,

benutze das Library von Renzo Mischianti (kannste nach googlen uind dort auch runterladen) und benenne den Folder in “PCF8575” um. Das Repository von Rob Tillaart hat andere Befehle und passt nicht zu dem o.g. Beispiel.

Ich hoffe das bringt dich weiter.

Gruß

Jochen

Jochen,

I copy the code and get a coplilation error:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino: In function ‘void setup()’:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino:11:13: error: ‘class PCF8575’ has no member named ‘pinMode’
pcf8575.pinMode(i, INPUT);
^~~~~~~
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino: In function ‘void loop()’:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino:19:25: error: ‘class PCF8575’ has no member named ‘digitalRead’
int state = pcf8575.digitalRead(i);
^~~~~~~~~~~
exit status 1

Compilation error: ‘class PCF8575’ has no member named ‘pinMode’

Bruce Pedersen,

コメントを残す