Satura rādītājs:
- 1. darbība. Pārskats
- 2. darbība. Nepieciešamais / saites
- 3. darbība: shēmas shēma
- 4. solis: programmēšana - I
- 5. solis: programmēšana - II
- 6. darbība: video
Video: MCP-23008 pielietošana, izmantojot releja saskarni (I2C) :: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Sveiki
Labi sveicieni.. !!
Es (Somanshu Choudhary) Dcube tehnoloģiju uzņēmumu vārdā gatavojas kontrolēt relejus, izmantojot I2C protokolu, izmantojot Arduino nano un MCP23008.
1. darbība. Pārskats
- Ierīce MCP23X08 nodrošina 8 bitu vispārējas nozīmes paralēlu I/O paplašināšanu I2C kopnes vai SPI lietojumprogrammām.
- MCP23X08 sastāv no vairākiem 8 bitu konfigurācijas reģistriem ievades, izvades un polaritātes izvēlei. Sistēmas meistars var iespējot I/O kā ieejas vai izejas, ierakstot I/O konfigurācijas bitus. Katras ievades vai izvades dati tiek glabāti attiecīgajā ievades vai izvades reģistrā. Ievades porta reģistra polaritāti var apgriezt ar polaritātes inversijas reģistru. Sistēmas meistars var nolasīt visus reģistrus.
- DATU LAPA:
2. darbība. Nepieciešamais / saites
1. Arduino Nano LINK:
2. Arduino Nano LINK vairogs:
3. USB kabelis no A tipa līdz mikro tipam B 6 pēdas garš
4. I²C kabeļa saite:
5. Astoņi SPDT I²C kontrolētie releji
6. Adaptera saite:
3. darbība: shēmas shēma
4. solis: programmēšana - I
- Šajā kodā es izmantoju funkciju programmēšanas paradigmu
- Es izmantoju dažādas cilnes funkciju definēšanai un funkciju izsaukšanai
KODĒT zem cilnes q:
// Vienkāršas funkcijas izsaukuma kods
#include void setup ()
{
// MCP23008 I2C adrese
#define MCP_ADDR 0x20
// Pievienojieties I2C Bus kā kapteinis
Wire.begin ();
// Sāciet seriālo komunikāciju un iestatiet pārraides ātrumu
Sērijas sākums (9600);
// Sāciet pārraidi ar norādīto ierīci I2C kopnē
Wire.beginTransmission (MCP_ADDR);
// Atlasiet IODIR - I/O DIRECTION REGISTER reģistru
Wire.write (0x00);
// Izvēlieties vajadzīgo darbību (izvade)
Wire.write (0x00);
// Atlasiet CONFIGURATION register
Wire.write (0x05);
// Izvēlieties vajadzīgo darbību
Wire.write (0x0E);
// beigt pārraidi
Wire.endTransmission ();
}
tukša cilpa ()
{
a1_on ();
kavēšanās (1000);
a1_off ();
kavēšanās (1000);
a2_on ();
kavēšanās (1000);
a2_off ();
kavēšanās (1000);
a3_on ();
kavēšanās (1000);
a3_off ();
kavēšanās (1000);
a4_on ();
kavēšanās (1000);
a4_off ();
kavēšanās (1000);
a5_on ();
kavēšanās (1000);
a5_off ();
kavēšanās (1000);
a6_on ();
kavēšanās (1000);
a6_off ();
kavēšanās (1000);
a7_on ();
kavēšanās (1000);
a7_off ();
kavēšanās (1000);
a8_on ();
kavēšanās (1000);
a8_off ();
}
KODS zem cilnes q1:
// Šis kods ir paredzēts, lai ieslēgtu un izslēgtu 1. releju uz kuģa
void a1_on () {
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a1_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
KODS zem cilnes q2:
// Šis kods ir paredzēts, lai ieslēgtu un izslēgtu 2. releju uz kuģa
void a2_on () {
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a2_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
KODS zem cilnes q3: // Šis kods ir paredzēts 3. ieslēgšanas un izslēgšanas relejam
anulēts a3_on ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
anulēts a3_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
5. solis: programmēšana - II
KODS zem cilnes q4:
// Šis kods ir paredzēts ieslēgt un izslēgt 4. releju uz kuģa
void a4_on ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a4_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
KODS zem cilnes q5:
// Šis kods ir paredzēts ieslēgt un izslēgt 5. releju uz kuģa
anulēts a5_on ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a5_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
KODS zem cilnes q6: // Šis kods ir paredzēts ieslēgt un izslēgt 6. releju
anulēts a6_on ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a6_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
KODS zem cilnes q7: // Šis kods ir paredzēts ieslēgt un izslēgt 7. releju
void a7_on () {
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a7_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
KODS zem cilnes q8: // Šis kods ir paredzēts ieslēgt un izslēgt 8. releju
void a8_on () {
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
void a8_off ()
{
// Sāciet pārraidi
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kavēšanās (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izeja uz ekrānu
Serial.print ("GPIO vērtība:");
Serial.println (GPIO, BIN);
}
6. darbība: video
Lai iegūtu papildu jautājumus, lūdzu, apmeklējiet mūsu vietni:
www.dcubetechnologies.com
Ieteicams:
Darba sākšana ar I2C sensora saskarni ?? - Saskarne ar jūsu MMA8451, izmantojot ESP32: 8 soļi
Darba sākšana ar I2C sensora saskarni ?? - MMA8451 saskarne, izmantojot ESP32: Šajā apmācībā jūs uzzināsit visu par to, kā sākt, savienot un iegūt I2C ierīci (akselerometru) darbam ar kontrolieri (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Mitruma, spiediena un temperatūras aprēķins, izmantojot BME280 un fotonu saskarni: 6 soļi
Mitruma, spiediena un temperatūras aprēķins, izmantojot BME280 un fotonu saskarni: Mēs saskaramies ar dažādiem projektiem, kuriem nepieciešama temperatūras, spiediena un mitruma kontrole. Tādējādi mēs saprotam, ka šiem parametriem faktiski ir būtiska nozīme, novērtējot sistēmas darba efektivitāti dažādos atmosfēras apstākļos
SCARA robots: mācīšanās par virzošo un apgriezto kinemātiku !!! (Plot Twist Uzziniet, kā izveidot reāllaika saskarni ARDUINO, izmantojot PROCESSING!): 5 soļi (ar attēliem)
SCARA robots: mācīšanās par virzošo un apgriezto kinemātiku !!! (Plot Twist Uzziniet, kā izveidot reāllaika saskarni ARDUINO, izmantojot PROCESSING!): SCARA robots ir ļoti populāra mašīna nozares pasaulē. Nosaukums apzīmē gan selektīvi saderīgu montāžas robota roku, gan selektīvi saderīgu šarnīra robota roku. Tas būtībā ir trīs brīvības pakāpes robots, kas ir pirmie divi diski
Izveidojiet Stīvena Hokinga datora saskarni tikai 1000 rubļu laikā (15 ASV dolāri), izmantojot Arduino: 5 soļi
Izveidojiet Stīvena Hokinga datora saskarni tikai 1000 rubļu apjomā. sistēmas versiju, neapdraudot pārāk daudz funkciju. Šī ierīce
Žestu vanags: ar žestiem kontrolēts robots, izmantojot saskarni, kas balstīta uz attēlu apstrādi: 13 soļi (ar attēliem)
Žestu vanags: ar žestiem kontrolēts robots, izmantojot saskarni, kas balstīta uz attēlu apstrādi: Žestu vanags tika demonstrēts TechEvince 4.0 kā vienkārša attēla apstrādes pamatā esoša cilvēka un mašīnas saskarne. Tās lietderība ir tāda, ka, lai kontrolētu robotu automašīnu, kas darbojas ar dažādiem…, nav nepieciešami papildu sensori vai valkājams, izņemot cimdu