آموزش راه اندازی برد توسعه ورودی-خروجی 16 کاناله MCP23017 با آردوینو

ویژگی های برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS

در پروژه‌هایی که به تعداد پایه­‌های ورودی خروجی زیادی نیاز است، استفاده از برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS گزینه مناسبی است. این برد توسعه با پروتکل ارتباطی I2C به میکروکنترلر متصل شده و عملا تعداد پایه‌­های ورودی خروجی میکروکنترلر را زیاد می­‌کند. پایه­‌های این برد توسعه را می‌­توان به راحتی به عنوان ورودی، خروجی و وقفه تنظیم نمود.

معرفی پایه ها (Pinout) برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS

برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS دارای 27 پایه به شرح زیر است:

7 پایه در سمت بالای برد:

  • VCC: تغذیه ماژول –5 ولت
  • GND: زمین
  • SCLپایه کلاک برای پروتکل I2C
  • SDA: پایه دیتا برای پروتکل I2C
  • RST: پایه ریست
  • ITA: خروجی وقفه پورت A
  • ITB: خروجی وقفه پورت B

20 پایه در سمت راست برد:

  • VCC: تغذیه ماژول –5 ولت
  • GND: زمین
  • PB0-7: پایه‌­های پورت B
  • VCC: تغذیه ماژول –5 ولت
  • GND: زمین
  • PA0-7: پایه­‌های پورت A

پین اوت (Pinout) این ماژول را می‌توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS دارای ارتباط I2C × 1
سیم جامپر × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS

گام اول: سیم بندی

مطابق مدار زیر، ماژول را به آردوینو وصل کنید.

گام دوم: نصب کتابخانه

به Library manager رفته و کتابخانه Adafruit_MCP23017 را نصب کنید.

گام سوم: کد

کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره Serial Plotter را باز کنید.

   /*
Modified on Dec 15, 2020
Modified by MehranMaleki from Arduino Examples
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="&#8220;Home&#8221; &#8212; Electropeak" src="https://electropeak.com/learn/embed/#?secret=XypNxPitUy" data-secret="XypNxPitUy" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
*/



#include <Wire.h>
#include "Adafruit_MCP23017.h"

// Basic pin reading and pullup test for the MCP23017 I/O expander
// public domain!

// Connect pin #12 of the expander to Analog 5 (i2c clock)
// Connect pin #13 of the expander to Analog 4 (i2c data)
// Connect pins #15, 16 and 17 of the expander to ground (address selection)
// Connect pin #9 of the expander to 5V (power)
// Connect pin #10 of the expander to ground (common ground)
// Connect pin #18 through a ~10kohm resistor to 5V (reset pin, active low)

// Output #0 is on pin 21 so connect an LED or whatever from that to ground

Adafruit_MCP23017 mcp;
  
void setup() {  
  mcp.begin();      // use default address 0

  mcp.pinMode(0, OUTPUT);

  Serial.begin(9600);
}


// flip the pin #0 up and down

void loop() {
  int x;
  

  mcp.digitalWrite(0, HIGH);
  x = mcp.digitalRead(0);

  int i;
  for(i = 0; i < 40; i++)  {
    Serial.println(x);
    delay(50);
  }


  mcp.digitalWrite(0, LOW);
  x = mcp.digitalRead(0);
  for(i = 0; i < 40; i++)  {
    Serial.println(x);
    delay(50);
  }
}
Arduino

در کد بالا، پایه PA0 (پایه صفر برد توسعه ورودی-خروجی) به عنوان خروجی تنظیم شده است و به طور متناوب High و Low می‌­شود. مقدار این پایه نیز بر روی Serial Plotter نمایش داده می­شود.

خروجی کد به شکل زیر است.

آموزش های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.