สารบัญ:

การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C):: 6 ขั้นตอน
การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C):: 6 ขั้นตอน

วีดีโอ: การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C):: 6 ขั้นตอน

วีดีโอ: การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C):: 6 ขั้นตอน
วีดีโอ: การใช้งานระบบ รับนักเรียน MCP PICKUP 2024, กรกฎาคม
Anonim
การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C)
การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C)

สวัสดี

สวัสดี..!!

ฉัน (Somanshu Choudhary) ในนามของการลงทุนด้านเทคโนโลยีของ Dcube จะควบคุมรีเลย์ผ่านโปรโตคอล I2C โดยใช้ Arduino nano และ MCP23008

ขั้นตอนที่ 1: ภาพรวม

ภาพรวม
ภาพรวม
  • อุปกรณ์ MCP23X08 มีการขยาย I/O แบบขนานสำหรับใช้งานทั่วไปแบบ 8 บิตสำหรับ I2C บัสหรือแอปพลิเคชัน SPI
  • MCP23X08 ประกอบด้วยรีจิสเตอร์การกำหนดค่า 8 บิตหลายรายการสำหรับการเลือกอินพุต เอาต์พุต และขั้ว ต้นแบบของระบบสามารถเปิดใช้งาน I/O เป็นอินพุตหรือเอาต์พุตโดยการเขียนบิตการกำหนดค่า I/O ข้อมูลสำหรับอินพุตหรือเอาต์พุตแต่ละรายการจะถูกเก็บไว้ในการลงทะเบียนอินพุตหรือเอาต์พุตที่เกี่ยวข้อง ขั้วของการลงทะเบียนพอร์ตอินพุตสามารถกลับด้านได้ด้วยการลงทะเบียนการกลับขั้วของขั้ว มาสเตอร์ระบบสามารถอ่านการลงทะเบียนทั้งหมดได้
  • ลิงค์ DATASHEET:

ขั้นตอนที่ 2: สิ่งที่คุณต้องการ / ลิงค์

สิ่งที่คุณต้องการ / ลิงค์
สิ่งที่คุณต้องการ / ลิงค์

1. Arduino Nano ลิงค์:

2.ชิลด์สำหรับ Arduino Nano ลิงค์:

3.สาย USB Type A ถึง Micro Type B ยาว 6 ฟุต

4. I²Cเคเบิ้ลลิงค์:

5. รีเลย์ควบคุม SPDT I²C แปดตัว

6. ลิงค์อะแดปเตอร์:

ขั้นตอนที่ 3: แผนภาพวงจร

แผนภูมิวงจรรวม
แผนภูมิวงจรรวม
แผนภูมิวงจรรวม
แผนภูมิวงจรรวม

ขั้นตอนที่ 4: การเขียนโปรแกรม - I

การเขียนโปรแกรม - I
การเขียนโปรแกรม - I
การเขียนโปรแกรม - I
การเขียนโปรแกรม - I
  • ในโค้ดนี้ ฉันใช้ Function Programming Paradigm
  • ฉันใช้แท็บต่างๆ สำหรับการกำหนดฟังก์ชันและการเรียกใช้ฟังก์ชัน

รหัสใต้แท็บ q:

// รหัสเรียกฟังก์ชันอย่างง่าย

#include การตั้งค่าเป็นโมฆะ ()

{

// ที่อยู่ I2C ของ MCP23008

#define MCP_ADDR 0x20

// เข้าร่วม I2C Bus ในฐานะมาสเตอร์

Wire.begin();

// เริ่มการสื่อสารแบบอนุกรมและกำหนดอัตรารับส่งข้อมูล

Serial.begin(9600);

// เริ่มส่งด้วยอุปกรณ์ที่กำหนดบนบัส I2C

Wire.beginTransmission(MCP_ADDR);

// เลือก IODIR – I/O DIRECTION REGISTER register

Wire.write(0x00);

// เลือกการดำเนินการที่ต้องการ (เอาต์พุต)

Wire.write(0x00);

// เลือก CONFIGURATION register

Wire.write(0x05);

// เลือกการดำเนินการที่ต้องการ

Wire.write(0x0E);

// สิ้นสุดการส่ง

Wire.endTransmission();

}

วงเป็นโมฆะ ()

{

a1_on();

ล่าช้า (1000);

a1_off();

ล่าช้า (1000);

a2_on();

ล่าช้า (1000);

a2_off();

ล่าช้า (1000);

a3_on();

ล่าช้า (1000);

a3_off();

ล่าช้า (1000);

a4_on();

ล่าช้า (1000);

a4_off();

ล่าช้า (1000);

a5_on();

ล่าช้า (1000);

a5_off();

ล่าช้า (1000);

a6_on();

ล่าช้า (1000);

a6_off();

ล่าช้า (1000);

a7_on();

ล่าช้า (1000);

a7_off();

ล่าช้า (1000);

a8_on();

ล่าช้า (1000);

a8_off();

}

รหัสใต้แท็บ q1:

// รหัสนี้เป็นการเปิดและปิดรีเลย์ 1 บนกระดาน

เป็นโมฆะ a1_on() {

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x01);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a1_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

รหัสใต้แท็บ q2:

// รหัสนี้เป็นการเปิดและปิดรีเลย์ 2 บนกระดาน

เป็นโมฆะ a2_on() {

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x02);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a2_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

รหัสใต้แท็บ q3:// รหัสนี้คือเปิดและปิดรีเลย์ 3 บนกระดาน

เป็นโมฆะ a3_on()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x04);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a3_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

ขั้นตอนที่ 5: การเขียนโปรแกรม - II

การเขียนโปรแกรม - II
การเขียนโปรแกรม - II

รหัสใต้แท็บ q4:

// รหัสนี้เป็นการเปิดและปิดรีเลย์ 4 บนเครื่อง

เป็นโมฆะ a4_on()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x08);

ล่าช้า (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a4_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

รหัสใต้แท็บ q5:

// รหัสนี้เป็นการเปิดและปิดรีเลย์ 5 บนเครื่อง

เป็นโมฆะ a5_on()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x10);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a5_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

รหัสใต้แท็บ q6:// รหัสนี้คือเปิดและปิดรีเลย์ 6 บนกระดาน

เป็นโมฆะ a6_on()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x20);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a6_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

รหัสใต้แท็บ q7:// รหัสนี้คือเปิดและปิดรีเลย์ 7 บนกระดาน

เป็นโมฆะ a7_on() {

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x40);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a7_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

รหัสใต้แท็บ q8:// รหัสนี้คือเปิดและปิดรีเลย์ 8 บนเครื่อง

เป็นโมฆะ a8_on() {

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x80);

ล่าช้า(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

เป็นโมฆะ a8_off()

{

// เริ่มส่ง

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ล่าช้า (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// ส่งออกไปยังหน้าจอ

Serial.print("ค่า GPIO:");

Serial.println (GPIO, BIN);

}

ขั้นตอนที่ 6: วิดีโอ

ต้องการข้อมูลเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ของเรา:

www.dcubetechnologies.com

แนะนำ: