INHOUDSOPGAWE:
- Stap 1: Oorsig
- Stap 2: Wat u benodig / skakels
- Stap 3: Kringdiagram
- Stap 4: Programmering - I
- Stap 5: Programmering - II
- Stap 6: Video
Video: Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C) :: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
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
- 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
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
Stap 4: Programmering - I
- 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
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:
LoRa-gebaseerde visuele moniteringstelsel vir landbou Iot - Die ontwerp van 'n front -toepassing met behulp van Firebase & Angular: 10 stappe
LoRa-gebaseerde visuele moniteringstelsel vir landbou Iot | Die ontwerp van 'n front -toepassing met Firebase & Angular: In die vorige hoofstuk praat ons oor hoe die sensors met die loRa -module werk om die Firebase Realtime -databasis te vul, en ons het die diagram op 'n baie hoë vlak gesien hoe ons hele projek werk. In hierdie hoofstuk sal ons praat oor hoe ons kan
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe
Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Maak 'n Android -toepassing vir klein ondernemings met behulp van MIT APP en Google Fusion Table: 7 stappe
Maak 'n Android -toepassing vir klein ondernemings met behulp van MIT APP en Google Fusion Table: wou u ooit u eie toepassing maak wat beskikbaar is by Google Play Store !!! As u 'n besigheid het, sal hierdie tutoriaal u lewe verander. Nadat u dit noukeurig gelees het, kan u u eie aansoek maak. Voor
I2C / IIC LCD -skerm - Gebruik 'n SPI LCD na die I2C LCD Display met behulp van SPI tot IIC module met Arduino: 5 stappe
I2C / IIC LCD -skerm | Gebruik 'n SPI LCD na die I2C LCD -skerm Met behulp van SPI na IIC -module met Arduino: Hallo ouens, aangesien 'n normale SPI LCD 1602 te veel drade het om aan te sluit, is dit baie moeilik om dit met arduino te koppel, maar daar is een module op die mark wat kan omskep SPI -skerm in IIC -skerm, sodat u slegs 4 drade moet aansluit