فهرست مطالب:

کاربرد MCP-23008 با استفاده از رابط رله (I2C) :: 6 مرحله
کاربرد MCP-23008 با استفاده از رابط رله (I2C) :: 6 مرحله

تصویری: کاربرد MCP-23008 با استفاده از رابط رله (I2C) :: 6 مرحله

تصویری: کاربرد MCP-23008 با استفاده از رابط رله (I2C) :: 6 مرحله
تصویری: آشنایی با پردازنده‌ها و افکت‌ها (قسمت سیزدهم): کاربرد دیلی 2024, جولای
Anonim
کاربرد MCP-23008 با استفاده از رابط رله (I2C)
کاربرد MCP-23008 با استفاده از رابط رله (I2C)

سلام

درود فراوان.. !!

من (Somanshu Choudhary) به نمایندگی از پروژه های فناوری Dcube قصد دارم رله ها را از طریق پروتکل I2C با استفاده از Arduino nano و MCP23008 کنترل کنم.

مرحله 1: مرور کلی

بررسی اجمالی
بررسی اجمالی
  • دستگاه MCP23X08 8 بیتی ، عمومیت یافته ، موازی ورودی/خروجی را برای برنامه های I2C یا SPI ارائه می دهد.
  • MCP23X08 شامل چندین ثبت کننده پیکربندی 8 بیتی برای انتخاب ورودی ، خروجی و قطبیت است. استاد سیستم می تواند ورودی یا خروجی را با نوشتن بیت های پیکربندی ورودی/خروجی فعال کند. داده های هر ورودی یا خروجی در رجیستر ورودی یا خروجی مربوطه نگهداری می شود. قطبیت ثبات ورودی ورودی را می توان با ثبات وارونگی قطبی معکوس کرد. همه رجیسترها توسط استاد سیستم قابل خواندن هستند.
  • پیوند اطلاعات:

مرحله 2: آنچه شما نیاز دارید / پیوندها

آنچه شما نیاز دارید / پیوندها
آنچه شما نیاز دارید / پیوندها

1. Arduino Nano LINK:

2. محافظ برای Arduino Nano LINK:

3. کابل USB نوع A تا میکرو نوع B 6 پا بلند

4. پیوند کابل I²C:

5. هشت رله SPDT I²C کنترل شده

6. پیوند آداپتور:

مرحله 3: نمودار مدار

مدار
مدار
مدار
مدار

مرحله 4: برنامه نویسی - I

برنامه نویسی - من
برنامه نویسی - من
برنامه نویسی - من
برنامه نویسی - من
  • در این کد ، من از پارادایم برنامه نویسی تابع استفاده می کنم
  • من از تب های مختلف برای تعریف توابع و فراخوانی عملکرد استفاده کردم

کد زیر جدول q:

// کد فراخوانی عملکرد ساده

#شامل راه اندازی خلاء ()

{

// آدرس I2C MCP23008

#تعریف MCP_ADDR 0x20

// به عنوان اصلی به اتوبوس I2C بپیوندید

Wire.begin ()؛

// شروع ارتباط سریال و تنظیم نرخ باود

Serial.begin (9600)؛

// انتقال با دستگاه داده شده در گذرگاه I2C را آغاز کنید

Wire.beginTransmission (MCP_ADDR) ؛

// ثبت IODIR - I/O DIRECTION 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 در هیئت مدیره است

void a1_on () {

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x01) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a1_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

کد زیر جدول q2:

// این کد برای روشن و خاموش کردن رله 2 در هیئت مدیره است

void a2_on () {

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x02) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a2_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

کد زیر جدول q3: // این کد برای روشن و خاموش کردن رله 3 در کشتی است

void a3_on ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x04) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a3_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

مرحله 5: برنامه نویسی - II

برنامه نویسی - II
برنامه نویسی - II

کد زیر جدول q4:

// این کد برای روشن و خاموش کردن رله 4 در هیئت مدیره است

void a4_on ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x08) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a4_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

کد زیر جدول q5:

// این کد برای روشن و خاموش کردن رله 5 در هیئت مدیره است

void a5_on ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x10) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a5_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

کد زیر جدول q6: // این کد برای روشن و خاموش کردن رله 6 روی صفحه است

void a6_on ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x20) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a6_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

کد زیر جدول q7: // این کد برای روشن و خاموش کردن رله 7 روی صفحه است

void a7_on () {

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x40) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a7_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

کد زیر جدول q8: // این کد برای روشن و خاموش کردن رله 8 روی صفحه است

void a8_on () {

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x80) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

void a8_off ()

{

// شروع انتقال

Wire.beginTransmission (MCP_ADDR) ؛

Wire.write (0x09) ؛

Wire.write (0x00) ؛

تاخیر (1800) ؛

سیم. درخواست از (MCP_ADDR ، 1) ؛

int GPIO = Wire.read ()؛

Wire.endTransmission ()؛

// خروجی به صفحه نمایش

Serial.print ("مقدار GPIO:") ؛

Serial.println (GPIO ، BIN) ؛

}

مرحله ششم: فیلم

برای سوالات بیشتر به وب سایت ما مراجعه کنید:

www.dcubetechnologies.com

توصیه شده: