Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Hei
Terveisiä.. !!
I (Somanshu Choudhary) Dcube -teknologiayritysten puolesta, jotka aikovat ohjata releitä I2C -protokollan kautta käyttämällä Arduino nanoa ja MCP23008.
Vaihe 1: Yleiskatsaus
- MCP23X08-laite tarjoaa 8-bittisen, yleiskäyttöisen, rinnakkaisen I/O-laajennuksen I2C-väylä- tai SPI-sovelluksiin.
- MCP23X08 koostuu useista 8-bittisistä määritysrekistereistä tulo-, lähtö- ja napaisuusvalintaa varten. Järjestelmän isäntä voi ottaa I/O: t käyttöön joko tuloina tai lähtöinä kirjoittamalla I/O -konfigurointibitit. Kunkin tulon tai lähdön tiedot säilytetään vastaavassa tulo- tai lähtörekisterissä. Input Port -rekisterin napaisuus voidaan kääntää Polarity Inversion -rekisterillä. Järjestelmän päällikkö voi lukea kaikki rekisterit.
- DATASHEET LINK:
Vaihe 2: Mitä tarvitset / Linkit
1. Arduino Nano LINKKI:
2. kilpi Arduino Nano LINK:
3. USB -kaapeli Tyyppi A - Mikrotyyppi B 6 jalkaa pitkä
4. I²C -kaapelin linkki:
5. Kahdeksan SPDT I²C -ohjattua relettä
6. sovittimen linkki:
Vaihe 3: Piirikaavio
Vaihe 4: Ohjelmointi - I
- Tässä koodissa käytän Function Programming Paradigmaa
- Käytin eri välilehtiä toimintojen määrittelyyn ja toimintojen kutsumiseen
KOODI välilehden q alla:
// Yksinkertaisen toiminnon kutsukoodi
#include void setup ()
{
// MCP23008: n I2C -osoite
#define MCP_ADDR 0x20
// Liity I2C Busiin isäntänä
Wire.begin ();
// Käynnistä sarjaliikenne ja aseta baudinopeus
Sarja.alku (9600);
// Aloita lähetys annetulla laitteella I2C -väylällä
Wire.beginTransmission (MCP_ADDR);
// Valitse IODIR - I/O DIRECTION REGISTER -rekisteri
Wire.write (0x00);
// Valitse vaadittu toiminto (lähtö)
Wire.write (0x00);
// Valitse CONFIGURATION register
Wire.write (0x05);
// Valitse haluamasi toiminto
Wire.write (0x0E);
// lopeta lähetys
Wire.endTransmission ();
}
tyhjä silmukka ()
{
a1_on ();
viive (1000);
a1_off ();
viive (1000);
a2_on ();
viive (1000);
a2_off ();
viive (1000);
a3_on ();
viive (1000);
a3_off ();
viive (1000);
a4_on ();
viive (1000);
a4_off ();
viive (1000);
a5_on ();
viive (1000);
a5_off ();
viive (1000);
a6_on ();
viive (1000);
a6_off ();
viive (1000);
a7_on ();
viive (1000);
a7_off ();
viive (1000);
a8_on ();
viive (1000);
a8_off ();
}
KOODI välilehden q1 alla:
// Tämä koodi on releen 1 päälle ja pois päältä
void a1_on () {
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
mitätön a1_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
KOODI välilehden q2 alla:
// Tämä koodi on kytkettävä päälle ja pois päältä rele 2
void a2_on () {
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
void a2_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
KOODI välilehden q3 alla: // Tämä koodi on päällä ja pois päältä kytkettävä rele 3
mitätön a3_on ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
mitätön a3_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
Vaihe 5: Ohjelmointi - II
KOODI välilehden q4 alla:
// Tämä koodi on releen 4 päälle ja pois päältä
mitätön a4_on ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
mitätön a4_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
KOODI SARKAIN q5:
// Tämä koodi on releen 5 päälle ja pois päältä
mitätön a5_on ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
mitätön a5_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
KOODI VÄLILAITTEEN q6: // Tämä koodi on päällä ja pois päältä kytkettävä rele 6
mitätön a6_on ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
mitätön a6_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
KOODI VÄLILAITTEEN q7: // Tämä koodi on päällä ja pois päältä rele 7
void a7_on () {
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
mitätön a7_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
KOODI VÄLILAITTEEN q8: // Tämä koodi on päällä ja pois päältä releessä 8
void a8_on () {
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
void a8_off ()
{
// Aloita lähetys
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
viive (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Lähtö näytölle
Serial.print ("GPIO -arvo:");
Serial.println (GPIO, BIN);
}
Vaihe 6: Video
Jos haluat lisätietoja, käy sivustollamme:
www.dcubetechnologies.com