Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
zdravo
Lijep pozdrav.. !!
Ja (Somanshu Choudhary) u ime tvrtke Dcube tech ventures idem kontrolirati releje putem I2C protokola koristeći Arduino nano i MCP23008.
Korak 1: Pregled
- Uređaj MCP23X08 pruža 8-bitno općenito namjensko paralelno I/O proširenje za I2C sabirnicu ili SPI aplikacije.
- MCP23X08 se sastoji od više 8-bitnih konfiguracijskih registara za odabir ulaza, izlaza i polariteta. Glavni sustav može omogućiti I/O kao ulaze ili izlaze upisivanjem konfiguracijskih bitova za U/I. Podaci za svaki ulaz ili izlaz čuvaju se u odgovarajućem registru ulaza ili izlaza. Polaritet registra ulaznog porta može se obrnuti registrom inverzije polariteta. Glavni registar može pročitati sve registre.
- LINKA SA PODACIMA:
Korak 2: Što vam treba / Veze
1. Arduino Nano LINK:
2. Štit za Arduino Nano LINK:
3. USB kabel tipa A do mikro tipa B Dugi 6 stopa
4. I²C kabel LINK:
5. Osam upravljanih releja SPDT I²C
6. LINKA adaptera:
Korak 3: Dijagram kruga
Korak 4: Programiranje - I
- U ovom kodu koristim paradigmu programiranja funkcija
- Koristio sam različite kartice za definiranje funkcija i pozivanje funkcija
KOD ISPOD KARTICE q:
// Kôd za pozivanje jednostavnih funkcija
#include void setup ()
{
// I2C adresa MCP23008
#define MCP_ADDR 0x20
// Pridružite se I2C Busu kao majstor
Wire.begin ();
// Pokretanje serijske komunikacije i postavljanje brzine prijenosa
Serial.begin (9600);
// Prijenos započnite s danim uređajem na I2C sabirnici
Wire.beginTransmission (MCP_ADDR);
// Odaberite registar IODIR - I/O DIRECTION REGISTER
Wire.write (0x00);
// Odabir potrebne operacije (izlaz)
Wire.write (0x00);
// Odaberite registar CONFIGURATION
Wire.write (0x05);
// Odabir potrebne operacije
Wire.write (0x0E);
// prekid prijenosa
Wire.endTransmission ();
}
void loop ()
{
a1_on ();
kašnjenje (1000);
a1_off ();
kašnjenje (1000);
a2_on ();
kašnjenje (1000);
a2_off ();
kašnjenje (1000);
a3_on ();
kašnjenje (1000);
a3_off ();
kašnjenje (1000);
a4_on ();
kašnjenje (1000);
a4_off ();
kašnjenje (1000);
a5_on ();
kašnjenje (1000);
a5_off ();
kašnjenje (1000);
a6_on ();
kašnjenje (1000);
a6_off ();
kašnjenje (1000);
a7_on ();
kašnjenje (1000);
a7_off ();
kašnjenje (1000);
a8_on ();
kašnjenje (1000);
a8_off ();
}
KOD ISPOD KARTICE q1:
// Ovaj kod služi za uključivanje i isključivanje releja 1 na brodu
void a1_on () {
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a1_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
KOD ISPOD KARTICE q2:
// Ovaj kod služi za uključivanje i isključivanje releja 2 na brodu
void a2_on () {
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a2_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
KOD ISPOD KARTICE q3: // Ovaj kod služi za uključivanje i isključivanje releja 3 na brodu
void a3_on ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a3_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
Korak 5: Programiranje - II
KOD ISPOD KARTICE q4:
// Ovaj kod služi za uključivanje i isključivanje releja 4 na brodu
void a4_on ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a4_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
KOD ISPOD KARTICE q5:
// Ovaj kod služi za uključivanje i isključivanje releja 5 na brodu
void a5_on ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a5_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
KOD ISPOD KARTICE q6: // Ovaj kod služi za uključivanje i isključivanje releja 6 na brodu
void a6_on ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a6_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
KOD ISPOD KARTICE q7: // Ovaj kôd služi za uključivanje i isključivanje releja 7 na brodu
void a7_on () {
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a7_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
KOD ISPOD KARTICE q8: // Ovaj kôd služi za uključivanje i isključivanje releja 8 na brodu
void a8_on () {
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
void a8_off ()
{
// Započni prijenos
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
kašnjenje (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Izlaz na zaslon
Serial.print ("GPIO vrijednost:");
Serijski.println (GPIO, BIN);
}
Korak 6: Video
Za dodatne upite slobodno posjetite našu web stranicu:
www.dcubetechnologies.com