INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
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