Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Halo
Salam Sejahtera..!!
Saya (Somanshu Choudhary) atas nama perusahaan teknologi Dcube akan mengontrol Relay melalui protokol I2C menggunakan Arduino nano dan MCP23008.
Langkah 1: Ikhtisar
- Perangkat MCP23X08 menyediakan 8-bit, tujuan umum, ekspansi I/O paralel untuk bus I2C atau aplikasi SPI.
- MCP23X08 terdiri dari beberapa register konfigurasi 8-bit untuk pemilihan input, output dan polaritas. Master sistem dapat mengaktifkan I/O sebagai input atau output dengan menulis bit konfigurasi I/O. Data untuk setiap input atau output disimpan dalam register Input atau Output yang sesuai. Polaritas register Port Input dapat dibalik dengan register Pembalikan Polaritas. Semua register dapat dibaca oleh master sistem.
- LEMBAR DATA LINK:
Langkah 2: Yang Anda Butuhkan / Tautan
1. Arduino Nano LINK:
2. Perisai untuk Arduino Nano LINK:
3. Kabel USB Tipe A ke Tipe Mikro B Panjang 6 Kaki
4. I²C Kabel LINK:
5. Delapan Relai Terkendali SPDT I²C
6. Tautan Adaptor:
Langkah 3: Diagram Sirkuit
Langkah 4: Pemrograman - I
- Dalam kode ini, saya menggunakan Paradigma Pemrograman Fungsi
- Saya menggunakan tab yang berbeda untuk definisi fungsi dan pemanggilan fungsi
KODE DI BAWAH TAB q:
// Kode panggilan fungsi sederhana
#sertakan pengaturan kosong()
{
// Alamat I2C dari MCP23008
#menentukan MCP_ADDR 0x20
// Bergabunglah dengan Bus I2C sebagai master
Kawat.mulai();
// Mulai komunikasi serial dan atur baud rate
Serial.begin(9600);
// Mulai transmisi dengan perangkat yang diberikan pada bus I2C
Wire.beginTransmission(MCP_ADDR);
// Pilih IODIR – I/O DIRECTION REGISTER register
Kawat.tulis (0x00);
// Pilih operasi yang diperlukan (output)
Kawat.tulis (0x00);
// Pilih KONFIGURASI register
Kawat.tulis (0x05);
// Pilih operasi yang diperlukan
Kawat.tulis (0x0E);
// akhiri transmisi
Kawat.endTransmisi();
}
lingkaran kosong()
{
a1_on();
penundaan (1000);
a1_off();
penundaan (1000);
a2_on();
penundaan (1000);
a2_off();
penundaan (1000);
a3_on();
penundaan (1000);
a3_off();
penundaan (1000);
a4_on();
penundaan (1000);
a4_off();
penundaan (1000);
a5_on();
penundaan (1000);
a5_off();
penundaan (1000);
a6_on();
penundaan (1000);
a6_off();
penundaan (1000);
a7_on();
penundaan (1000);
a7_off();
penundaan (1000);
a8_on();
penundaan (1000);
a8_off();
}
KODE DI BAWAH TAB q1:
// Kode ini untuk menghidupkan dan mematikan relai 1 di papan
batal a1_on() {
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x01);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a1_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
KODE DI BAWAH TAB q2:
// Kode ini untuk menghidupkan dan mematikan relai 2 di papan
batalkan a2_on() {
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x02);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a2_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
KODE DI BAWAH TAB q3:// Kode ini untuk menghidupkan dan mematikan relai 3 on board
batalkan a3_on()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x04);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a3_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
Langkah 5: Pemrograman - II
KODE DI BAWAH TAB q4:
// Kode ini untuk menghidupkan dan mematikan relai 4 di papan
batalkan a4_on()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x08);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a4_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
KODE DI BAWAH TAB q5:
// Kode ini untuk menghidupkan dan mematikan relay 5 on board
batalkan a5_on()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x10);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a5_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
KODE DI BAWAH TAB q6:// Kode ini untuk menghidupkan dan mematikan relai 6 on board
batalkan a6_on()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x20);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a6_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
KODE DI BAWAH TAB q7:// Kode ini untuk menghidupkan dan mematikan relay 7 on board
batalkan a7_on() {
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x40);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a7_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
KODE DI BAWAH TAB q8:// Kode ini untuk menghidupkan dan mematikan relay 8 on board
batalkan a8_on() {
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x80);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
batalkan a8_off()
{
// Mulai transmisi
Wire.beginTransmission(MCP_ADDR);
Kawat.tulis (0x09);
Kawat.tulis (0x00);
penundaan(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Kawat.baca();
Kawat.endTransmisi();
// Keluaran ke layar
Serial.print("Nilai GPIO:");
Serial.println(GPIO, BIN);
}
Langkah 6: Video
Untuk pertanyaan lebih lanjut Jangan ragu untuk mengunjungi situs kami:
www.dcubetechnologies.com