Cara menggunakan pcf8575 I/O expander dengan Arduino

How to Use the PCF8575 I/O Expander with Arduino

PCF8575 adalah expander I/O 16-bit yang berkomunikasi dengan mikrokontroler melalui antarmuka I2C. Ini memungkinkan Anda untuk memperluas jumlah pin input/output pada Arduino Anda, menjadikannya sempurna untuk proyek yang membutuhkan banyak sensor, tombol, atau LED. Tutorial ini akan memandu Anda melalui menghubungkan dan menggunakan PCF8575 dengan Arduino.


Apa yang Anda Butuhkan

  1. PCF8575 Modul Expander I/O
  2. Dewan Arduino (mis., Uno, mega, nano)
  3. Sensor, tombol, atau LED untuk pengujian
  4. Papan tempat memotong papan dan kabel jumper
  5. Komputer dengan IDE Arduino diinstal

Langkah 1: Memahami Modul PCF8575

PCF8575 menyediakan 16 pin GPIO tambahan yang dapat dikonfigurasi sebagai input atau output. Ini berkomunikasi melalui protokol I2C dan memiliki alamat I2C yang dapat disesuaikan untuk menghubungkan beberapa modul ke bus yang sama.

Pinout

Pin Fungsi
Vcc Catu daya (3.3V/5V)
Gnd Tanah
SDA Jalur data I2C
Scl I2C Clock Line
P0-P15 Tujuan Umum I/O Pin

Konfigurasi Alamat I2C

  • Alamat I2C ditentukan oleh pin A0, A1, dan A2:
    • Semua pin untuk GND: 0x20 (alamat default)
    • Semua pin ke VCC: 0x27

Langkah 2: Pengkabelan PCF8575 ke Arduino

Inilah cara menghubungkan PCF8575 ke Arduino:

Pin pcf8575 Pin Arduino
Vcc 5v
Gnd Gnd
SDA A4 (SDA)
Scl A5 (SCL)

Hubungkan periferal Anda (mis., LED atau tombol) ke pin P0-P15.

Catatan: Untuk papan Arduino lainnya, pastikan Anda menggunakan pin I2C yang benar.


Langkah 3: Instal perpustakaan yang diperlukan

Untuk menyederhanakan bekerja dengan PCF8575, instal perpustakaan "PCF8575".

Langkah untuk menginstal:

  1. Buka Ide Arduino.
  2. Pergi ke Sketsa > Sertakan perpustakaan > Kelola Perpustakaan.
  3. Cari "PCF8575" dan klik Memasang.

Langkah 4: Unggah kode

Contoh: Mengontrol LED

Kode ini menunjukkan cara menghidupkan dan mematikan LED menggunakan 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 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);
}

Contoh: Tombol Bacaan

Kode ini menunjukkan cara membaca input dari tombol yang terhubung ke 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);
}

Langkah 5: Uji pengaturan

  1. Hubungkan Arduino ke komputer Anda melalui USB.
  2. Buka IDE Arduino dan pilih yang benar Papan Dan Pelabuhan di bawah Peralatan menu.
  3. Unggah kode ke Arduino dengan mengklik Mengunggah.
  4. Untuk contoh LED, amati LED menyala dan mati. Untuk contoh tombol, tombol monitor menyatakan di monitor serial.

Aplikasi PCF8575

  1. Memperluas pin GPIO untuk proyek Arduino
  2. Membangun Kompleks Matriks LED
  3. Membaca banyak sensor atau array tombol
  4. Mengontrol relay dan aktuator

Pemecahan masalah

  • Tidak ada tanggapan dari modul: Verifikasi konfigurasi koneksi dan alamat I2C.
  • Bacaan yang tidak konsisten: Pastikan catu daya yang stabil dan resistor pull-up yang tepat untuk saluran I2C.
  • Perilaku pin yang salah: Mode pin periksa ganda (input/output) dalam kode.

Kesimpulan

Anda telah berhasil menghubungkan expander I/O PCF8575 dengan Arduino, memungkinkan Anda untuk mengontrol atau membaca dari 16 pin GPIO tambahan. Eksperimen dengan periferal yang berbeda dan perluas proyek Anda dengan modul serbaguna ini!

Tinggalkan komentar

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.