فهرست مطالب:
- مرحله 1: مرور کلی
- مرحله 2: آنچه شما نیاز دارید / پیوندها
- مرحله 3: نمودار مدار
- مرحله 4: برنامه نویسی - I
- مرحله 5: برنامه نویسی - II
- مرحله ششم: فیلم
تصویری: کاربرد MCP-23008 با استفاده از رابط رله (I2C) :: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
سلام
درود فراوان.. !!
من (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
کد زیر جدول 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
توصیه شده:
برد کاربرد 555 تایمر IC: 11 مرحله
صفحه کاربرد IC 555 تایمر: مقدمه: IC IC تایمر 555 یکی از مفیدترین و شناخته شده ترین IC ها برای همه ما است. حامل سخت افزار حرفه ای من دو سال قبل شروع شد و در سال 2019 یکی از آنها این است که 45 مدار مختلف را با استفاده از IC 555 تایمر برای
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s انجام دهید: 8 مرحله
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s: در این آموزش ، با نحوه راه اندازی ، اتصال و دریافت دستگاه I2C (شتاب سنج) کار با کنترلر (Arduino ، ESP32 ، ESP8266 ، ESP12 NodeMCU) آشنا خواهید شد
کاربرد حفظ امتیاز Petanque / Jeu-de-Boules: 7 مرحله
Petanque / Jeu-de-Boules Score Keeping Application: این یک برنامه نگه داشتن نمره Petanque (گاهی به عنوان Jeu de Boules نامیده می شود) برای Android است. این برنامه را می توان همانطور که هست استفاده کرد و کاملاً کاربردی است. یا می توان آن را در ترکیب با صفحه Petanque Matrix [دستورالعمل جداگانه
دکمه رابط رابط - مبانی آردوینو: 3 مرحله
دکمه رابط - مفاهیم اولیه آردوینو: دکمه فشاری قطعه ای است که هنگام فشار دادن آن دو نقطه را در یک مدار متصل می کند. هنگامی که دکمه فشاری باز است (بدون فشار) هیچ ارتباطی بین دو پایه دکمه فشاری وجود ندارد ، بنابراین پین به 5 متصل می شود. ولت (از طریق رسپی کشش
رابط نمایش Nextion با ESP 32 چهار رله برد: 7 مرحله
رابط نمایش Nextion با ESP 32 Four Relay Board: در این دستورالعمل قصد داریم صفحه بعدی 5 اینچی را به صفحه چهار رله Esp 32 وصل کنیم. برد توسط پروتکل MQTT کنترل می شود. برد همچنین دارای ویژگی های کنترل دو طرفه است. می توان آن را با mqtt و صفحه لمسی کنترل کرد. صفحه لمسی