Բովանդակություն:
- Քայլ 1: Ակնարկ
- Քայլ 2: Այն, ինչ ձեզ հարկավոր է / հղումներ
- Քայլ 3: Շղթայի դիագրամ
- Քայլ 4. Programրագրավորում - I
- Քայլ 5. mingրագրավորում - II
- Քայլ 6: Տեսանյութ
Video: MCP-23008- ի կիրառումը ռելեային միջերեսի (I2C) :: 6 քայլերի միջոցով
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Բարեւ Ձեզ
Բարի ողջույն.. !!
Ես (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
- Այս ծածկագրում ես օգտագործում եմ գործառույթների ծրագրավորման պարադիգմը
- Ես օգտագործել եմ տարբեր ներդիրներ գործառույթների սահմանման և գործառույթի կանչման համար
ԿՈԴԸ ՏԵ 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
ԿՈԴ ՝ Աղյուսակի տակ 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
Խորհուրդ ենք տալիս:
Blynk հավելվածի միջոցով Nodemcu- ի միջոցով ինտերնետի միջոցով կառավարում. 5 քայլ
Blynk հավելվածի միջոցով Nodemcu- ի միջոցով ինտերնետի միջոցով կառավարելը. Բարև բոլորին, այսօր մենք ձեզ ցույց կտանք, թե ինչպես կարող եք վերահսկել LED- ը սմարթֆոնի միջոցով ինտերնետում
Տնային ավտոմատացում Raspberry Pi- ի միջոցով `օգտագործելով ռելեային տախտակ. 7 քայլ
Տնային ավտոմատացում Raspberry Pi- ի միջոցով `օգտագործելով ռելեային տախտակ. Մարդկանց մեծ մասը ցանկանում է ունենալ մեծ հարմարավետություն, բայց ողջամիտ գներով: Մենք ծուլություն ենք զգում ամեն երեկո, երբ արևը մայր է մտնում և հաջորդ առավոտ լուսավորվում են տները ՝ կրկին անջատելով լույսերը, կամ միացնելու/անջատելու օդորակիչը/օդափոխիչը/ջեռուցիչները, ինչպես որ
Arduino WiFi- ի ամպին միացում ESP8266: 7 քայլերի միջոցով
Arduino WiFi- ն ամպին միացնելով ESP8266- ի միջոցով. Այս ձեռնարկում մենք կբացատրենք ձեզ, թե ինչպես միացնել ձեր Arduino- ն IoT ամպին WiFi- ի միջոցով: Մենք կկարգավորենք Arduino- ից և ESP8266 WiFi մոդուլից կազմված կարգավորումը որպես IoT Thing և պատրաստ կդարձնենք այն: AskSensors cloud.L- ի հետ շփվելու համար:
Brainwave Համակարգչային միջերեսի նախատիպ TGAM Starter Kit oldոդում և փորձարկում. 7 քայլ (նկարներով)
Brainwave Համակարգչային ինտերֆեյսի նախատիպ TGAM Starter Kit oldոդում և փորձարկում. Նյարդագիտության հետազոտությունների վերջին դարը մեծապես մեծացրել է մեր գիտելիքները ուղեղի և, մասնավորապես, ուղեղում արձակվող նեյրոնների կողմից արձակվող էլեկտրական ազդանշանների մասին: Այս էլեկտրական ազդանշանների օրինակներն ու հաճախականությունները կարող են չափվել
VOIP ձեր բջջային հեռախոսի միջոցով Wifi և 3G: 3 քայլերի միջոցով
VOIP ձեր բջջային հեռախոսում Wifi- ի և 3G- ի միջոցով. Այստեղ ես ձեզ ցույց կտամ Fring կոչվող բջջային հեռախոսի դիմումը: Դա իսկապես հիանալի է, անվճար և օգտագործման համար դյուրին: Ինչ կարող ենք անել Fring- ի հետ