Mündəricat:

Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi :: 6 addım
Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi :: 6 addım

Video: Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi :: 6 addım

Video: Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi :: 6 addım
Video: Atom Hydrogen - универсальный контроллер умного дома, обзор, возможности, ESP Home, Home Assistant 2024, Iyul
Anonim
Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi
Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi

Salam

Xoş Salamlar.. !!

Mən (Somanshu Choudhary), Arduino nano və MCP23008 istifadə edərək I2C protokolu ilə Röleləri idarə edəcək Dcube texnologiya müəssisələri adından.

Addım 1: Baxış

Baxış
Baxış
  • MCP23X08 cihazı, I2C avtobus və ya SPI tətbiqləri üçün 8 bitlik, ümumi təyinatlı, paralel I/O genişləndirməsini təmin edir.
  • MCP23X08, giriş, çıxış və polarite seçimi üçün çoxsaylı 8 bitlik konfiqurasiya qeydlərindən ibarətdir. Sistem ustası, I/O konfiqurasiya bitlərini yazaraq G/Ç -ni ya giriş, ya da çıxış olaraq təmin edə bilər. Hər bir giriş və ya çıxış üçün məlumatlar müvafiq Giriş və ya Çıxış reyestrində saxlanılır. Giriş Limanı reyestrinin polaritesi Polarite Ters çevrilmə reyestri ilə tərsinə çevrilə bilər. Bütün qeydləri sistem ustası oxuya bilər.
  • DATASHEET LINK:

Addım 2: Lazım olanlar / Bağlantılar

Lazım olanlar / Bağlantılar
Lazım olanlar / Bağlantılar

1. Arduino Nano LINK:

2. Arduino Nano LINK üçün qalxan:

3. USB Kabel Tipi A - Mikro Tip B 6 Ayaq Uzunluğunda

4. I²C Kabel Bağlantısı:

5. Səkkiz SPDT I²C Nəzarətli Röle

6. Adapter LINK:

Addım 3: Dövrə Şeması

Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı

Addım 4: Proqramlaşdırma - I

Proqramlaşdırma - I
Proqramlaşdırma - I
Proqramlaşdırma - I
Proqramlaşdırma - I
  • Bu kodda Funksional Proqramlaşdırma Paradiqmasını istifadə edirəm
  • Funksiyaların təyin edilməsi və funksiyaların çağırılması üçün fərqli nişanlardan istifadə etdim

SABT ALTINDA QOD:

// Sadə funksiya zəng kodu

#boşluq qurulmasını daxil et ()

{

// MCP23008 -in I2C ünvanı

#MCP_ADDR 0x20 təyin edin

// Master olaraq I2C Avtobusuna qoşulun

Wire.begin ();

// Serial ünsiyyətə başlayın və ötürmə sürətini təyin edin

Serial.begin (9600);

// I2C avtobusunda verilən cihazla ötürməyə başlayın

Wire.beginTransmission (MCP_ADDR);

// IODIR - I/O DIRECTION REGISTER qeydiyyatını seçin

Wire.write (0x00);

// Lazımi əməliyyatı seçin (çıxış)

Wire.write (0x00);

// Konfiqurasiya qeydini seçin

Wire.write (0x05);

// Lazımi əməliyyatı seçin

Wire.write (0x0E);

// ötürməni sona çatdır

Wire.endTransmission ();

}

boşluq döngəsi ()

{

a1_on ();

gecikmə (1000);

a1_off ();

gecikmə (1000);

a2_on ();

gecikmə (1000);

a2_off ();

gecikmə (1000);

a3_on ();

gecikmə (1000);

a3_off ();

gecikmə (1000);

a4_on ();

gecikmə (1000);

a4_off ();

gecikmə (1000);

a5_on ();

gecikmə (1000);

a5_off ();

gecikmə (1000);

a6_on ();

gecikmə (1000);

a6_off ();

gecikmə (1000);

a7_on ();

gecikmə (1000);

a7_off ();

gecikmə (1000);

a8_on ();

gecikmə (1000);

a8_off ();

}

TAB Q1 ALTINDA QOD:

// Bu kod, gəmidə 1 -ci röleyi açmaq və söndürmək üçündür

void a1_on () {

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boşluq a1_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

TAB q2 altındakı kod:

// Bu kod, gəmidə 2 -ci röleyi açmaq və söndürmək üçündür

boşluq a2_on () {

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boşluq a2_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

SABAQ ALTINDAKİ Q3: // Bu kod gəmidə 3 -cü röleyi açmaq və söndürmək üçündür

boşluq a3_on ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

void a3_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

Addım 5: Proqramlaşdırma - II

Proqramlaşdırma - II
Proqramlaşdırma - II

TAB q4 altındakı kod:

// Bu kod, gəmidə 4 -cü röleyi açmaq və söndürmək üçündür

boş a4_on ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boş a4_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

TAB q5 altındakı kod:

// Bu kod, gəmidə 5 -ci röleyi açmaq və söndürmək üçündür

boşluq a5_on ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x10);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boşluq a5_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

Q6 SABİFİNİN ALTINDAKİ KOD: // Bu kod, gəmidəki 6 -cı röleyi açmaq və söndürmək üçündür

boşluq a6_on ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boş a6_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

SABAQ ALTINDAKİ Q7: // Bu kod, gəmidəki 7 -ci röleyi açmaq və söndürmək üçündür

void a7_on () {

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boşluq a7_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

TAB Q8 ALTINDAKİ Q8: // Bu kod, gəmidəki 8 -ci röleyi açmaq və söndürmək üçündür

boşluq a8_on () {

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

boşluq a8_off ()

{

// Göndərməyə başlayın

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

gecikmə (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Ekrana çıxış

Serial.print ("GPIO dəyəri:");

Serial.println (GPIO, BIN);

}

Addım 6: Video

Əlavə suallarınız üçün saytımızı ziyarət etməkdən çekinmeyin:

www.dcubetechnologies.com

Tövsiyə: