Съдържание:
- Стъпка 1: Общ преглед
- Стъпка 2: Какво ви трябва / Връзки
- Стъпка 3: Електрическа схема
- Стъпка 4: Програмиране - I
- Стъпка 5: Програмиране - II
- Стъпка 6: Видео
Видео: Приложение на MCP-23008 с помощта на релеен интерфейс (I2C) :: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Здравейте
Добър поздрав.. !!
Аз (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
КОД КЪМ РАЗДЕЛ 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
Препоръчано:
Система за визуален мониторинг, базирана на LoRa, за земеделието Iot - Проектиране на фронтално приложение с помощта на Firebase & Angular: 10 стъпки
Система за визуален мониторинг, базирана на LoRa, за земеделието Iot | Проектиране на фронтално приложение с помощта на Firebase и Angular: В предишната глава говорим за това как сензорите работят с loRa модул за попълване на базата данни на Firebase в реално време и видяхме диаграмата на много високо ниво как работи целият ни проект. В тази глава ще говорим за това как можем
RFID Arduino Uno релеен превключвател, с I2C дисплей: 4 стъпки
RFID Arduino Uno релеен превключвател, с I2C дисплей: Здравейте, това е първият ми проект, казвам се Оскар и съм на 13. Този проект работи с I2C дисплей, а не нормален
Първи стъпки с I2C сензорен интерфейс ?? - Свържете вашия MMA8451 с помощта на ESP32: 8 стъпки
Първи стъпки с I2C сензорен интерфейс ?? - Свържете вашия MMA8451 с помощта на ESP32: В този урок ще научите всичко за това как да стартирате, свържете и получите I2C устройство (акселерометър), работещо с контролер (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Приложение за Android, част 1: Екран за пръскане с помощта на фрагменти/Kotlin: 5 стъпки
Приложение за Android, част 1: Екран за пръскане с помощта на фрагменти/Kotlin: Здравейте отново, най -вероятно имате някои " безплатни " време у дома поради COVID19 и можете да се върнете, за да проверите теми, които сте искали да научите в миналото. Разработката на Android App определено е една от тях за мен и реших преди няколко седмици да дам
Iterator (приложение за графичен потребителски интерфейс на Python): 5 стъпки
Iterator (приложение за графичен потребителски интерфейс на Python): Здравейте, момчета, върнах се с още една страхотна инструкция. Този път научих Python и си помислих, че след като научих език за програмиране, е по -добре да разработя софтуер. Така че имам идея защо да не създам софтуер, който да помогне с досадното