Агуулгын хүснэгт:
- Алхам 1: Тойм
- Алхам 2: Танд хэрэгтэй зүйл / холбоосууд
- Алхам 3: Хэлхээ диаграм
- Алхам 4: Програмчлал - Би
- Алхам 5: Програмчлал - II
- Алхам 6: Видео
Видео: Relay Interface (I2C) ашиглан MCP-23008-ийн хэрэглээ :: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Сайн уу
Сайн байцгаана уу.. !!
Би (Somanshu Choudhary) Dcube технологийн компаниудын нэрийн өмнөөс Arduino нано болон MCP23008 ашиглан I2C протоколоор дамжуулан реле удирдах болно.
Алхам 1: Тойм
- MCP23X08 төхөөрөмж нь I2C автобус эсвэл SPI програмуудад зориулагдсан 8 битийн, ерөнхий зориулалттай, параллель I/O өргөтгөлийг хангадаг.
- MCP23X08 нь оролт, гаралт, туйлыг сонгох 8 битийн олон тохиргооны бүртгэлээс бүрдэнэ. Системийн мастер нь оролтын/гаралтын тохиргооны битүүдийг бичих замаар оролт, гаралтыг идэвхжүүлэх боломжтой. Оролт, гаралт бүрийн өгөгдлийг харгалзах оролт, гаралтын бүртгэлд хадгална. Оролтын портын бүртгэлийн туйлыг туйлшралын урвуу бүртгэлээр урвуулж болно. Бүх бүртгэлийг системийн мастер унших боломжтой.
- Мэдээллийн хуудасны холбоос:
Алхам 2: Танд хэрэгтэй зүйл / холбоосууд
1. Arduino Nano LINK:
2. Arduino Nano LINK -ийн бамбай:
3. USB кабелийн төрөл нь бичил төрөл B 6 фут урт
4. I²C кабелийн холбоос:
5. Найман SPDT I²C хяналттай реле
6. Адаптерийн холбоос:
Алхам 3: Хэлхээ диаграм
Алхам 4: Програмчлал - Би
- Энэ кодонд би функциональ програмчлалын парадигмыг ашигладаг
- Би функцүүдийн тодорхойлолт, функцийг дуудахын тулд өөр өөр табуудыг ашигласан
ХУУДСАН ДООРХ КОД q:
// Энгийн функцын дуудлагын код
#хүчингүй тохиргоог оруулах ()
{
// MCP23008 -ийн I2C хаяг
#тодорхойлох MCP_ADDR 0x20
// I2C Bus -д мастераар элсээрэй
Wire.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 -ийг онгоцонд асаах, унтраах явдал юм
хүчингүй 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 -ийг онгоцонд асаах, унтраах явдал юм
хүчингүй 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 -ийг онгоцонд асаах, унтраах явдал юм
хүчингүй 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);
}
ХҮСНИЙ ДООРХ КОД 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);
}
ХҮСНИЙ ДЭРХЭН код7
хүчин төгөлдөр бус 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);
}
TAB q8 -ийн доорх код: // Энэ код нь 8 -р буухиаыг асаах, унтраах явдал юм
хүчингүй 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
Зөвлөмж болгож буй:
Sigfox -ээр дамжуулан цахилгаан хэрэглээ ба хүрээлэн буй орчны хяналт: 8 алхам
Sigfox-ээр дамжуулан цахилгаан хэрэглээ ба хүрээлэн буй орчны хяналт: Тодорхойлолт Энэхүү төсөл нь гурван фазын цахилгаан хуваарилалт бүхий өрөөний цахилгааны хэрэглээг хэрхэн яаж авахыг харуулах бөгөөд дараа нь Sigfox сүлжээ ашиглан 10 минут тутамд сервер рүү илгээх болно. Цахилгаан хүчийг хэрхэн хэмжих вэ? Бид гурван гүйдлийн хавчаарыг авсан
Чичиргээтэй санал хүсэлт бүхий өргөтгөх товчлуурын хэрэглээ: 7 алхам (зурагтай)
Чичиргээтэй холбоотой санал хүсэлт бүхий өргөтгөдөг товчлуурын хэрэглээ: Энэхүү гарын авлагад бид эхлээд Arduino Uno ашиглан чичиргээний хөдөлгүүрийг өргөтгөсөн товчлуураар хэрхэн удирдахыг танд үзүүлэх болно. Товчлуурын товчлууруудын ихэнх заавар нь физик талбар дээрх товчлуурыг агуулдаг бол энэ гарын авлагад товчлуур нь
Arduino Wattmeter - Хүчдэл, гүйдэл ба эрчим хүчний хэрэглээ: 3 алхам
Arduino Wattmeter - Хүчдэл, гүйдэл ба эрчим хүчний хэрэглээ: Хэрэглэсэн хүчийг хэмжихийн тулд төхөөрөмжийг ашиглаж болно. Энэ хэлхээ нь хүчдэл ба гүйдлийг хэмжих вольтметр ба амметрийн үүргийг гүйцэтгэдэг
I2C / IIC LCD дэлгэц - Arduino ашиглан SPI -IIC модулийг ашиглан I2C LCD дэлгэц рүү SPI LCD ашиглах: 5 алхам
I2C / IIC LCD дэлгэц | IUC LCD дэлгэц дээр SPI LCD дэлгэцийг SPI -ийг IIC модулийг ашиглан Arduino ашиглан ашиглаарай: Сайн байна уу залуусаа, ердийн SPI LCD 1602 -ийг холбоход хэт олон утас байдаг тул үүнийг arduino -той холбоход маш хэцүү боловч зах зээл дээр боломжтой нэг модуль байдаг. SPI дэлгэцийг IIC дэлгэц болгон хөрвүүлэх тул та зөвхөн 4 утас холбох хэрэгтэй
PCF8591 (i2c аналог I/O Expander) Хурдан хялбар хэрэглээ: 9 алхам
PCF8591 (i2c аналог I/O Expander) Хурдан хялбар хэрэглээ: i2c pcf8591 IC -ийг arduino болон esp8266 ашиглан ашиглах номын сан. Энэхүү IC нь (4 хүртэл) аналог оролт ба/эсвэл 1 аналог гаралтыг хянах хүчдэлийг хэмжих, термисторын утгыг унших эсвэл LED -ийг бүдгэрүүлэх боломжтой. Зөвхөн 2 утастай аналог утгыг уншиж, аналог утгыг бичиж болно