Съдържание:

Приложение на MCP-23008 с помощта на релеен интерфейс (I2C) :: 6 стъпки
Приложение на MCP-23008 с помощта на релеен интерфейс (I2C) :: 6 стъпки

Видео: Приложение на MCP-23008 с помощта на релеен интерфейс (I2C) :: 6 стъпки

Видео: Приложение на MCP-23008 с помощта на релеен интерфейс (I2C) :: 6 стъпки
Видео: Atom Hydrogen - универсальный контроллер умного дома, обзор, возможности, ESP Home, Home Assistant 2024, Ноември
Anonim
Приложение на MCP-23008 с помощта на релеен интерфейс (I2C)
Приложение на MCP-23008 с помощта на релеен интерфейс (I2C)

Здравейте

Добър поздрав.. !!

Аз (Somanshu Choudhary) от името на Dcube tech ventures ще контролирам релета чрез I2C протокол, използвайки Arduino nano и MCP23008.

Стъпка 1: Общ преглед

Общ преглед
Общ преглед
  • Устройството MCP23X08 осигурява 8-битово, паралелно I/O разширение с общо предназначение за I2C шина или SPI приложения.
  • MCP23X08 се състои от множество 8-битови конфигурационни регистри за избор на вход, изход и полярност. Системният капитан може да активира входовете/изходите като входове или изходи, като записва битовете за конфигурация на входа/изхода. Данните за всеки вход или изход се съхраняват в съответния входен или изходен регистър. Полярността на регистъра на входния порт може да бъде обърната с регистъра за инверсия на полярността. Всички регистри могат да бъдат прочетени от системния капитан.
  • ВРЪЗКА С ДАННИТЕ:

Стъпка 2: Какво ви трябва / Връзки

Какво ви трябва / Връзки
Какво ви трябва / Връзки

1. Arduino Nano ВРЪЗКА:

2. Щит за Arduino Nano ВРЪЗКА:

3. USB кабел тип A до микро тип B 6 фута дълги

4. I²C кабелна връзка:

5. Осем SPDT I²C контролирани релета

6. ВРЪЗКА на адаптера:

Стъпка 3: Електрическа схема

Електрическа схема
Електрическа схема
Електрическа схема
Електрическа схема

Стъпка 4: Програмиране - I

Програмиране - аз
Програмиране - аз
Програмиране - аз
Програмиране - аз
  • В този код използвам парадигма за функционално програмиране
  • Използвах различни раздели за дефиниране на функции и извикване на функции

КОД КЪМ РАЗДЕЛ q:

// Прост код за извикване на функция

#include void setup ()

{

// I2C адрес на MCP23008

#дефинирайте MCP_ADDR 0x20

// Присъединете се към I2C Bus като главен

Wire.begin ();

// Започнете серийна комуникация и задайте скорост на предаване

Serial.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 ();

}

void loop ()

{

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 на борда

void a1_on () {

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

void a1_off ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

КОД КЪМ РАЗДЕЛ q2:

// Този код е за включване и изключване на реле 2 на борда

void a2_on () {

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

void a2_off ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

КОД КЪМ РАЗДЕЛ q3: // Този код е за включване и изключване на реле 3 на борда

void a3_on ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

void a3_off ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

Стъпка 5: Програмиране - II

Програмиране - II
Програмиране - II

КОД КЪМ РАЗДЕЛ q4:

// Този код е за включване и изключване на реле 4 на борда

void a4_on ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

void a4_off ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

КОД КЪМ РАЗДЕЛ q5:

// Този код е за включване и изключване на реле 5 на борда

void a5_on ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x10);

забавяне (1800);

Wire.requestFrom (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);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

КОД КЪМ РАЗДЕЛ q6: // Този код е за включване и изключване на реле 6 на борда

void a6_on ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

void a6_off ()

{

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

забавяне (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

КОД КЪМ РАЗДЕЛ q7: // Този код е за включване и изключване на реле 7 на борда

void a7_on () {

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

забавяне (1800);

Wire.requestFrom (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);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

КОД КЪМ РАЗДЕЛ q8: // Този код е за включване и изключване на реле 8 на борда

void a8_on () {

// Започнете предаването

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

забавяне (1800);

Wire.requestFrom (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);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Извеждане на екрана

Serial.print ("GPIO стойност:");

Serial.println (GPIO, BIN);

}

Стъпка 6: Видео

За допълнителни въпроси Чувствайте се свободни да посетите нашия сайт:

www.dcubetechnologies.com

Препоръчано: