Πίνακας περιεχομένων:

Εφαρμογή του MCP-23008 χρησιμοποιώντας τη διεπαφή ρελέ (I2C) :: 6 βήματα
Εφαρμογή του MCP-23008 χρησιμοποιώντας τη διεπαφή ρελέ (I2C) :: 6 βήματα

Βίντεο: Εφαρμογή του MCP-23008 χρησιμοποιώντας τη διεπαφή ρελέ (I2C) :: 6 βήματα

Βίντεο: Εφαρμογή του MCP-23008 χρησιμοποιώντας τη διεπαφή ρελέ (I2C) :: 6 βήματα
Βίντεο: "Δώρα"... και αντίδωρα για την οριζόντια εφαρμογή του δικαστικού χάρτη. 2024, Νοέμβριος
Anonim
Εφαρμογή του MCP-23008 χρησιμοποιώντας διεπαφή ρελέ (I2C)
Εφαρμογή του MCP-23008 χρησιμοποιώντας διεπαφή ρελέ (I2C)

γεια σας

Καλούς χαιρετισμούς.. !!

I (Somanshu Choudhary) για λογαριασμό των τεχνολογικών επιχειρήσεων Dcube που θα ελέγχουν τα Relays μέσω πρωτοκόλλου I2C χρησιμοποιώντας Arduino nano και MCP23008.

Βήμα 1: Επισκόπηση

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
  • Η συσκευή MCP23X08 παρέχει παράλληλη επέκταση I/O 8 bit, γενικής χρήσης, για εφαρμογές διαύλου I2C ή SPI.
  • Το MCP23X08 αποτελείται από πολλαπλούς καταχωρητές διαμόρφωσης 8 bit για επιλογή εισόδου, εξόδου και πολικότητας. Η κύρια μονάδα συστήματος μπορεί να ενεργοποιήσει το I/O είτε ως είσοδο είτε ως έξοδο, γράφοντας τα bits διαμόρφωσης I/O. Τα δεδομένα για κάθε είσοδο ή έξοδο διατηρούνται στον αντίστοιχο καταχωρητή εισόδου ή εξόδου. Η πολικότητα του καταχωρητή θύρας εισόδου μπορεί να αντιστραφεί με τον καταχωρητή αντιστροφής πολικότητας. Όλοι οι καταχωρητές μπορούν να διαβαστούν από τον κύριο σύστημα.
  • ΣΥΝΔΕΣΜΟΣ ΔΕΔΟΜΕΝΩΝ:

Βήμα 2: Τι χρειάζεστε / Σύνδεσμοι

Τι χρειάζεστε / Σύνδεσμοι
Τι χρειάζεστε / Σύνδεσμοι

1. Arduino Nano LINK:

2. Ασπίδα για Arduino Nano LINK:

3. Καλώδιο USB τύπου A έως Micro Type B 6 πόδια μακριά

4. Σύνδεσμος καλωδίου I²C:

5. Οκτώ ελεγχόμενα ρελέ SPDT I²C

6. Προσαρμογέας LINK:

Βήμα 3: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Βήμα 4: Προγραμματισμός - Ι

Προγραμματισμός - Ι
Προγραμματισμός - Ι
Προγραμματισμός - Ι
Προγραμματισμός - Ι
  • Σε αυτόν τον κώδικα, χρησιμοποιώ το Παράδειγμα προγραμματισμού λειτουργιών
  • Χρησιμοποίησα διαφορετικές καρτέλες για τον ορισμό των λειτουργιών και την κλήση λειτουργιών

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q:

// Απλός κώδικας κλήσης λειτουργίας

#include void setup ()

{

// διεύθυνση I2C του MCP23008

#define MCP_ADDR 0x20

// Εγγραφείτε στο I2C Bus ως κύριο

Wire.begin ();

// Ξεκινήστε σειριακή επικοινωνία και ορίστε ρυθμό baud

Serial.begin (9600);

// Ξεκινήστε τη μετάδοση με δεδομένη συσκευή στο δίαυλο I2C

Wire.beginTransmission (MCP_ADDR);

// Επιλέξτε μητρώο IODIR - I/O DIRECTION REGISTER

Wire.write (0x00);

// Επιλέξτε την απαιτούμενη λειτουργία (έξοδος)

Wire.write (0x00);

// Επιλέξτε καταχωρητής ΔΙΑΜΟΡΦΩΣΗΣ

Wire.write (0x05);

// Επιλέξτε την απαιτούμενη λειτουργία

Wire.write (0x0E);

// τερματισμός μετάδοσης

Wire.endTransmission ();

}

κενός βρόχος ()

{

a1_on ();

καθυστέρηση (1000)?

a1_off ();

καθυστέρηση (1000)?

a2_on ();

καθυστέρηση (1000)?

a2_off ();

καθυστέρηση (1000)?

a3_on ();

καθυστέρηση (1000)?

a3_off ();

καθυστέρηση (1000)?

a4_on ();

καθυστέρηση (1000)?

a4_off ();

καθυστέρηση (1000)?

a5_on ();

καθυστέρηση (1000)?

a5_off ();

καθυστέρηση (1000)?

a6_on ();

καθυστέρηση (1000)?

a6_off ();

καθυστέρηση (1000)?

a7_on ();

καθυστέρηση (1000)?

a7_off ();

καθυστέρηση (1000)?

a8_on ();

καθυστέρηση (1000)?

a8_off ();

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q1:

// Αυτός ο κωδικός είναι για το ρελέ 1 on και off στο πλοίο

void a1_on () {

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a1_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q2:

// Αυτός ο κωδικός είναι για το ρελέ 2 on και off στο πλοίο

void a2_on () {

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a2_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q3: // Αυτός ο κωδικός είναι για το ρελέ 3 on και off στο πλοίο

void a3_on ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a3_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

Βήμα 5: Προγραμματισμός - II

Προγραμματισμός - II
Προγραμματισμός - II

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q4:

// Αυτός ο κωδικός είναι για το ρελέ 4 on και off στο πλοίο

άκυρο a4_on ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a4_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q5:

// Αυτός ο κωδικός είναι για το ρελέ 5 on και off στο πλοίο

void a5_on ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x10);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a5_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q6: // Αυτός ο κωδικός είναι για το ρελέ 6 on και off στο πλοίο

void a6_on ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a6_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q7: // Αυτός ο κωδικός είναι για το ρελέ 7 on και off στο πλοίο

void a7_on () {

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a7_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

ΚΩΔΙΚΟΣ ΚΑΤΩ ΠΙΝΑΚΑΣ q8: // Αυτός ο κωδικός είναι ενεργοποιημένος και απενεργοποιημένος ρελέ 8 επί του σκάφους

void a8_on () {

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

void a8_off ()

{

// Έναρξη μετάδοσης

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

καθυστέρηση (1800)?

Wire.requestFrom (MCP_ADDR, 1)?

int GPIO = Wire.read ();

Wire.endTransmission ();

// Έξοδος στην οθόνη

Serial.print ("τιμή GPIO:");

Serial.println (GPIO, BIN);

}

Βήμα 6: Βίντεο

Για περαιτέρω απορίες Μη διστάσετε να επισκεφθείτε τον ιστότοπό μας:

www.dcubetechnologies.com

Συνιστάται: