Turinys:
- 1 žingsnis: apžvalga
- 2 žingsnis: ko jums reikia / nuorodos
- 3 žingsnis: grandinės schema
- 4 žingsnis: programavimas - I
- 5 žingsnis: programavimas - II
- 6 žingsnis: vaizdo įrašas
Video: MCP-23008 taikymas naudojant relės sąsają (I2C) :: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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
Rekomenduojamas:
Darbo su „I2C“jutiklio sąsaja pradžia ?? - Sąsaja su jūsų MMA8451 naudojant ESP32: 8 žingsniai
Darbo su „I2C“jutiklio sąsaja pradžia ?? - Sąsaja su jūsų MMA8451 naudojant ESP32: Šioje pamokoje sužinosite viską apie tai, kaip paleisti, prijungti ir gauti I2C įrenginį (akselerometrą), dirbantį su valdikliu (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsają.: 6 žingsniai
Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsajas: susiduriame su įvairiais projektais, kuriems reikia stebėti temperatūrą, slėgį ir drėgmę. Taigi mes suprantame, kad šie parametrai iš tikrųjų vaidina svarbų vaidmenį įvertinant sistemos darbo efektyvumą esant skirtingoms atmosferos sąlygoms
Namų automatizavimas naudojant „Raspberry Pi“naudojant relės lentą: 7 žingsniai
Namų automatizavimas naudojant „Raspberry Pi“naudojant relės lentą: Dauguma žmonių nori didelio komforto, tačiau už priimtiną kainą. Jaučiamės tingūs apšviesti namus kiekvieną vakarą, kai saulė nusileidžia, ir kitą rytą, vėl išjungdami šviesą arba įjungdami/išjungdami oro kondicionierių/ventiliatorių/šildytuvus
Išplėstinio mygtuko su grįžtamuoju ryšiu taikymas: 7 žingsniai (su paveikslėliais)
Išplėstinio mygtuko su grįžtamuoju ryšiu taikymas: Šioje pamokoje pirmiausia parodysime, kaip naudoti „Arduino Uno“vibraciniam varikliui valdyti naudojant išplėstinį mygtuką. Dauguma mokomųjų mygtukų su mygtukais apima fizinės duonos lentos mygtuką, tuo tarpu šioje pamokoje mygtukas turi būti
8 relės valdymas naudojant „NodeMCU“ir IR imtuvą naudojant „WiFi“ir IR nuotolinio valdymo pultą bei „Android“programą: 5 žingsniai (su paveikslėliais)
8 relės valdymas naudojant „NodeMCU“ir IR imtuvą naudojant „WiFi“ir IR nuotolinio valdymo pultą bei „Android“programą: 8 relinių jungiklių valdymas naudojant „nodemcu“ir „IR“imtuvą per „Wi -Fi“ir „Android“programą. Nuotolinio valdymo pultas veikia nepriklausomai nuo „Wi -Fi“ryšio. ČIA ATNAUJINTOS VERSIONAS ČIA