Sisällysluettelo:
- Vaihe 1: Yleiskatsaus
- Vaihe 2: Mitä tarvitset / Linkit
- Vaihe 3: Piirikaavio
- Vaihe 4: Ohjelmointi - I
- Vaihe 5: Ohjelmointi - II
- Vaihe 6: Video
Video: MCP-23008: n käyttö releliitännän (I2C) avulla :: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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
Suositeltava:
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: 7 vaihetta
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: (Päivitys 22.8.2020: Tämä ohje on 2 vuotta vanha ja perustuu joihinkin kolmansien osapuolien sovelluksiin. Kaikki heidän puolellaan tehdyt muutokset saattavat tehdä projektista toimimattoman. Se voi olla tai ei työskentele nyt, mutta voit seurata sitä viitteenä ja muokata sen mukaan
Useiden ESP-keskustelujen tekeminen ESP-NOW: n avulla ESP32: n ja ESP8266: n avulla: 8 vaihetta
Useiden ESP-keskustelujen tekeminen ESP-NYT: n avulla ESP32: n ja ESP8266: n avulla: Käynnissä olevassa projektissani tarvitsen useita ESP: itä puhuakseni keskenään ilman reititintä. Tätä varten käytän ESP-NOW-ohjelmaa langattoman viestinnän tekemiseen keskenään ilman ESP: n reititintä
Ihmisen ja tietokoneen käyttöliittymä: Function a Gripper (valmistaja Kirigami) ranneliikkeen avulla EMG: n avulla: 7 vaihetta
Ihmisen ja tietokoneen käyttöliittymä: Function a Gripper (valmistaja Kirigami) ranneliikkeen avulla EMG: n avulla: Joten tämä oli ensimmäinen kokeiluni ihmisen ja tietokoneen välisessä käyttöliittymässä. pythonin ja arduinon kautta ja käytti origamipohjaista tarttujaa
Suuntautumisen opiskelu Raspberry Pi: n ja MXC6226XU: n avulla Pythonin avulla: 6 vaihetta
Suuntautumisen opiskelu Raspberry Pi: n ja MXC6226XU: n avulla Pythonin avulla: Äänet ovat yksinkertaisesti osa ajoneuvon työskentelyä. Hyvin viritetyn ajoneuvomoottorin humina on upea ääni. Renkaiden kulutuspinnat nurisevat tietä vasten, tuuli huutaa peilien, muovikappaleiden ja kojelaudan kappaleiden ympäri
LCD HD44780 I2c: n käyttö: 5 vaihetta
LCD HD44780 I2c: n käyttö: Tässä opetusohjelmassa näytän sinulle, kuinka liittää nestekidenäyttö I2C -laitteeseen, jossa on vain 4 nastaa nestekidenäytön ohjaamiseen ja käyttöön. Aloitetaan siis