Inhoudsopgave:
- Stap 1: Overzicht
- Stap 2: Wat je nodig hebt / Links
- Stap 3: Schakelschema
- Stap 4: Programmeren - I
- Stap 5: Programmeren - II
- Stap 6: Video
Video: Toepassing van MCP-23008 met behulp van relaisinterface (I2C):: 6 stappen:
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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
- 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
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
Stap 4: 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
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:
Controle geleid over de hele wereld met behulp van internet met behulp van Arduino - Ajarnpa
Controle over de hele wereld via internet met Arduino: Hallo, ik ben Rithik. We gaan een internetgestuurde led maken met je telefoon. We gaan software gebruiken zoals Arduino IDE en Blynk. Het is eenvoudig en als het je gelukt is, kun je zoveel elektronische componenten bedienen als je wilt Dingen die we nodig hebben: Hardware:
I2C / IIC LCD-scherm - Gebruik een SPI LCD op het I2C LCD-scherm met behulp van SPI naar IIC-module met Arduino - Ajarnpa
I2C / IIC LCD-scherm | Gebruik een SPI LCD op het I2C LCD-scherm met behulp van SPI naar IIC-module met Arduino: Hallo, aangezien een normale SPI LCD 1602 te veel draden heeft om aan te sluiten, dus het is erg moeilijk om het met Arduino te verbinden, maar er is één module op de markt beschikbaar die kan converteer SPI-display naar IIC-display, dus dan hoeft u slechts 4 draden aan te sluiten
DIY MusiLED, muziek gesynchroniseerde LED's met Windows- en Linux-toepassing met één klik (32-bits en 64-bits). Eenvoudig opnieuw te maken, gemakkelijk te gebruiken, gemakkelijk te porten: 3 stappen
DIY MusiLED, muziek gesynchroniseerde LED's met Windows- en Linux-toepassing met één klik (32-bits en 64-bits). Eenvoudig te recreëren, gemakkelijk te gebruiken, gemakkelijk te poorten: dit project helpt je om 18 LED's (6 rood + 6 blauw + 6 geel) op je Arduino-bord aan te sluiten en de realtime signalen van de geluidskaart van je computer te analyseren en door te sturen naar de LED's om ze op te lichten volgens de beat-effecten (Snare, High Hat, Kick)
Autonome regeling van het toerental van de motor met behulp van een feedbacksysteem van een op IR gebaseerde toerenteller - Ajarnpa
Autonome regeling van het toerental van de motor met behulp van feedbacksysteem van een op IR gebaseerde toerenteller: er is altijd behoefte aan automatisering van een proces, of het nu een eenvoudig/monsterlijk proces is. methoden om ons kleine stukje land water te geven / te irrigeren. Het probleem van geen huidige toevoerleiding
Twee OOBoards met elkaar verbinden met behulp van I2C: 4 stappen
Twee OOBoards met elkaar verbinden met behulp van I2C: dit instructable behandelt hoe u twee OOBoards kunt verbinden met behulp van I2C