Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hej
Bra hälsningar.. !!
Jag (Somanshu Choudhary) på uppdrag av Dcube tech -satsningar som kommer att styra reläer via I2C -protokoll med Arduino nano och MCP23008.
Steg 1: Översikt
- MCP23X08-enheten ger 8-bitars parallell I/O-expansion för allmänna ändamål för I2C-buss- eller SPI-applikationer.
- MCP23X08 består av flera 8-bitars konfigurationsregister för val av input, output och polaritet. Systemmastern kan aktivera I/Os som antingen ingångar eller utgångar genom att skriva I/O -konfigurationsbitarna. Data för varje ingång eller utgång lagras i motsvarande in- eller utdataregister. Polariteten i Input Port -registret kan inverteras med Polarity Inversion -registret. Alla register kan läsas av systemmästaren.
- DATABLADSLÄNK:
Steg 2: Vad du behöver / länkar
1. Arduino Nano LINK:
2. skärm för Arduino Nano LINK:
3. USB -kabel typ A till mikro typ B 6 fot lång
4. I²C kabel LÄNK:
5. Åtta SPDT I²C -styrda reläer
6. Adapter LINK:
Steg 3: Kretsdiagram
Steg 4: Programmering - I
- I denna kod använder jag Function Programming Paradigm
- Jag använde olika flikar för funktionsdefinition och funktionssamtal
KOD UNDER TABELL q:
// Enkel funktionskod
#include void setup ()
{
// I2C -adress för MCP23008
#define MCP_ADDR 0x20
// Gå med I2C Bus som master
Wire.begin ();
// Starta seriell kommunikation och ange överföringshastighet
Serial.begin (9600);
// Börja överföringen med en given enhet på I2C -bussen
Wire.beginTransmission (MCP_ADDR);
// Välj IODIR - I/O DIRECTION REGISTER register
Wire.write (0x00);
// Välj önskad operation (utgång)
Wire.write (0x00);
// Välj KONFIGURATION register
Wire.write (0x05);
// Välj önskad operation
Wire.write (0x0E);
// avsluta överföring
Wire.endTransmission ();
}
void loop ()
{
a1_on ();
fördröjning (1000);
a1_off ();
fördröjning (1000);
a2_on ();
fördröjning (1000);
a2_off ();
fördröjning (1000);
a3_on ();
fördröjning (1000);
a3_off ();
fördröjning (1000);
a4_on ();
fördröjning (1000);
a4_off ();
fördröjning (1000);
a5_on ();
fördröjning (1000);
a5_off ();
fördröjning (1000);
a6_on ();
fördröjning (1000);
a6_off ();
fördröjning (1000);
a7_on ();
fördröjning (1000);
a7_off ();
fördröjning (1000);
a8_on ();
fördröjning (1000);
a8_off ();
}
KOD UNDER TABELL q1:
// Denna kod är till och från relä 1 ombord
ogiltigt a1_on () {
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a1_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
KOD UNDER TABELL q2:
// Denna kod är till och från relä 2 ombord
ogiltigt a2_on () {
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a2_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
KOD UNDER TABELL q3: // Denna kod är till och från relä 3 ombord
ogiltigt a3_on ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a3_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
Steg 5: Programmering - II
KOD UNDER TABELL q4:
// Denna kod är till och från relä 4 ombord
ogiltigt a4_on ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a4_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
KOD UNDER TABELL q5:
// Denna kod är till och från relä 5 ombord
ogiltigt a5_on ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a5_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
KOD UNDER TABELL q6: // Denna kod är till och från relä 6 ombord
ogiltigt a6_on ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a6_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
KOD UNDER TABELL q7: // Denna kod är till och från relä 7 ombord
ogiltigt a7_on () {
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a7_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
KOD UNDER TABELL q8: // Denna kod är till och från relä 8 ombord
ogiltigt a8_on () {
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
ogiltigt a8_off ()
{
// Börja överföringen
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
fördröjning (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Utmatning till skärmen
Serial.print ("GPIO -värde:");
Serial.println (GPIO, BIN);
}
Steg 6: Video
För ytterligare frågor Besök gärna vår webbplats:
www.dcubetechnologies.com