Inhoudsopgave:

Toepassing van MCP-23008 met behulp van relaisinterface (I2C):: 6 stappen:
Toepassing van MCP-23008 met behulp van relaisinterface (I2C):: 6 stappen:

Video: Toepassing van MCP-23008 met behulp van relaisinterface (I2C):: 6 stappen:

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

Hallo

Goede groeten..!!

Ik (Somanshu Choudhary) namens Dcube tech ventures die relais gaan besturen via het I2C-protocol met behulp van Arduino nano en MCP23008.

Stap 1: Overzicht

Overzicht
Overzicht
  • Het MCP23X08-apparaat biedt 8-bits, algemene, parallelle I/O-uitbreiding voor I2C-bus- of SPI-toepassingen.
  • De MCP23X08 bestaat uit meerdere 8-bit configuratieregisters voor invoer, uitvoer en polariteitselectie. De systeemmaster kan de I/O's als input of output activeren door de I/O-configuratiebits te schrijven. De gegevens voor elke in- of uitgang worden bijgehouden in het bijbehorende In- of Uitgangsregister. De polariteit van het Input Port register kan worden omgekeerd met het Polarity Inversion register. Alle registers kunnen worden gelezen door de systeemmaster.
  • DATASHEET LINK:

Stap 2: Wat je nodig hebt / Links

Wat je nodig hebt / Links
Wat je nodig hebt / Links

1. Arduino Nano-LINK:

2. Shield voor Arduino Nano LINK:

3. USB-kabel Type A naar Micro Type B 6 voet lang

4. I²C-kabel LINK:

5. Acht SPDT I²C gestuurde relais

6. Adapter LINK:

Stap 3: Schakelschema

Schakelschema
Schakelschema
Schakelschema
Schakelschema

Stap 4: Programmeren - I

Programmeren - I
Programmeren - I
Programmeren - I
Programmeren - I
  • In deze code gebruik ik het functieprogrammeerparadigma
  • Ik heb verschillende tabbladen gebruikt voor het definiëren van functies en het aanroepen van functies

CODE ONDER TAB q:

// Eenvoudige functie aanroepcode

#include void setup()

{

// I2C-adres van de MCP23008

#define MCP_ADDR 0x20

// Word lid van I2C Bus als master

Draad.begin();

// Start seriële communicatie en stel baudrate in

Serieel.begin(9600);

// Begin de verzending met het gegeven apparaat op de I2C-bus

Wire.beginTransmission (MCP_ADDR);

// Selecteer IODIR – I/O DIRECTION REGISTER register

Draad.schrijven (0x00);

// Selecteer de gewenste bewerking (uitvoer)

Draad.schrijven (0x00);

// Selecteer CONFIGURATIE register

Draad.schrijven (0x05);

// Selecteer de gewenste bewerking

Draad.schrijven (0x0E);

// eind transmissie

Wire.endTransmission();

}

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

}

CODE ONDER TAB q1:

// Deze code is om relais 1 aan boord aan en uit te zetten

ongeldig a1_on() {

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x01);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a1_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

CODE ONDER TAB q2:

// Deze code is om relais 2 aan boord aan en uit te zetten

ongeldig a2_on() {

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x02);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a2_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

CODE ONDER TAB q3:// Deze code is voor aan en uit relais 3 aan boord

ongeldig a3_on()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Wire.write(0x04);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a3_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

Stap 5: Programmeren - II

Programmeren - II
Programmeren - II

CODE ONDER TAB q4:

// Deze code is om relais 4 aan boord aan en uit te zetten

ongeldig a4_on()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x08);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a4_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

CODE ONDER TAB q5:

// Deze code is om relais 5 aan boord aan en uit te zetten

ongeldig a5_on()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x10);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a5_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

CODE ONDER TAB q6:// Deze code is voor aan en uit relais 6 aan boord

ongeldig a6_on()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x20);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a6_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

CODE ONDER TAB q7:// Deze code is voor aan en uit relais 7 aan boord

ongeldig a7_on() {

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x40);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a7_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

CODE ONDER TAB q8:// Deze code is voor aan en uit relais 8 aan boord

ongeldig a8_on() {

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x80);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

ongeldig a8_off()

{

// Begin met verzenden

Wire.beginTransmission (MCP_ADDR);

Draad.schrijven (0x09);

Draad.schrijven (0x00);

vertraging (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uitvoer naar het scherm

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

Serial.println (GPIO, BIN);

}

Stap 6: Video

Voor verdere katernen Bezoek gerust onze site:

www.dcubetechnologies.com

Aanbevolen: