Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Salam
Xoş Salamlar.. !!
Mən (Somanshu Choudhary), Arduino nano və MCP23008 istifadə edərək I2C protokolu ilə Röleləri idarə edəcək Dcube texnologiya müəssisələri adından.
Addım 1: Baxış
- MCP23X08 cihazı, I2C avtobus və ya SPI tətbiqləri üçün 8 bitlik, ümumi təyinatlı, paralel I/O genişləndirməsini təmin edir.
- MCP23X08, giriş, çıxış və polarite seçimi üçün çoxsaylı 8 bitlik konfiqurasiya qeydlərindən ibarətdir. Sistem ustası, I/O konfiqurasiya bitlərini yazaraq G/Ç -ni ya giriş, ya da çıxış olaraq təmin edə bilər. Hər bir giriş və ya çıxış üçün məlumatlar müvafiq Giriş və ya Çıxış reyestrində saxlanılır. Giriş Limanı reyestrinin polaritesi Polarite Ters çevrilmə reyestri ilə tərsinə çevrilə bilər. Bütün qeydləri sistem ustası oxuya bilər.
- DATASHEET LINK:
Addım 2: Lazım olanlar / Bağlantılar
1. Arduino Nano LINK:
2. Arduino Nano LINK üçün qalxan:
3. USB Kabel Tipi A - Mikro Tip B 6 Ayaq Uzunluğunda
4. I²C Kabel Bağlantısı:
5. Səkkiz SPDT I²C Nəzarətli Röle
6. Adapter LINK:
Addım 3: Dövrə Şeması
Addım 4: Proqramlaşdırma - I
- Bu kodda Funksional Proqramlaşdırma Paradiqmasını istifadə edirəm
- Funksiyaların təyin edilməsi və funksiyaların çağırılması üçün fərqli nişanlardan istifadə etdim
SABT ALTINDA QOD:
// Sadə funksiya zəng kodu
#boşluq qurulmasını daxil et ()
{
// MCP23008 -in I2C ünvanı
#MCP_ADDR 0x20 təyin edin
// Master olaraq I2C Avtobusuna qoşulun
Wire.begin ();
// Serial ünsiyyətə başlayın və ötürmə sürətini təyin edin
Serial.begin (9600);
// I2C avtobusunda verilən cihazla ötürməyə başlayın
Wire.beginTransmission (MCP_ADDR);
// IODIR - I/O DIRECTION REGISTER qeydiyyatını seçin
Wire.write (0x00);
// Lazımi əməliyyatı seçin (çıxış)
Wire.write (0x00);
// Konfiqurasiya qeydini seçin
Wire.write (0x05);
// Lazımi əməliyyatı seçin
Wire.write (0x0E);
// ötürməni sona çatdır
Wire.endTransmission ();
}
boşluq döngəsi ()
{
a1_on ();
gecikmə (1000);
a1_off ();
gecikmə (1000);
a2_on ();
gecikmə (1000);
a2_off ();
gecikmə (1000);
a3_on ();
gecikmə (1000);
a3_off ();
gecikmə (1000);
a4_on ();
gecikmə (1000);
a4_off ();
gecikmə (1000);
a5_on ();
gecikmə (1000);
a5_off ();
gecikmə (1000);
a6_on ();
gecikmə (1000);
a6_off ();
gecikmə (1000);
a7_on ();
gecikmə (1000);
a7_off ();
gecikmə (1000);
a8_on ();
gecikmə (1000);
a8_off ();
}
TAB Q1 ALTINDA QOD:
// Bu kod, gəmidə 1 -ci röleyi açmaq və söndürmək üçündür
void a1_on () {
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boşluq a1_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
TAB q2 altındakı kod:
// Bu kod, gəmidə 2 -ci röleyi açmaq və söndürmək üçündür
boşluq a2_on () {
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boşluq a2_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
SABAQ ALTINDAKİ Q3: // Bu kod gəmidə 3 -cü röleyi açmaq və söndürmək üçündür
boşluq a3_on ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
void a3_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
Addım 5: Proqramlaşdırma - II
TAB q4 altındakı kod:
// Bu kod, gəmidə 4 -cü röleyi açmaq və söndürmək üçündür
boş a4_on ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boş a4_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
TAB q5 altındakı kod:
// Bu kod, gəmidə 5 -ci röleyi açmaq və söndürmək üçündür
boşluq a5_on ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boşluq a5_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
Q6 SABİFİNİN ALTINDAKİ KOD: // Bu kod, gəmidəki 6 -cı röleyi açmaq və söndürmək üçündür
boşluq a6_on ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boş a6_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
SABAQ ALTINDAKİ Q7: // Bu kod, gəmidəki 7 -ci röleyi açmaq və söndürmək üçündür
void a7_on () {
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boşluq a7_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
TAB Q8 ALTINDAKİ Q8: // Bu kod, gəmidəki 8 -ci röleyi açmaq və söndürmək üçündür
boşluq a8_on () {
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
boşluq a8_off ()
{
// Göndərməyə başlayın
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
gecikmə (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Ekrana çıxış
Serial.print ("GPIO dəyəri:");
Serial.println (GPIO, BIN);
}
Addım 6: Video
Əlavə suallarınız üçün saytımızı ziyarət etməkdən çekinmeyin:
www.dcubetechnologies.com