Tartalomjegyzék:
- 1. lépés: Áttekintés
- 2. lépés: Amire szüksége van / Linkek
- 3. lépés: Áramköri diagram
- 4. lépés: Programozás - I
- 5. lépés: Programozás - II
- 6. lépés: Videó
Videó: Az MCP-23008 alkalmazása relés interfész (I2C) használatával :: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Helló
Üdv.. !!
I (Somanshu Choudhary) a Dcube tech vállalkozások nevében, akik I2C protokollon keresztül irányítják a reléket Arduino nano és MCP23008 használatával.
1. lépés: Áttekintés
- Az MCP23X08 eszköz 8 bites, általános célú, párhuzamos I/O bővítést biztosít az I2C busz vagy SPI alkalmazásokhoz.
- Az MCP23X08 több 8 bites konfigurációs regiszterből áll a bemenet, a kimenet és a polaritás kiválasztásához. A rendszergazda engedélyezheti az I/O -kat bemenetként vagy kimenetként az I/O konfigurációs bitek írásával. Az egyes bemenetek vagy kimenetek adatait a megfelelő bemeneti vagy kimeneti regiszter tárolja. Az Input Port regiszter polaritása megfordítható a Polarity Inversion regiszterrel. A rendszergazda minden regisztert elolvashat.
- ADATLAP LINK:
2. lépés: Amire szüksége van / Linkek
1. Arduino Nano LINK:
2. Pajzs Arduino Nano LINK -hez:
3. USB kábel A típus - B típusú Micro 6 láb hosszú
4. I²C kábel LINK:
5. Nyolc SPDT I²C vezérelt relé
6. Adapter LINK:
3. lépés: Áramköri diagram
4. lépés: Programozás - I
- Ebben a kódban a Function Programming Paradigm -ot használom
- Különböző lapokat használtam a függvények meghatározásához és a függvényhíváshoz
KÓD A TAB q alatt:
// Egyszerű funkció hívó kód
#include void setup ()
{
// Az MCP23008 I2C címe
#define MCP_ADDR 0x20
// Csatlakozzon mesterként az I2C Bus -hoz
Wire.begin ();
// Indítsa el a soros kommunikációt és állítsa be az átviteli sebességet
Sorozat.kezdet (9600);
// Indítsa el az átvitelt az adott eszközzel az I2C buszon
Wire.beginTransmission (MCP_ADDR);
// Válassza ki az IODIR - I/O DIRECTION REGISTER regisztert
Wire.write (0x00);
// Válassza ki a kívánt műveletet (kimenet)
Wire.write (0x00);
// Válassza ki a KONFIGURÁCIÓ regisztert
Wire.write (0x05);
// Válassza ki a kívánt műveletet
Wire.write (0x0E);
// az átvitel befejezése
Wire.endTransmission ();
}
üres hurok ()
{
a1_on ();
késleltetés (1000);
a1_off ();
késleltetés (1000);
a2_on ();
késleltetés (1000);
a2_off ();
késleltetés (1000);
a3_on ();
késleltetés (1000);
a3_off ();
késleltetés (1000);
a4_on ();
késleltetés (1000);
a4_off ();
késleltetés (1000);
a5_on ();
késleltetés (1000);
a5_off ();
késleltetés (1000);
a6_on ();
késleltetés (1000);
a6_off ();
késleltetés (1000);
a7_on ();
késleltetés (1000);
a7_off ();
késleltetés (1000);
a8_on ();
késleltetés (1000);
a8_off ();
}
KÓD A TAB q1 alatt:
// Ez a kód az 1 -es relé be- és kikapcsolására szolgál
void a1_on () {
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a1_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
KÓD A TAB q2 alatt:
// Ez a kód a fedélzeti 2 -es relé be- és kikapcsolására szolgál
void a2_on () {
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a2_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
KÓD A TAB q3 alatt: // Ez a kód a 3 -as relé be- és kikapcsolására szolgál
void a3_on ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a3_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
5. lépés: Programozás - II
KÓD A TAB q4 alatt:
// Ez a kód a fedélzeti 4 -es relé be- és kikapcsolására szolgál
void a4_on ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a4_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
KÓD A TAB q5 alatt:
// Ez a kód a fedélzeti 5 -ös relé be- és kikapcsolására szolgál
void a5_on ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a5_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
KÓD A TAB q6 alatt: // Ez a kód a 6 -os relé be- és kikapcsolására szolgál
void a6_on ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a6_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
KÓD A TAB q7 alatt: // Ez a kód a fedélzeti 7 -es relé be- és kikapcsolására szolgál
void a7_on () {
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a7_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
KÓD A TAB q8 alatt: // Ez a kód a fedélzeti 8 -as relé be- és kikapcsolására szolgál
void a8_on () {
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
void a8_off ()
{
// Indítsa el az átvitelt
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
késleltetés (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Kimenet a képernyőre
Serial.print ("GPIO érték:");
Serial.println (GPIO, BIN);
}
6. lépés: Videó
További kérdéseivel keressen bátran weboldalunkon:
www.dcubetechnologies.com
Ajánlott:
Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: 6 lépés
Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: Számos olyan projekttel találkozunk, amelyek hőmérséklet-, nyomás- és páratartalom -ellenőrzést igényelnek. Így rájövünk, hogy ezek a paraméterek valójában létfontosságú szerepet játszanak abban, hogy megbecsüljük a rendszer működési hatékonyságát különböző légköri körülmények között
Ember-számítógép interfész: Funkció a Gripper (készítette: Kirigami) a csuklómozgás segítségével EMG használatával: 7 lépés
Ember-számítógép interfész: Funkció a Gripper (készítette: Kirigami) a csuklómozgás segítségével EMG használatával: Tehát ez volt az első próbálkozásom az ember-számítógép interfészen. EMG érzékelővel rögzítettem a csuklóm mozgásának izomaktiváló jeleit, feldolgoztam python és arduino segítségével, és egy origami alapú fogót működtetett
Egy kiterjeszthető gomb alkalmazása vibrációs visszajelzéssel: 7 lépés (képekkel)
Egy kibővíthető gomb alkalmazása rezgéssel kapcsolatos visszajelzéssel: Ebben az oktatóanyagban először azt mutatjuk be, hogyan használhatja az Arduino Uno -t egy rezgőmotor vezérléséhez egy kiterjesztett gombbal. A nyomógombokkal kapcsolatos oktatóanyagok többsége magában foglalja a fizikai kenyértábla gombját, míg ebben az oktatóanyagban a gomb
Interfész Több LCD és Arduino Uno között a közös adatvonal használatával: 5 lépés
Interfész több LCD -ről Arduino Uno -ra a Common Data Line használatával: Ma ebben az oktatóanyagban megmutatom, hogyan lehet több 16x2 -es LCD -modult illeszteni egy arduino uno kártyával közös adatvonal használatával. A legérdekesebb ebben a projektben az, hogy közös adatvonalat használ, és különböző adatokat jelenít meg az e
A textúrák alkalmazása az egyes tárgyfelületeken a második életben: 7 lépés
Hogyan kell textúrákat alkalmazni az egyes objektumfelületeken a Second Life -ban: A Second Life -ban több textúrát is felvihet egyetlen objektumra. A folyamat nagyon egyszerű, és nagymértékben javíthatja az épületek megjelenését