Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Ahoj
S pozdravem.. !!
Já (Somanshu Choudhary) jménem Dcube tech ventures jdu ovládat relé pomocí protokolu I2C pomocí Arduino nano a MCP23008.
Krok 1: Přehled
- Zařízení MCP23X08 poskytuje 8bitové, paralelní rozšíření I/O pro obecné účely pro sběrnici I2C nebo aplikace SPI.
- MCP23X08 se skládá z více 8bitových konfiguračních registrů pro výběr vstupu, výstupu a polarity. Master systému může povolit I/O jako vstupy nebo výstupy zapsáním konfiguračních bitů I/O. Data pro každý vstup nebo výstup jsou uložena v odpovídajícím vstupním nebo výstupním registru. Polaritu registru vstupního portu lze invertovat pomocí registru inverze polarity. Všechny registry mohou být přečteny správcem systému.
- ODKAZ NA DATOVÝ LIST:
Krok 2: Co potřebujete / odkazy
1. Arduino Nano ODKAZ:
2. Štít pro Arduino Nano LINK:
3. Kabel USB typu A na mikro typu B dlouhý 6 stop
4. I²C Cable LINK:
5. Osm řízených relé SPDT I²C
6. Adaptér LINK:
Krok 3: Schéma zapojení
Krok 4: Programování - I
- V tomto kódu používám Paradigma programování funkcí
- Pro definici funkcí a volání funkcí jsem použil různé karty
KÓD POD TABULKOU q:
// Volání kódu jednoduché funkce
#include void setup ()
{
// I2C adresa MCP23008
#define MCP_ADDR 0x20
// Připojte se k I2C Bus jako hlavní
Wire.begin ();
// Zahájení sériové komunikace a nastavení přenosové rychlosti
Serial.begin (9600);
// Zahájení přenosu s daným zařízením na sběrnici I2C
Wire.beginTransmission (MCP_ADDR);
// Vyberte registr IODIR - I/O DIRECTION REGISTER
Wire.write (0x00);
// Vyberte požadovanou operaci (výstup)
Wire.write (0x00);
// Vyberte registr KONFIGURACE
Wire.write (0x05);
// Vyberte požadovanou operaci
Wire.write (0x0E);
// ukončení přenosu
Wire.endTransmission ();
}
prázdná smyčka ()
{
a1_on ();
zpoždění (1000);
a1_off ();
zpoždění (1000);
a2_on ();
zpoždění (1000);
a2_off ();
zpoždění (1000);
a3_on ();
zpoždění (1000);
a3_off ();
zpoždění (1000);
a4_on ();
zpoždění (1000);
a4_off ();
zpoždění (1000);
a5_on ();
zpoždění (1000);
a5_off ();
zpoždění (1000);
a6_on ();
zpoždění (1000);
a6_off ();
zpoždění (1000);
a7_on ();
zpoždění (1000);
a7_off ();
zpoždění (1000);
a8_on ();
zpoždění (1000);
a8_off ();
}
KÓD POD TABULKOU q1:
// Tento kód slouží k zapnutí a vypnutí relé 1 na desce
neplatné a1_on () {
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a1_off ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
KÓD POD TABULKOU q2:
// Tento kód slouží k zapnutí a vypnutí relé 2 na desce
neplatné a2_on () {
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a2_off ()
{
// Zahajte přenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
KÓD POD KARTOU q3: // Tento kód slouží k zapnutí a vypnutí relé 3 na desce
neplatné a3_on ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a3_off ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
Krok 5: Programování - II
KÓD POD TABULKOU q4:
// Tento kód slouží k zapnutí a vypnutí relé 4 na desce
neplatné a4_on ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a4_off ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
KÓD POD TABULKOU q5:
// Tento kód slouží k zapnutí a vypnutí relé 5 na desce
neplatné a5_on ()
{
// Zahajte přenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a5_off ()
{
// Zahajte přenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
KÓD POD KARTOU q6: // Tento kód slouží k zapnutí a vypnutí relé 6 na desce
neplatné a6_on ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a6_off ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
KÓD POD KARTOU q7: // Tento kód slouží k zapnutí a vypnutí relé 7 na desce
neplatné a7_on () {
// Zahajte přenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a7_off ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
KÓD POD KARTOU q8: // Tento kód slouží k zapnutí a vypnutí relé 8 na desce
neplatné a8_on () {
// Zahajte přenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
neplatné a8_off ()
{
// Zahájení přenosu
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zpoždění (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Výstup na obrazovku
Serial.print ("hodnota GPIO:");
Serial.println (GPIO, BIN);
}
Krok 6: Video
Pro další dotazy neváhejte navštívit naše stránky:
www.dcubetechnologies.com