Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Sveiki
Sveiki.. !!
Aš (Somanshu Choudhary) „Dcube“technologijų įmonių vardu, ketinančių valdyti relės per I2C protokolą, naudojant „Arduino nano“ir MCP23008.
1 žingsnis: apžvalga
- MCP23X08 įrenginys suteikia 8 bitų bendrosios paskirties lygiagretų įvesties/išvesties išplėtimą I2C magistralės ar SPI programoms.
- MCP23X08 sudaro keli 8 bitų konfigūracijos registrai, skirti įėjimui, išėjimui ir poliškumui pasirinkti. Sistemos valdytojas gali įjungti įvestis/išvestis kaip įvestis arba išvestis, rašydamas įvesties/išvesties konfigūracijos bitus. Kiekvienos įvesties ar išvesties duomenys saugomi atitinkamame įvesties arba išvesties registre. Įvesties prievado registro poliškumą galima apversti naudojant poliškumo inversijos registrą. Sistemos meistras gali perskaityti visus registrus.
- DUOMENŲ LAPO NUORODA:
2 žingsnis: ko jums reikia / nuorodos
1. „Arduino Nano“nuoroda:
2. „Arduino Nano LINK“skydas:
3. USB kabelis nuo A tipo iki mikro tipo B 6 pėdų ilgio
4. I²C kabelis LINK:
5. Aštuonios SPDT I²C valdomos relės
6. Adapterio nuoroda:
3 žingsnis: grandinės schema
4 žingsnis: programavimas - I
- Šiame kode naudoju funkcijų programavimo paradigmą
- Funkcijų apibrėžimui ir funkcijų iškvietimui naudoju skirtingus skirtukus
KODAS PAGAL TABELĮ q:
// Paprastos funkcijos skambinimo kodas
#include void setup ()
{
// MCP23008 I2C adresas
#define MCP_ADDR 0x20
// Prisijunkite prie „I2C Bus“kaip pagrindinis
Wire.begin ();
// Pradėkite nuoseklųjį ryšį ir nustatykite duomenų perdavimo spartą
Serial.begin (9600);
// Pradėkite perdavimą naudodami nurodytą įrenginį I2C magistralėje
Wire.beginTransmission (MCP_ADDR);
// Pasirinkite registrą IODIR - I/O DIRECTION REGISTER
Wire.write (0x00);
// Pasirinkite reikiamą operaciją (išvestis)
Wire.write (0x00);
// Pasirinkite CONFIGURATION register
Wire.write (0x05);
// Pasirinkite reikiamą operaciją
Wire.write (0x0E);
// baigti perdavimą
Wire.endTransmission ();
}
tuštumos kilpa ()
{
a1_on ();
vėlavimas (1000);
a1_off ();
vėlavimas (1000);
a2_on ();
vėlavimas (1000);
a2_off ();
vėlavimas (1000);
a3_on ();
vėlavimas (1000);
a3_off ();
vėlavimas (1000);
a4_on ();
vėlavimas (1000);
a4_off ();
vėlavimas (1000);
a5_on ();
vėlavimas (1000);
a5_off ();
vėlavimas (1000);
a6_on ();
vėlavimas (1000);
a6_off ();
vėlavimas (1000);
a7_on ();
vėlavimas (1000);
a7_off ();
vėlavimas (1000);
a8_on ();
vėlavimas (1000);
a8_off ();
}
KODAS PO TAB Q1:
// Šis kodas skirtas įjungti ir išjungti 1 relę laive
void a1_on () {
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a1_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
KODAS PO TAB q2:
// Šis kodas skirtas įjungti ir išjungti 2 relę laive
void a2_on () {
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a2_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
KODAS PAGAL TABELĮ q3: // Šis kodas skirtas įjungti ir išjungti 3 relę
void a3_on ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a3_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
5 žingsnis: programavimas - II
KODAS PO TAB 4 q:
// Šis kodas skirtas įjungti ir išjungti 4 relę laive
void a4_on ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a4_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
KODAS PO TAB5 q5:
// Šis kodas skirtas įjungti ir išjungti 5 relę laive
void a5_on ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a5_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
KODAS PAGAL TABELĮ q6: // Šis kodas skirtas įjungti ir išjungti 6 relę
void a6_on ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a6_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
KODAS PAGAL TABELĮ q7: // Šis kodas skirtas įjungti ir išjungti 7 relę
void a7_on () {
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a7_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
KODAS PAGAL TABELĮ q8: // Šis kodas skirtas įjungti ir išjungti 8 relę
void a8_on () {
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
void a8_off ()
{
// Pradėti perdavimą
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
vėlavimas (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Išvestis į ekraną
Serial.print ("GPIO reikšmė:");
Serial.println (GPIO, BIN);
}
6 žingsnis: vaizdo įrašas
Dėl papildomų klausimų nedvejodami apsilankykite mūsų svetainėje:
www.dcubetechnologies.com