Inhaltsverzeichnis:
- Schritt 1: Übersicht
- Schritt 2: Was Sie brauchen / Links
- Schritt 3: Schaltplan
- Schritt 4: Programmierung - I
- Schritt 5: Programmierung - II
- Schritt 6: Video
Video: Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C): - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Hallo
Schöne Grüße..!!
Ich (Somanshu Choudhary) im Auftrag von Dcube Tech Ventures werde Relais über das I2C-Protokoll mit Arduino nano und MCP23008 steuern.
Schritt 1: Übersicht
- Das MCP23X08-Gerät bietet eine 8-Bit-Universal-I/O-Erweiterung für I2C-Bus- oder SPI-Anwendungen.
- Der MCP23X08 besteht aus mehreren 8-Bit-Konfigurationsregistern zur Auswahl von Eingang, Ausgang und Polarität. Der Systemmaster kann die E/As entweder als Eingänge oder als Ausgänge aktivieren, indem er die E/A-Konfigurationsbits schreibt. Die Daten für jeden Eingang oder Ausgang werden im entsprechenden Eingangs- oder Ausgangsregister gespeichert. Die Polarität des Input Port Registers kann mit dem Polarity Inversion Register invertiert werden. Alle Register können vom Systemmaster gelesen werden.
- DATENBLATT-LINK:
Schritt 2: Was Sie brauchen / Links
1. Arduino Nano-LINK:
2. Schild für Arduino Nano LINK:
3. USB-Kabel Typ A zu Micro Typ B 6 Fuß lang
4. I²C-Kabel LINK:
5. Acht SPDT I²C-gesteuerte Relais
6. Adapter-LINK:
Schritt 3: Schaltplan
Schritt 4: Programmierung - I
- In diesem Code verwende ich das Function Programming Paradigm
- Ich habe verschiedene Registerkarten für die Funktionsdefinition und den Funktionsaufruf verwendet
CODE UNTER TAB q:
// Einfacher Funktionsaufrufcode
#include void setup()
{
// I2C-Adresse des MCP23008
#define MCP_ADDR 0x20
// I2C Bus als Master beitreten
Wire.begin();
// Serielle Kommunikation starten und Baudrate einstellen
Serial.begin (9600);
// Beginnen Sie die Übertragung mit dem angegebenen Gerät auf dem I2C-Bus
Wire.beginTransmission(MCP_ADDR);
// Wählen Sie IODIR – I/O DIRECTION REGISTER-Register
Wire.write (0x00);
// Gewünschte Operation auswählen (Ausgabe)
Wire.write (0x00);
// Wählen Sie das CONFIGURATION-Register
Wire.write (0x05);
// Gewünschte Operation auswählen
Wire.write(0x0E);
// Übertragung beenden
Wire.endTransmission();
}
Leere Schleife ()
{
a1_on();
Verzögerung (1000);
a1_off();
Verzögerung (1000);
a2_on();
Verzögerung (1000);
a2_off();
Verzögerung (1000);
a3_on();
Verzögerung (1000);
a3_off();
Verzögerung (1000);
a4_on();
Verzögerung (1000);
a4_off();
Verzögerung (1000);
a5_on();
Verzögerung (1000);
a5_off();
Verzögerung (1000);
a6_on();
Verzögerung (1000);
a6_off();
Verzögerung (1000);
a7_on();
Verzögerung (1000);
a7_off();
Verzögerung (1000);
a8_on();
Verzögerung (1000);
a8_off();
}
CODE UNTER TAB q1:
// Dieser Code dient zum Ein- und Ausschalten von Relais 1 an Bord
void a1_on() {
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a1_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
CODE UNTER TAB q2:
// Dieser Code dient zum Ein- und Ausschalten von Relais 2 an Bord
void a2_on() {
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a2_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
CODE UNTER TAB q3:// Dieser Code dient zum Ein- und Ausschalten von Relais 3 an Bord
void a3_on()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a3_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
Schritt 5: Programmierung - II
CODE UNTER TAB q4:
// Dieser Code dient zum Ein- und Ausschalten von Relais 4 an Bord
void a4_on()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a4_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
CODE UNTER TAB q5:
// Dieser Code dient zum Ein- und Ausschalten von Relais 5 an Bord
void a5_on()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write(0x10);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a5_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
CODE UNTER TAB q6:// Dieser Code dient zum Ein- und Ausschalten von Relais 6 an Bord
void a6_on()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a6_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
CODE UNTER TAB q7:// Dieser Code dient zum Ein- und Ausschalten von Relais 7 an Bord
void a7_on() {
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a7_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
CODE UNTER TAB q8:// Dieser Code dient zum Ein- und Ausschalten von Relais 8 an Bord
void a8_on() {
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
void a8_off()
{
// Übertragung beginnen
Wire.beginTransmission(MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
Verzögerung (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ausgabe auf den Bildschirm
Serial.print ("GPIO-Wert:");
Serial.println (GPIO, BIN);
}
Schritt 6: Video
Für weitere Fragen besuchen Sie gerne unsere Website:
www.dcubetechnologies.com
Empfohlen:
Löten von oberflächenmontierbaren Komponenten - Lötgrundlagen: 9 Schritte (mit Bildern)
Löten von oberflächenmontierbaren Komponenten | Lötgrundlagen: Bisher habe ich in meiner Lötgrundlagen-Serie genug Grundlagen zum Löten besprochen, damit Sie mit dem Üben beginnen können. In diesem Instructable, was ich besprechen werde, ist etwas fortgeschrittener, aber es sind einige der Grundlagen zum Löten von Surface Mount Compo
So steuern Sie ein Gerät mit Raspberry Pi und einem Relais – DIE GRUNDLAGEN: 6 Schritte
So steuern Sie ein Gerät mit Raspberry Pi und einem Relais - DIE GRUNDLAGEN: Dies ist ein einfaches und unkompliziertes Tutorial zur Steuerung eines Geräts mit Raspberry Pi und einem Relais, das für die Erstellung von IoT-Projekten hilfreich ist folgen Sie, auch wenn Sie keine Ahnung von Raspberry haben
Iterator (Python-GUI-Anwendung): 5 Schritte
Iterator (Python GUI-Anwendung): Hallo Leute, ich bin zurück mit einem anderen tollen instructable. Dieses Mal habe ich Python gelernt, und ich dachte, nach dem Erlernen einer Programmiersprache ist es besser, Software zu entwickeln. Also kam mir die Idee, warum nicht eine Software erstellen, die bei der mühsamen p
So verbinden Sie die Android-Anwendung mit AWS IOT und verstehen die Spracherkennungs-API: 3 Schritte
So verbinden Sie die Android-Anwendung mit AWS IOT und verstehen die Spracherkennungs-API: In diesem Tutorial erfahren Sie, wie Sie die Android-Anwendung mit dem AWS IOT-Server verbinden und die Spracherkennungs-API verstehen, die eine Kaffeemaschine steuert. Die Anwendung steuert die Kaffeemaschine über Alexa Sprachdienst, die c
MyPhotometrics - Gandalf: Leistungsmessgerät Zur Messung Von Lasern Im Sichtbaren Bereich Auf Basis Von "Sauron": 8 Schritte
MyPhotometrics - Gandalf: Leistungsmessgerät Zur Messung Von Lasern Im Sichtbaren Bereich Auf Basis Von "Sauron": Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz. Eine für Menschen lesbare Zusammenfassung dieser Lizenz findet sich hier.Was ist Gandalf?Gandalf ist eine Stand-A