Оглавление:

Применение MCP-23008 с использованием релейного интерфейса (I2C) :: 6 шагов
Применение MCP-23008 с использованием релейного интерфейса (I2C) :: 6 шагов

Видео: Применение MCP-23008 с использованием релейного интерфейса (I2C) :: 6 шагов

Видео: Применение MCP-23008 с использованием релейного интерфейса (I2C) :: 6 шагов
Видео: Сборка многоканального I2C и ModBus реле на плате LavriBoard V7.1 2024, Июль
Anonim
Применение MCP-23008 с использованием релейного интерфейса (I2C)
Применение MCP-23008 с использованием релейного интерфейса (I2C)

Привет

Добрый день.. !!

Я (Соманшу Чоудхари) от имени технологического предприятия Dcube собираюсь управлять реле по протоколу I2C с использованием Arduino nano и MCP23008.

Шаг 1. Обзор

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

Шаг 2. Что вам нужно / Ссылки

Что вам нужно / Ссылки
Что вам нужно / Ссылки

1. ссылка на Arduino Nano:

2. щит для Arduino Nano LINK:

3. USB-кабель типа A - Micro типа B длиной 6 футов

4. Кабельное соединение I²C:

5. Восемь контролируемых реле SPDT I²C

6. ссылка на адаптер:

Шаг 3: принципиальная схема

Принципиальная электрическая схема
Принципиальная электрическая схема
Принципиальная электрическая схема
Принципиальная электрическая схема

Шаг 4: Программирование - I

Программирование - I
Программирование - I
Программирование - I
Программирование - I
  • В этом коде я использую Парадигму программирования функций
  • Я использовал разные вкладки для определения функций и вызова функций

КОД НА ВКЛАДКЕ q:

// Код вызова простой функции

#include void setup ()

{

// I2C-адрес MCP23008

#define MCP_ADDR 0x20

// Присоединяемся к шине I2C как мастер

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

}

пустой цикл ()

{

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);

}

недействительным 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);

}

недействительным 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 на плате.

недействительным 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);

}

недействительным 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 на плате

недействительным 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);

}

недействительным 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 на плате

недействительным 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);

}

недействительным 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 на плате

недействительным 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);

}

недействительным 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);

}

недействительным 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);

}

недействительным 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

Рекомендуемые: