ویژگی های برد توسعه ورودی-خروجی 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) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی برد توسعه ورودی-خروجی 16 کاناله MCP23017-E/SS
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: نصب کتابخانه
به Library manager رفته و کتابخانه Adafruit_MCP23017 را نصب کنید.
گام سوم: کد
کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره Serial Plotter را باز کنید.
/*
Modified on Dec 15, 2020
Modified by MehranMaleki from Arduino Examples
Home
*/
#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);
}
}
در کد بالا، پایه PA0 (پایه صفر برد توسعه ورودی-خروجی) به عنوان خروجی تنظیم شده است و به طور متناوب High و Low میشود. مقدار این پایه نیز بر روی Serial Plotter نمایش داده میشود.
خروجی کد به شکل زیر است.