Innehållsförteckning:
- Steg 1: Översikt
- Steg 2: Vad du behöver / länkar
- Steg 3: Kretsdiagram
- Steg 4: Programmering - I
- Steg 5: Programmering - II
- Steg 6: Video
Video: Tillämpning av MCP-23008 med relägränssnitt (I2C) :: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
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
Rekommenderad:
En tillämpning av en utdragbar knapp med vibrationsåterkoppling: 7 steg (med bilder)
En tillämpning av en utdragbar knapp med vibrationsåterkoppling: I den här självstudien ska vi först visa dig hur du använder en Arduino Uno för att styra en vibrationsmotor via en förlängd knapp. De flesta självstudier om tryckknappar involverar knappen på det fysiska brödbrädet, medan i den här självstudien har knappen
I2C / IIC LCD -skärm - Använd en SPI LCD till I2C LCD -skärmen Använd SPI till IIC -modulen med Arduino: 5 steg
I2C / IIC LCD -skärm | Använd en SPI LCD till I2C LCD -skärmen Använda SPI till IIC -modulen med Arduino: Hej killar eftersom en vanlig SPI LCD 1602 har för många trådar att ansluta så det är mycket svårt att ansluta den till arduino men det finns en modul på marknaden som kan konvertera SPI -display till IIC -display så då behöver du bara ansluta 4 ledningar
I2C / IIC LCD -skärm - Konvertera en SPI LCD till I2C LCD Display: 5 steg
I2C / IIC LCD -skärm | Konvertera en SPI LCD -skärm till I2C LCD -skärm: Användning av spi -lcd -skärm behöver för många anslutningar att göra vilket är riktigt svårt att göra så jag hittade en modul som kan konvertera i2c lcd till spi lcd så låt oss komma igång
Grafik på en SSD1306 I2C OLED 128x64 -skärm med CircuitPython med en Itsybitsy M4 Express: 13 steg (med bilder)
Grafik på en SSD1306 I2C OLED 128x64 -skärm med CircuitPython med en Itsybitsy M4 Express: SSD1306 OLED -skärmen är en liten (0,96 "), billig, allmänt tillgänglig, I2C, svartvit grafisk skärm med 128x64 pixlar, som är lätt att koppla ihop (endast 4 ledningar) till mikroprocessorutvecklingskort som en Raspberry Pi, Arduino eller
Character LCD I2c Adapter (I2c Connection Exempel): 12 steg (med bilder)
Character LCD I2c Adapter (I2c Connection Exempel): Jag gör ett anslutningsschema för en teckenvisning i2c -adapter. Kontrollera uppdateringarna på min webbplats. Nu lägger jag till olso ett kopplingsschema för att använda originalbiblioteket inte mitt forked.LiquidCrystal Arduino -bibliotek för karaktärens LCD -skärmar, gaffelprojekt