Mục lục:
- Bước 1: Tổng quan
- Bước 2: Những gì bạn cần / Liên kết
- Bước 3: Sơ đồ mạch
- Bước 4: Lập trình - Tôi
- Bước 5: Lập trình - II
- Bước 6: Video
Video: Ứng dụng của MCP-23008 Sử dụng Giao diện Tiếp sóng (I2C) :: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
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
- 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
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
Bước 4: 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
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:
Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng ESP32s: 8 bước
Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng cách sử dụng ESP32s: Trong hướng dẫn này, bạn sẽ tìm hiểu tất cả về Cách khởi động, kết nối và nhận thiết bị I2C (Gia tốc kế) hoạt động với bộ điều khiển (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Ứng dụng giao tiếp bổ sung và thay thế: 6 bước
Ứng dụng giao tiếp bổ sung và thay thế: Chúng tôi sẽ sử dụng AppInventor để tạo ứng dụng này. Theo liên kết này để tạo một tài khoản của riêng bạn: http://appinventor.mit.edu/explore/ Đây là một ứng dụng cho phép những người không biết nói vẫn giao tiếp được các cụm từ cơ bản. Có ba
Xin chào Blynk! Giao tiếp SPEEEduino với ứng dụng Blynk: 5 bước
Xin chào Blynk! Giao tiếp SPEEEduino với ứng dụng Blynk: SPEEEduino là gì? SPEEEduino là một bo mạch vi điều khiển hỗ trợ Wi-Fi dựa trên hệ sinh thái Arduino, được xây dựng cho các nhà giáo dục. SPEEEduino kết hợp hệ số hình thức và bộ vi điều khiển của Arduino với SoC Wi-Fi ESP8266, tạo ra
Đi xe xuyên tường: Giao diện xe đạp cố định của Chế độ xem phố của Google: 12 bước (có hình ảnh)
Đi xe xuyên tường: Giao diện xe đạp cố định của Chế độ xem phố của Google: Đi xe xuyên tường: Giao diện xe đạp cố định của Chế độ xem phố của Google cho phép bạn đạp xe qua Chế độ xem phố của Google từ sự thoải mái trong phòng khách của bạn. Sử dụng một số thiết bị điện tử đơn giản, Arduino, xe đạp tĩnh, máy tính và máy chiếu hoặc TV
SmartMirror dựa trên web sử dụng giao tiếp nối tiếp: 6 bước
SmartMirror dựa trên web sử dụng giao tiếp nối tiếp: Hướng dẫn này được cung cấp với tất cả mã đã sẵn sàng để sử dụng. Quá trình phát triển rất phức tạp nhưng một khi nó được thiết lập, nó thực sự dễ dàng tùy chỉnh. Hãy xem và tận hưởng;)