
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04

Привет
Добрый день.. !!
Я (Соманшу Чоудхари) от имени технологического предприятия 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


- В этом коде я использую Парадигму программирования функций
- Я использовал разные вкладки для определения функций и вызова функций
КОД НА ВКЛАДКЕ 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

КОД НА ВКЛАДКЕ 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
Рекомендуемые:
Система умного дома Alexa с использованием релейного модуля NodeMCU: 10 шагов

Система умного дома Alexa с использованием модуля реле NodeMCU: в этом проекте IoT я создал систему автоматизации умного дома Alexa с использованием NodeMCU ESP8266 & Релейный модуль. Вы можете легко управлять светом, вентилятором и другой бытовой техникой с помощью голосовой команды. Чтобы подключить интеллектуальную колонку Echo Dot к
Применение подсчета очков в петанке / жен-де-буль: 7 шагов

Приложение для ведения счета в петанке / Jeu-de-Boules: это приложение для ведения счета в петанке (иногда называемое Jeu de Boules) для Android. Это приложение можно использовать как есть, и оно полностью функционально. Или его можно использовать в сочетании с дисплеем «Матрица петанка» [отдельная инструкция
Домашняя автоматизация с помощью релейного модуля, управляемого через инфракрасный порт и Bluetooth: 10 шагов

Домашняя автоматизация с помощью релейного модуля, управляемого через инфракрасный порт и Bluetooth: в этом проекте домашней автоматизации я показал, как мы можем управлять светом, вентилятором и другими бытовыми приборами с помощью нашего приложения для смартфона и ИК-пульта с помощью схемы модуля реле управления Arduino. Это интеллектуальное реле, управляемое Arduino. схема имеет два режима, Inf
Применение выдвижной кнопки с вибрационной обратной связью: 7 шагов (с изображениями)

Применение выдвижной кнопки с вибрационной обратной связью: в этом уроке мы сначала покажем вам, как использовать Arduino Uno для управления вибромотором с помощью расширенной кнопки. В большинстве руководств по кнопкам используется кнопка на физической макетной плате, тогда как в этом руководстве кнопка должна быть
Gesture Hawk: робот, управляемый жестами руки, с использованием интерфейса на основе обработки изображений: 13 шагов (с изображениями)

Gesture Hawk: робот, управляемый жестами руки, использующий интерфейс на основе обработки изображений: Gesture Hawk был продемонстрирован в TechEvince 4.0 как простой человеко-машинный интерфейс на основе обработки изображений. Его полезность заключается в том, что для управления роботизированной машиной, которая работает на разных