Სარჩევი:

MCP-23008- ის გამოყენება სარელეო ინტერფეისის (I2C) :: 6 ნაბიჯი
MCP-23008- ის გამოყენება სარელეო ინტერფეისის (I2C) :: 6 ნაბიჯი

ვიდეო: MCP-23008- ის გამოყენება სარელეო ინტერფეისის (I2C) :: 6 ნაბიჯი

ვიდეო: MCP-23008- ის გამოყენება სარელეო ინტერფეისის (I2C) :: 6 ნაბიჯი
ვიდეო: Using MCP23008 port-expanders with Arduino Nano Every to drive 3 banks of 8 LEDs 2024, ნოემბერი
Anonim
MCP-23008- ის გამოყენება სარელეო ინტერფეისის (I2C) გამოყენებით
MCP-23008- ის გამოყენება სარელეო ინტერფეისის (I2C) გამოყენებით

გამარჯობა

კარგი მისალმებები.. !!

მე (სომანშუ ჩუდჰარი) Dcube– ის ტექნიკური საწარმოების სახელით ვაპირებ აკონტროლებდეს რელეებს I2C პროტოკოლით Arduino nano– ს და MCP23008– ის გამოყენებით.

ნაბიჯი 1: მიმოხილვა

მიმოხილვა
მიმოხილვა
  • MCP23X08 მოწყობილობა უზრუნველყოფს 8 ბიტიან, ზოგადი დანიშნულების, პარალელურ I/O გაფართოებას I2C ავტობუსის ან SPI პროგრამებისთვის.
  • MCP23X08 შედგება რამოდენიმე 8 ბიტიანი კონფიგურაციის რეგისტრისაგან შეყვანის, გამომავალი და პოლარობის შესარჩევად. სისტემის ოსტატს შეუძლია შეაყენოს I/O შესასვლელებად ან გამოსასვლელად I/O კონფიგურაციის ბიტების ჩაწერით. თითოეული შეყვანის ან გამომავლის მონაცემები ინახება შესაბამის შეყვანის ან გამოყვანის რეესტრში. შეყვანის პორტის რეგისტრის პოლარობა შეიძლება გადაბრუნდეს პოლარობის ინვერსიის რეგისტრით. ყველა რეგისტრის წაკითხვა შესაძლებელია სისტემის ოსტატის მიერ.
  • მონაცემთა ბმული:

ნაბიჯი 2: რაც გჭირდებათ / ბმულები

რაც გჭირდებათ / ბმულები
რაც გჭირდებათ / ბმულები

1. არდუინო ნანო ბმული:

2. ფარი არდუინო ნანოს ბმულისთვის:

3. USB კაბელი ტიპი A მიკრო ტიპი B 6 ფეხზე გრძელი

4. I²C საკაბელო ბმული:

5. რვა SPDT I²C კონტროლირებადი რელე

6. ადაპტერი ბმული:

ნაბიჯი 3: სქემის დიაგრამა

Წრიული დიაგრამა
Წრიული დიაგრამა
Წრიული დიაგრამა
Წრიული დიაგრამა

ნაბიჯი 4: პროგრამირება - მე

პროგრამირება - ი
პროგრამირება - ი
პროგრამირება - ი
პროგრამირება - ი
  • ამ კოდში მე ვიყენებ ფუნქციის პროგრამირების პარადიგმას
  • მე გამოვიყენე სხვადასხვა ჩანართი ფუნქციების განსაზღვრისა და ფუნქციის გამოძახებისთვის

კოდი ცხრილის ქვეშ q:

// მარტივი ფუნქციის გამოძახების კოდი

#მოიცავს ბათილად დაყენებას ()

{

// MCP23008 I2C მისამართი

#განსაზღვრეთ MCP_ADDR 0x20

// შეუერთდით I2C ავტობუსს, როგორც ოსტატი

Wire.begin ();

// დაიწყეთ სერიული კომუნიკაცია და დააყენეთ ბოდის მაჩვენებელი

სერიული.დაწყება (9600);

// დაიწყეთ გადაცემა მოცემული მოწყობილობით I2C ავტობუსზე

Wire.beginTransmission (MCP_ADDR);

// აირჩიეთ IODIR - I/O DIRECTION REGISTER რეგისტრი

Wire.write (0x00);

// აირჩიეთ საჭირო ოპერაცია (გამომავალი)

Wire.write (0x00);

// აირჩიეთ კონფიგურაციის რეგისტრი

Wire.write (0x05);

// აირჩიეთ საჭირო ოპერაცია

Wire.write (0x0E);

// გადაცემის დასრულება

Wire.endTransmission ();

}

ბათილი მარყუჟი ()

{

a1_on ();

დაგვიანება (1000);

a1_off ();

დაგვიანება (1000);

a2_on ();

დაგვიანება (1000);

a2_off ();

დაგვიანება (1000);

a3_on ();

დაგვიანება (1000);

a3_off ();

დაგვიანება (1000);

a4_on ();

დაგვიანება (1000);

a4_off ();

დაგვიანება (1000);

a5_on ();

დაგვიანება (1000);

a5_off ();

დაგვიანება (1000);

a6_on ();

დაგვიანება (1000);

a6_off ();

დაგვიანება (1000);

a7_on ();

დაგვიანება (1000);

a7_off ();

დაგვიანება (1000);

a8_on ();

დაგვიანება (1000);

a8_off ();

}

კოდი ცხრილის ქვეშ q1:

// ეს კოდი არის ბორტზე 1 სარელეო ჩართვაზე და გამორთვაზე

ბათილია a1_on () {

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ბათილია a1_off ()

{

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

კოდი ცხრილის ქვეშ q2:

// ეს კოდი არის ჩართული და გამორთული რელე 2 ბორტზე

ბათილია a2_on () {

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ბათილია a2_off ()

{

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

კოდი ცხრილის ქვემოთ q3: // ეს კოდი არის ბორტზე რელე 3 -ის ჩართვა და გამორთვა

ბათილია a3_on ()

{

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ბათილია a3_off ()

{

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ნაბიჯი 5: პროგრამირება - II

პროგრამირება - II
პროგრამირება - II

კოდი ცხრილის ქვეშ q4:

// ეს კოდი არის ბორტზე რელე 4 -ის ჩართვა და გამორთვა

ბათილია a4_on ()

{

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ბათილია a4_off ()

{

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

კოდი ცხრილის ქვეშ q5:

// ეს კოდი არის ბორტზე რელე 5 -ის ჩართვა და გამორთვა

ბათილია a5_on ()

{

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x10);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

void a5_off ()

{

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

კოდი ცხრილის ქვეშ q6: // ეს კოდი არის ბორტზე რელე 6 -ის ჩართვა და გამორთვა

ბათილია a6_on ()

{

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ბათილია a6_off ()

{

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

კოდი ცხრილის ქვეშ q7: // ეს კოდი არის რელე 7 ჩართული და გამორთული ბორტზე

ბათილია a7_on () {

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

void a7_off ()

{

// გადაცემის დაწყება

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

კოდი ცხრილის ქვეშ q8: // ეს კოდი არის ბორტზე რელე 8 -ის ჩართვა და გამორთვა

ბათილია a8_on () {

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

void a8_off ()

{

// დაიწყეთ გადაცემა

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

დაგვიანება (1800);

მავთული. მოთხოვნა (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// გამოტანა ეკრანზე

Serial.print ("GPIO მნიშვნელობა:");

Serial.println (GPIO, BIN);

}

ნაბიჯი 6: ვიდეო

დამატებითი კითხვებისთვის შეგიძლიათ ეწვიოთ ჩვენს საიტს:

www.dcubetechnologies.com

გირჩევთ: