Բովանդակություն:

MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) :: 6 քայլերի միջոցով
MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) :: 6 քայլերի միջոցով

Video: MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) :: 6 քայլերի միջոցով

Video: MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) :: 6 քայլերի միջոցով
Video: Using MCP23008 port-expanders with Arduino Nano Every to drive 3 banks of 8 LEDs 2024, Հուլիսի
Anonim
MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) միջոցով
MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) միջոցով

Բարեւ Ձեզ

Բարի ողջույն.. !!

Ես (Somanshu Choudhary) Dcube տեխնոլոգիական ձեռնարկությունների անունից պատրաստվում եմ վերահսկել Relays- ը I2C արձանագրության միջոցով `օգտագործելով Arduino nano և MCP23008:

Քայլ 1: Ակնարկ

Ակնարկ
Ակնարկ
  • MCP23X08 սարքն ապահովում է 8-բիթանոց, ընդհանուր նշանակության, զուգահեռ I/O ընդլայնում I2C ավտոբուսի կամ SPI ծրագրերի համար:
  • MCP23X08- ը բաղկացած է բազմաթիվ 8-բիթ կազմաձևման գրանցամատյաններից `մուտքի, ելքի և բևեռայնության ընտրության համար: Համակարգի վարպետը կարող է մուտքագրել մուտքի կամ ելքի մուտքը կամ ելքը `մուտքագրելով մուտքի/ելքի կազմաձևման բիթերը: Յուրաքանչյուր մուտքի կամ ելքի տվյալները պահվում են համապատասխան մուտքի կամ ելքի գրանցամատյանում: Մուտքային նավահանգստի ռեգիստրի բևեռականությունը կարող է շրջվել Polarity Inversion գրանցամատյանի հետ: Բոլոր գրանցամատյանները կարող է կարդալ համակարգի վարպետը:
  • ՏԵATԵԿՈԹՅԱՆ ՀԵՏՈԹՅՈՆ ՝

Քայլ 2: Այն, ինչ ձեզ հարկավոր է / հղումներ

Այն, ինչ ձեզ հարկավոր է / հղումներ
Այն, ինչ ձեզ հարկավոր է / հղումներ

1. Arduino Nano LINK:

2. Ապակու համար Arduino Nano LINK:

3. USB Type A- ից մինչև Micro Type B 6 ոտք երկար

4. I²C Cable LINK:

5. Ութ SPDT I²C վերահսկվող ռելեներ

6. Ադապտեր LINK:

Քայլ 3: Շղթայի դիագրամ

Շղթայի դիագրամ
Շղթայի դիագրամ
Շղթայի դիագրամ
Շղթայի դիագրամ

Քայլ 4. Programրագրավորում - I

Mingրագրավորում - Ի
Mingրագրավորում - Ի
Mingրագրավորում - Ի
Mingրագրավորում - Ի
  • Այս ծածկագրում ես օգտագործում եմ գործառույթների ծրագրավորման պարադիգմը
  • Ես օգտագործել եմ տարբեր ներդիրներ գործառույթների սահմանման և գործառույթի կանչման համար

ԿՈԴԸ ՏԵ TԵԿՈԹՅԱՆ ՏԱԿ q:

// Պարզ գործառույթի զանգի կոդ

#ներառել դատարկության կարգավորում ()

{

// MCP23008 I2C հասցե

#սահմանեք MCP_ADDR 0x20

// Միացեք I2C Bus- ին որպես վարպետ

Wire.begin ();

// Սկսեք սերիական հաղորդակցություն և սահմանեք բաուդ արագություն

Serial.begin (9600);

// Սկսեք փոխանցումը I2C ավտոբուսի տվյալ սարքով

Wire.beginTransmission (MCP_ADDR);

// Ընտրեք IODIR - I/O DIRECTION REGISTER գրանցամատյան

Wire.write (0x00);

// Ընտրեք անհրաժեշտ գործողությունը (ելք)

Wire.write (0x00);

// Ընտրեք CONFIGURATION գրանցամատյան

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);

Մետաղալար. Խնդրանք (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);

Մետաղալար. Խնդրանք (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ելք էկրանին

Serial.print ("GPIO արժեքը` ");

Serial.println (GPIO, BIN);

}

ԿՈԴԸ ՍԵ TԱՆԻ ՏԱԿ q2:

// Այս ծածկագիրը նախատեսված է 2 -րդ ռելեի միացման և անջատման համար

դատարկություն 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);

}

անվավեր 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);

}

ԿՈԴ ՏԵ TԵԿՈԹՅԱՆ ՏԱԿ q3: // Այս ծածկագիրը նախատեսված է 3 -րդ ռելեի միացման և անջատման համար

դատարկ 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);

}

անվավեր 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. mingրագրավորում - II

Programրագրավորում - II
Programրագրավորում - II

ԿՈԴ ՝ Աղյուսակի տակ q4:

// Այս կոդը նախատեսված է ռելեի 4 -ի միացման և անջատման համար

դատարկ 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);

}

անվավեր 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);

}

ԿՈԴ ՏԵ TԵԿՈԹՅԱՆ ՏԱԿ q5:

// Այս ծածկագիրը նախատեսված է ռելեի 5 -ի միացման և անջատման համար

դատարկ 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);

}

անվավեր 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);

}

ԿՈԴԸ ՏԵ TԵԿՈԹՅԱՆ ՏԱԿ q6: // Այս ծածկագիրը նախատեսված է 6 -րդ ռելեի միացման և անջատման համար

դատարկ 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);

}

անվավեր 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);

}

ԿՈԴ ՏԵABԵԿՈԹՅԱՆ ՏԱԿ q7: // Այս կոդը տախտակի 7 -ի միացման և անջատման համար է

դատարկ 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);

}

անվավեր 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);

}

ԿՈԴԸ ՏԵ TԵԿՈԹՅԱՆ ՏԱԿ q8: // Այս ծածկագիրը նախատեսված է 8 -րդ ռելեի միացման և անջատման համար

դատարկություն 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);

}

դատարկություն 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);

}

Քայլ 6: Տեսանյութ

Լրացուցիչ հարցերի համար կարող եք այցելել մեր կայքը ՝

www.dcubetechnologies.com

Խորհուրդ ենք տալիս: