
Мазмуну:
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:51

салам
Жакшы салам.. !!
Мен (Somanshu Choudhary) Dcube технологиялык ишканаларынын атынан реледи I2C протоколу аркылуу Arduino нано жана MCP23008 аркылуу башкарам.
1 -кадам: Обзор

- MCP23X08 түзмөгү I2C шинасы же SPI тиркемелери үчүн 8-бит, жалпы максатта, параллель I/O кеңейтүүсүн камсыз кылат.
- MCP23X08 киргизүү, чыгаруу жана полярдыкты тандоо үчүн бир нече 8-биттик конфигурация регистрлеринен турат. Тутумдун мастери I/Oну I/O конфигурация биттерин жазуу менен кириш же чыгуучу катары иштете алат. Ар бир киргизүү же чыгаруу боюнча маалыматтар тиешелүү Киргизүү же Чыгуу реестринде сакталат. Киргизүү портунун реестринин полярдуулугун Polarity Inversion реестри менен алмаштырса болот. Бардык регистрлерди системанын мастери окуй алат.
- DATASHEET LINK:
2 -кадам: Сизге эмне керек / Шилтемелер

1. Arduino Nano LINK:
2. Shield for Arduino Nano LINK:
3. USB кабелинин түрү Micro Type B 6 Feet Long
4. I²C Cable LINK:
5. SPDT I²C башкаруучу сегиз реле
6. Адаптер LINK:
3 -кадам: Райондук диаграмма


4 -кадам: Программалоо - И


- Бул коддо мен функционалдык программалоо парадигмасын колдоном
- Мен функцияларды аныктоо жана функцияларды чакыруу үчүн ар кандай өтмөктөрдү колдондум
Таблицанын алдындагы код q:
// Жөнөкөй функция чакыруу коду
#жараксыз орнотууну кошуу ()
{
// MCP23008 I2C дареги
#define 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 ();
}
боштук цикл ()
{
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 -релени күйгүзүү жана өчүрүү
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);
}
жараксыз 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);
}
T6 астындагы код 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);
}
T7 астындагы КОД:
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);
}
жараксыз 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
Сунушталууда:
I2C сенсор интерфейси менен баштоо ?? - Interface Сиздин MMA8451 ESP32s колдонуу: 8 кадам

I2C сенсор интерфейси менен баштоо ?? - Сиздин MMA8451 интерфейсиңиз ESP32лерди колдонуу: Бул үйрөткүчтө сиз контролер (Arduino, ESP32, ESP8266, ESP12 NodeMCU) менен иштөөчү I2C түзмөгүн (акселерометрди) кантип баштоо, туташтыруу жана алуу жөнүндө баардыгын үйрөнөсүз
Sol-EZ электромагниттик драйвер комплектинин колдонулушу: 9 кадам

Sol-EZ электромагниттик драйверлер комплектинин колдонуу боюнча көрсөтмөсү: ЭСКЕРТҮҮ: БУЛ ПРОДУКЦИЯНЫ КОЛДОНУУ КӨРСӨТМӨСҮ: SOL-EZ SOLNOID DRIVER KIT. Бул DIY долбоору эмес. Sol-EZ электромагниттик драйверлеринин комплектиси деген эмне?
Роботтук редуктор 3d басып чыгаруу үчүн колдонулушу мүмкүн: 13 кадам

Роботтук Gear Arm 3d Басып чыгаруу үчүн колдонулушу мүмкүн: Мен роботту бергим келген максат Бул моделди түзүү жана тиштер аркылуу анын күч берүү системасынын күчүн көрсөтүү жана мунун жардамы менен тийүү.Балл подшипниктер сүрүлүүнү азайтуу үчүн колдонулат. робот гармониялуу кыймылдайт. The
Өлгөн автомобиль батареялары жана мөөрлөнгөн коргошун кислотасы үчүн колдонулушу: 5 кадам (сүрөттөр менен)

Өлгөн автомобиль батареялары жана мөөрлөнгөн коргошун кислотасы үчүн колдонулат: Көптөгөн "өлүк" автоунаа батареялары чындыгында эң жакшы батареялар. Алар мындан ары машинаны иштетүү үчүн жүздөгөн амперди бере алышпайт. Көптөгөн "өлгөн" мөөрлөнгөн коргошун кислотасы бар батареялар чындыгында ишенимдүү түрдө камсыз кыла албаган аккумуляторлор болуп саналат
NODEMCU 1.0 (ESP8266) КОНТРОЛЬДУК РЕЛИ BLYNK КОЛДОНУЛУШУ (ВЕБ ҮЧҮН): 5 кадам (Сүрөттөр менен)

NODEMCU 1.0 (ESP8266) БАШКАРЫЛГАН РЕЛИ BLYNK КОЛДОНУЛУШУ (ВЕБ ЖАЙЫНДА): Салам балдар менин атым П Стивен Лайт Джойти жана бул менин биринчи инструмент NETEMETSETETSETETETETETETETETETSETETSETETSETE ESP8 MY BAD ENGLISH