Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
zdravo
Lep pozdrav.. !!
Jaz (Somanshu Choudhary) bom v imenu tehnoloških podjetij Dcube upravljal releje prek protokola I2C z uporabo Arduino nano in MCP23008.
1. korak: Pregled
- Naprava MCP23X08 ponuja 8-bitno, splošno namensko, vzporedno V/I razširitev za vodila I2C ali aplikacije SPI.
- MCP23X08 je sestavljen iz več 8-bitnih konfiguracijskih registrov za izbiro vhoda, izhoda in polarnosti. Sistemski poveljnik lahko omogoči V/I kot vhod ali izhod s pisanjem konfiguracijskih bitov V/I. Podatki za vsak vhod ali izhod se hranijo v ustreznem vhodnem ali izhodnem registru. Polarnost registra vhodnih vrat je mogoče obrniti z registrom Polarity Inversion. Glavni register lahko prebere vse registre.
- POVEZAVA Z DATASHEETOM:
2. korak: Kaj potrebujete / povezave
1. Arduino Nano POVEZAVA:
2. Ščit za Arduino Nano LINK:
3. USB kabel tipa A do mikro tipa B 6 čevljev dolg
4. I²C kabel LINK:
5. Osem krmilnih relejev SPDT I²C
6. Povezava adapterja:
3. korak: Shema vezja
4. korak: Programiranje - I
- V tej kodi uporabljam paradigmo za programiranje funkcij
- Za opredelitev funkcij in klicanje funkcij sem uporabil različne zavihke
KODA POD TABOM q:
// Enostavna klicna koda funkcije
#include void setup ()
{
// I2C naslov MCP23008
#define MCP_ADDR 0x20
// Pridružite se I2C Bus kot mojster
Wire.begin ();
// Začnite serijsko komunikacijo in nastavite hitrost prenosa
Serial.begin (9600);
// Začnite prenos z dano napravo na vodilu I2C
Wire.beginTransmission (MCP_ADDR);
// Izberite register IODIR - I/O DIRECTION REGISTER register
Wire.write (0x00);
// Izberite potrebno operacijo (izhod)
Wire.write (0x00);
// Izberite register CONFIGURATION
Wire.write (0x05);
// Izberite potrebno operacijo
Wire.write (0x0E);
// konec prenosa
Wire.endTransmission ();
}
void loop ()
{
a1_on ();
zamuda (1000);
a1_off ();
zamuda (1000);
a2_on ();
zamuda (1000);
a2_off ();
zamuda (1000);
a3_on ();
zamuda (1000);
a3_off ();
zamuda (1000);
a4_on ();
zamuda (1000);
a4_off ();
zamuda (1000);
a5_on ();
zamuda (1000);
a5_off ();
zamuda (1000);
a6_on ();
zamuda (1000);
a6_off ();
zamuda (1000);
a7_on ();
zamuda (1000);
a7_off ();
zamuda (1000);
a8_on ();
zamuda (1000);
a8_off ();
}
KODA POD TABOM q1:
// Ta koda je za vklop in izklop releja 1 na vozilu
void a1_on () {
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a1_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
KODA POD TABOM q2:
// Ta koda je za vklop in izklop releja 2 na vozilu
void a2_on () {
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a2_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
KODA POD TABOM q3: // Ta koda je za vklop in izklop releja 3 na vozilu
void a3_on ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a3_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
5. korak: Programiranje - II
KODA POD TABOM q4:
// Ta koda je za vklop in izklop releja 4 na vozilu
void a4_on ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a4_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
KODA POD TABOM q5:
// Ta koda je za vklop in izklop releja 5 na vozilu
void a5_on ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a5_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
KODA POD TABOM q6: // Ta koda je za vklop in izklop releja 6 na vozilu
void a6_on ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a6_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
KODA POD TABOM q7: // Ta koda je za vklop in izklop releja 7 na vozilu
void a7_on () {
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a7_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
KODA POD TABOM q8: // Ta koda je za vklop in izklop releja 8 na vozilu
void a8_on () {
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
void a8_off ()
{
// Začni prenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
zamuda (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izhod na zaslon
Serial.print ("Vrednost GPIO:");
Serial.println (GPIO, BIN);
}
6. korak: Video
Za dodatne zahteve obiščite našo spletno stran:
www.dcubetechnologies.com