Menambah Pin Arduino Uno dengan I2C PCF8574 IO Expander

Indobot Update

Menambah Pin Arduino Uno dengan I2C PCF8574
Menambah Pin Arduino Uno dengan I2C PCF8574 IO Expander

Halo Sahabat Indobot.

Lagi ada project Arduino?

Arduino Uno adalah mikrokontroler yang sering digunakan dalam project kendali. hal ini dikarenakan arduino Uno memiliki jumlah pin yang tidak sedikit, namun juga tidak terlalu banyak (sedang-sedang saja).  Produk terakhir dari arduino Uno adalah arduino Uno R3 (revisi 3). Arduino ini menggunakan Atmega328P sebagai mikrokontrolernya. Arduino Uno memiliki 14 pin input/output digital (6 pin dapat digunakan sebagai output PWM) dan pin input analog berjumlah 6 pin. Banyaknya pin yang dimiliki arduino Uno sebenarnya sudah sangat cocok digunakan untuk beberapa project tertentu. Namun adakalanya kita semakin banyak menambahkan komponen-komponen baru yang membuat pin terpakai habis. Sehingga yang dilakukan adalah mengganti Arduino Uno menjadi arduino Mega atau cara lainnya adalah dengan menambahkan arduino Uno lagi yang dihubungkan secara serial. Padahal pin tambahan yang dibutuhkan tidak banyak.

Selain cara di atas, ada solusi lain yang dapat kita gunakan, yaitu menambah beberapa pin saja. Bagaimana caranya?

baca juga: Berkenalan dengan Arduino IoT Cloud

Cara paling mudah untuk melakukan ini adalah menggunakan device I2C PCF8574 IO Expander. I2C ini memiliki fungsi untuk menambahkan pin tambahan untuk Arduino Uno. Bahkan bisa juga untuk beberapa Arduino dan mikrokontroler lainnya. Cara menghubungkannya juga cukup mudah dan program yang dibutuhkan juga sudah ada library-nya, sehingga pemanggilan pin tidak begitu rumit.

(Sumber gambar: pmdway.com)

Menambah Pin Arduino Uno dengan I2C PCF8574 IO Expander

Langsung saja kita coba untuk menggunakan I2C PCF8574 IO Expander di Arduino Uno kita.

Siapkan Alat dan Bahan

Alat dan bahan yang digunakan untuk project kita kali ini adalah sebagai berikut. Jangan sampai ada yang kelewat ya.

  1. laptop/PC yang terinstall Arduino IDE
  2. Library: PCF8574 (untuk I2C PCF8574 IO Expander)
  3. Arduino UNO 1
  4. I2C PCF8574 IO Expander 1
  5. LED    8
  6. Resistor 330Ohm    8
  7. Kabel jumper 1

 

Susun Skema Rangkaian

Susunlah rangkaian seperti berikut ini.

Pasangkan LED dan resistor untuk tiap-tiap channel.

 

Tulislah Program Arduino

Tulislah program arduino seperti berikut. Jangan sampai ada yang terlewat ya. Perhatikan keterangan-keterangannya agar teman-teman juga memahami program yang teman-teman buat.

 
//program I2C PCF8574
#include "Arduino.h"
#include "PCF8574.h"

// Mengatur alamat I2C
PCF8574 i2c1(0x27);


void setup()
{
  Serial.begin(9600);
  i2c1.pinMode(0, OUTPUT);
  i2c1.pinMode(1, OUTPUT);
  i2c1.pinMode(2, OUTPUT);
  i2c1.pinMode(3, OUTPUT);
  i2c1.pinMode(4, OUTPUT);
  i2c1.pinMode(5, OUTPUT);
  i2c1.pinMode(6, OUTPUT);
  i2c1.pinMode(7, OUTPUT);
   
  }
  
  i2c1.begin();
}

void loop()
{
    i2c1.digitalWrite(0, HIGH);
    i2c1.digitalWrite(1, HIGH);
    i2c1.digitalWrite(2, HIGH);
    i2c1.digitalWrite(3, HIGH);
    i2c1.digitalWrite(4, HIGH);
    i2c1.digitalWrite(5, HIGH);
    i2c1.digitalWrite(6, HIGH);
    i2c1.digitalWrite(7, HIGH);
    delay(1000);
    i2c1.digitalWrite(0, LOW);
    i2c1.digitalWrite(1, LOW);
    i2c1.digitalWrite(2, LOW);
    i2c1.digitalWrite(3, LOW);
    i2c1.digitalWrite(4, LOW);
    i2c1.digitalWrite(5, LOW);
    i2c1.digitalWrite(6, LOW);
    i2c1.digitalWrite(7, LOW);
    delay(1000);
}

baca juga: PID Controller untuk Arduino

Program di atas di gunakan untuk menyalakan dan mematikan LED yang terpasang di tiap-tiap channel I2C PCF8574 IO Expander. Dalam program di atas terdapat variabel “i2c1” sebagai penamaan dari PCF8574. Variabel ini harus disebutkan sebelum pemanggilan channel/pin pada program. Jika biasanya untuk pin asli dari Arduino hanya menggunakan digitalWrite(7, LOW);, maka ketika kita menggunakan pin dari I2C PCF8574 IO Expander harus menyertakan nama dari PCF8574. Penggunaan lainnya juga bisa dengan program seperti ini.

 
#include "Arduino.h"
#include "PCF8574.h"

// Mengatur alamat I2C
PCF8574 i2c1(0x27);


void setup()
{
  Serial.begin(9600);
  for (int i = 0; i <= 7; i++) {
    i2c1.pinMode(i, OUTPUT); 
  }
  
  i2c1.begin();
}

void loop()
{
  for (int i = 0; i <= 7; i++) {
    i2c1.digitalWrite(i, HIGH);
    delay(500);
i2c1.digitalWrite(i, LOW);
    delay(500);

  }
}

 

Program di atas akan menyalakan LED secara bergantian dari channel 1 hingga ke 8. Pemanggilan pin-nya sama, yaitu dengan variabel yang di tuliskan di PCF8574. Nah jika kita ingin menambahkan 2 atau lebih I2C PCF8574 IO Expander, kita hanya perlu menambahkan variabel lainnya di PCF8574. Pemasangannya juga hanya di pasang di belakang I2C PCF8574 IO Expander yang pertama secara berderet. Gunakan program seperti berikut.

 
#include "Arduino.h"
#include "PCF8574.h"

// Mengatur alamat I2C
PCF8574 i2c1(0x27);
PCF8574 i2c2(0x26);

void setup()
{
  Serial.begin(9600);
  for (int i = 0; i <= 7; i++) {
    i2c1.pinMode(i, OUTPUT);
    i2c2.pinMode(i, OUTPUT);  
  }
  
  i2c1.begin();
  i2c2.begin();
}

void loop()
{
  for (int i = 0; i <= 7; i++) {
    i2c1.digitalWrite(i, HIGH);
    delay(500);
  }
  for (int i = 0; i <= 7; i++) {
    i2c1.digitalWrite(i, LOW);
  delay(500);
  }
  for (int i = 0; i <= 7; i++) {
    i2c2.digitalWrite(i, HIGH);
    delay(500);
  }
  for (int i = 0; i <= 7; i++) {
    i2c2.digitalWrite(i, LOW);
  delay(500);
  }  
}

baca juga: Tutorial Arduino UNO R3 Membaca Suhu dan Kelembaban dengan Sensor DHT11

Penggunaan I2C PCF8574 IO Expander cukup mudah di aplikasikan. I2C ini juga dapat di gunakan sebagai pin input, namun di sarankan dalam penggunaannya tidak untuk analog atau PWM (output).

I2C PCF8574 IO Expander akan lebih baik jika di gunakan untuk pin digital, seperti LED, relay, atau button biasa. Oh ya, penggunaan I2C juga dapat memberatkan Arduino ya, terutama ketika semua channel di gunakan. Jadi jika teman-teman terpaksa menggunakan I2C PCF8574 IO Expander, gunakanlah untuk beberapa program yang tidak rumit seperti pengoperasian digital.on off.

Selamat mencoba.

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

2 pemikiran pada “Menambah Pin Arduino Uno dengan I2C PCF8574 IO Expander”

  1. Selain tidak bisa untuk analog dan pwm, apakah ada gak lainnya yg tidak bisa dilakukan oleh IO ekspander ini?

    Balas

Tinggalkan komentar

whatsapp whatsapp