Mục lục:

Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C) :: 6 bước
Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C) :: 6 bước

Video: Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C) :: 6 bước

Video: Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C) :: 6 bước
Video: AVR | Bài 6 Giao tiếp SPI [14] 2024, Tháng bảy
Anonim
Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C)
Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C)

xin chào

Chúc mừng.. !!

Tôi (Somanshu Choudhary) thay mặt cho các liên doanh công nghệ Dcube sẽ điều khiển Rơle thông qua giao thức I2C bằng cách sử dụng Arduino nano và MCP23008.

Bước 1: Tổng quan

Tổng quat
Tổng quat
  • Thiết bị MCP23X08 cung cấp khả năng mở rộng I / O 8-bit, mục đích chung, song song cho các ứng dụng bus I2C hoặc SPI.
  • MCP23X08 bao gồm nhiều thanh ghi cấu hình 8 bit để lựa chọn đầu vào, đầu ra và phân cực. Hệ thống chủ có thể kích hoạt I / Os như là đầu vào hoặc đầu ra bằng cách ghi các bit cấu hình I / O. Dữ liệu cho mỗi đầu vào hoặc đầu ra được giữ trong thanh ghi Đầu vào hoặc Đầu ra tương ứng. Đảo cực của thanh ghi Cổng vào có thể được đảo ngược với thanh ghi Đảo cực. Tất cả các thanh ghi có thể được đọc bởi chủ hệ thống.
  • LIÊN KẾT DATASHEET:

Bước 2: Những gì bạn cần / Liên kết

Những gì bạn cần / Liên kết
Những gì bạn cần / Liên kết

1. Arduino Nano LINK:

2. Shield cho Arduino Nano LINK:

3. Cáp USB loại A đến Micro loại B dài 6 feet

4. LIÊN KẾT Cáp I²C:

5. Tám Rơle có điều khiển I²C SPDT

6. Adapter LINK:

Bước 3: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch

Bước 4: Lập trình - Tôi

Lập trình - Tôi
Lập trình - Tôi
Lập trình - Tôi
Lập trình - Tôi
  • Trong đoạn mã này, tôi sử dụng Mô hình lập trình hàm
  • Tôi đã sử dụng các tab khác nhau để định nghĩa hàm và gọi hàm

MÃ DƯỚI TAB q:

// Mã gọi hàm đơn giản

#include void setup ()

{

// Địa chỉ I2C của MCP23008

#define MCP_ADDR 0x20

// Tham gia I2C Bus với tư cách chính

Wire.begin ();

// Bắt đầu giao tiếp nối tiếp và đặt tốc độ truyền

Serial.begin (9600);

// Bắt đầu truyền với thiết bị đã cho trên bus I2C

Wire.beginTransmission (MCP_ADDR);

// Chọn IODIR - đăng ký ĐĂNG KÝ HƯỚNG I / O

Wire.write (0x00);

// Chọn thao tác bắt buộc (đầu ra)

Wire.write (0x00);

// Chọn thanh ghi CẤU HÌNH

Wire.write (0x05);

// Chọn thao tác bắt buộc

Wire.write (0x0E);

// kết thúc quá trình truyền

Wire.endTransmission ();

}

void loop ()

{

a1_on ();

chậm trễ (1000);

a1_off ();

chậm trễ (1000);

a2_on ();

chậm trễ (1000);

a2_off ();

chậm trễ (1000);

a3_on ();

chậm trễ (1000);

a3_off ();

chậm trễ (1000);

a4_on ();

chậm trễ (1000);

a4_off ();

chậm trễ (1000);

a5_on ();

chậm trễ (1000);

a5_off ();

chậm trễ (1000);

a6_on ();

chậm trễ (1000);

a6_off ();

chậm trễ (1000);

a7_on ();

chậm trễ (1000);

a7_off ();

chậm trễ (1000);

a8_on ();

chậm trễ (1000);

a8_off ();

}

MÃ DƯỚI TAB q1:

// Mã này để bật và tắt relay 1 trên tàu

void a1_on () {

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a1_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

MÃ DƯỚI TAB q2:

// Mã này để bật và tắt relay 2 trên tàu

void a2_on () {

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a2_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

MÃ DƯỚI TAB q3: // Mã này để bật và tắt rơle 3 trên bo mạch

void a3_on ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a3_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

Bước 5: Lập trình - II

Lập trình - II
Lập trình - II

MÃ DƯỚI TAB q4:

// Mã này để bật và tắt rơle 4 trên tàu

void a4_on ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a4_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

MÃ DƯỚI TAB q5:

// Đoạn mã này để bật và tắt rơle 5 trên tàu

void a5_on ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x10);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a5_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

MÃ DƯỚI TAB q6: // Mã này để bật và tắt rơle 6 trên bo mạch

void a6_on ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a6_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

MÃ DƯỚI TAB q7: // Mã này để bật và tắt rơle 7 trên bo mạch

void a7_on () {

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a7_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

MÃ DƯỚI TAB q8: // Mã này để bật và tắt rơle 8 trên bo mạch

void a8_on () {

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

void a8_off ()

{

// Bắt đầu truyền

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

chậm trễ (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Xuất ra màn hình

Serial.print ("Giá trị GPIO:");

Serial.println (GPIO, BIN);

}

Bước 6: Video

Để biết thêm các câu hỏi khác Hãy truy cập trang web của chúng tôi:

www.dcubetechnologies.com

Đề xuất: