INHOUDSOPGAWE:

Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C) :: 6 stappe
Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C) :: 6 stappe

Video: Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C) :: 6 stappe

Video: Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C) :: 6 stappe
Video: Modelspoor met Arduino DCC-EX deel 10: Twee uitbreidingen MCP23017 aansluiten op I2C. 2024, November
Anonim
Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C)
Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C)

Hallo

Goeie groete.. !!

Ek (Somanshu Choudhary) namens Dcube -tegnologie -ondernemings wat Relays via I2C -protokol gaan beheer met behulp van Arduino nano en MCP23008.

Stap 1: Oorsig

Oorsig
Oorsig
  • Die MCP23X08-toestel bied parallelle I/O-uitbreiding van 8-bis, vir algemene doeleindes, vir I2C-bus- of SPI-toepassings.
  • Die MCP23X08 bestaan uit veelvuldige 8-bis konfigurasie registers vir invoer, uitvoer en polariteit seleksie. Die stelselmeester kan die I/Os as insette of uitsette moontlik maak deur die I/O -konfigurasie -bisse te skryf. Die data vir elke invoer of uitset word in die ooreenstemmende invoer- of uitsetregister gehou. Die polariteit van die Input Port -register kan omgekeer word met die Polarity Inversion -register. Alle registers kan deur die stelselmeester gelees word.
  • DATASHEET LINK:

Stap 2: Wat u benodig / skakels

Wat u benodig / skakels
Wat u benodig / skakels

1. Arduino Nano LINK:

2. Skild vir Arduino Nano LINK:

3. USB -kabel tipe A na mikro tipe B 6 voet lank

4. I²C kabel skakel:

5. Agt SPDT I²C -beheerde aflosse

6. Adapter LINK:

Stap 3: Kringdiagram

Stroombaandiagram
Stroombaandiagram
Stroombaandiagram
Stroombaandiagram

Stap 4: Programmering - I

Programmering - ek
Programmering - ek
Programmering - ek
Programmering - ek
  • In hierdie kode gebruik ek Function Programming Paradigm
  • Ek het verskillende oortjies gebruik vir die definisie van funksies en funksie -oproepe

KODE ONDER TABEL q:

// Eenvoudige funksie roepkode

#sluit leegstelling op ()

{

// I2C -adres van die MCP23008

#definieer MCP_ADDR 0x20

// Sluit aan by I2C Bus as meester

Wire.begin ();

// Begin seriële kommunikasie en stel baud -tempo in

Serial.begin (9600);

// Begin die transmissie met die gegewe toestel op die I2C -bus

Wire.beginTransmission (MCP_ADDR);

// Kies IODIR - I/O DIRECTION REGISTER register

Wire.write (0x00);

// Kies die vereiste bewerking (uitset)

Wire.write (0x00);

// Kies KONFIGURASIE register

Wire.write (0x05);

// Kies die vereiste bewerking

Wire.write (0x0E);

// einde transmissie

Wire.endTransmission ();

}

leemte lus ()

{

a1_on ();

vertraging (1000);

a1_off ();

vertraging (1000);

a2_on ();

vertraging (1000);

a2_off ();

vertraging (1000);

a3_on ();

vertraging (1000);

a3_off ();

vertraging (1000);

a4_on ();

vertraging (1000);

a4_off ();

vertraging (1000);

a5_on ();

vertraging (1000);

a5_off ();

vertraging (1000);

a6_on ();

vertraging (1000);

a6_off ();

vertraging (1000);

a7_on ();

vertraging (1000);

a7_off ();

vertraging (1000);

a8_on ();

vertraging (1000);

a8_off ();

}

KODE ONDER TAFEL q1:

// Hierdie kode is om relais 1 aan boord aan en af te skakel

leegte a1_on () {

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a1_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

KODE ONDER TAFEL q2:

// Hierdie kode is om relais 2 aan boord aan en af te skakel

leegte a2_on () {

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a2_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

KODE ONDER TABEL q3: // Hierdie kode is vir relais 3 aan boord

leegte a3_on ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a3_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

Stap 5: Programmering - II

Programmering - II
Programmering - II

KODE ONDER TAFEL q4:

// Hierdie kode is om relais 4 aan boord aan en af te skakel

nietig a4_on ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a4_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

KODE ONDER TAFEL q5:

// Hierdie kode is om relais 5 aan boord aan en af te skakel

nietig a5_on ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Draad.skryf (0x10);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a5_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

KODE ONDER TABEL q6: // Hierdie kode is vir relais 6 aan boord

nietig a6_on ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Draad.skryf (0x20);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a6_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

KODE ONDER TABEL q7: // Hierdie kode is vir relais 7 aan boord

leegte a7_on () {

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Draad.skryf (0x40);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a7_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

KODE ONDER TABEL q8: // Hierdie kode is vir relais 8 aan boord

leegte a8_on () {

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

nietig a8_off ()

{

// Begin oordrag

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Uitvoer na die skerm

Serial.print ("GPIO -waarde:");

Serial.println (GPIO, BIN);

}

Stap 6: Video

Vir verdere navrae, besoek gerus ons webwerf:

www.dcubetechnologies.com

Aanbeveel: