Spisu treści:

Zastosowanie MCP-23008 przy użyciu interfejsu przekaźnika (I2C):: 6 kroków
Zastosowanie MCP-23008 przy użyciu interfejsu przekaźnika (I2C):: 6 kroków

Wideo: Zastosowanie MCP-23008 przy użyciu interfejsu przekaźnika (I2C):: 6 kroków

Wideo: Zastosowanie MCP-23008 przy użyciu interfejsu przekaźnika (I2C):: 6 kroków
Wideo: Arduino 25: MAGISTRALA I2C 2024, Listopad
Anonim
Zastosowanie MCP-23008 za pomocą interfejsu przekaźnika (I2C)
Zastosowanie MCP-23008 za pomocą interfejsu przekaźnika (I2C)

dzień dobry

Dobre Pozdrowienia..!!

I (Somanshu Choudhary) w imieniu firmy Dcube tech zamierza kontrolować przekaźniki za pomocą protokołu I2C za pomocą Arduino nano i MCP23008.

Krok 1: Przegląd

Przegląd
Przegląd
  • Urządzenie MCP23X08 zapewnia 8-bitową, równoległą rozbudowę we/wy ogólnego przeznaczenia dla magistrali I2C lub aplikacji SPI.
  • MCP23X08 składa się z wielu 8-bitowych rejestrów konfiguracyjnych do wyboru wejścia, wyjścia i polaryzacji. Master systemu może aktywować wejścia/wyjścia jako wejścia lub wyjścia, zapisując bity konfiguracyjne wejścia/wyjścia. Dane dla każdego wejścia lub wyjścia są przechowywane w odpowiednim rejestrze wejścia lub wyjścia. Biegunowość rejestru portu wejściowego może być odwrócona za pomocą rejestru odwrócenia polaryzacji. Wszystkie rejestry mogą być odczytane przez administratora systemu.
  • LINK DO KARTY KATALOGOWEJ:

Krok 2: Czego potrzebujesz / Linki

Czego potrzebujesz / Linki
Czego potrzebujesz / Linki

1. Arduino Nano LINK:

2. Tarcza dla Arduino Nano LINK:

3. Kabel USB typu A do Micro typu B o długości 6 stóp

4. I²C kabel LINK:

5. Osiem przekaźników sterowanych SPDT I²C

6. Łącze adaptera:

Krok 3: Schemat obwodu

Schemat obwodu
Schemat obwodu
Schemat obwodu
Schemat obwodu

Krok 4: Programowanie - I

Programowanie - I
Programowanie - I
Programowanie - I
Programowanie - I
  • W tym kodzie używam paradygmatu programowania funkcji
  • Użyłem różnych zakładek do definiowania funkcji i wywoływania funkcji

KOD POD ZAKŁADKĄ q:

// Prosty kod wywołujący funkcję

#include void setup()

{

// adres I2C MCP23008

#define MCP_ADDR 0x20

// Dołącz do magistrali I2C jako master

Wire.początek();

// Rozpocznij komunikację szeregową i ustaw szybkość transmisji

Serial.początek(9600);

// Rozpocznij transmisję z danym urządzeniem na magistrali I2C

Wire.beginTransmission(MCP_ADDR);

// Wybierz rejestr IODIR – I/O DIRECTION REGISTER

Wire.write(0x00);

// Wybierz żądaną operację (wyjście)

Wire.write(0x00);

// Wybierz rejestr KONFIGURACJI

Wire.write(0x05);

// Wybierz żądaną operację

Wire.write(0x0E);

// zakończ transmisję

Wire.endTransmission();

}

pusta pętla()

{

a1_on();

opóźnienie (1000);

a1_off();

opóźnienie (1000);

a2_on();

opóźnienie (1000);

a2_off();

opóźnienie (1000);

a3_on();

opóźnienie (1000);

a3_off();

opóźnienie (1000);

a4_on();

opóźnienie (1000);

a4_off();

opóźnienie (1000);

a5_on();

opóźnienie (1000);

a5_off();

opóźnienie (1000);

a6_on();

opóźnienie (1000);

a6_off();

opóźnienie (1000);

a7_on();

opóźnienie (1000);

a7_off();

opóźnienie (1000);

a8_on();

opóźnienie (1000);

a8_off();

}

KOD POD ZAKŁADKĄ q1:

// Ten kod służy do włączania i wyłączania przekaźnika 1 na pokładzie

nieważne a1_on() {

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x01);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a1_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

KOD POD ZAKŁADKĄ q2:

// Ten kod służy do włączania i wyłączania przekaźnika 2 na pokładzie

nieważne a2_on() {

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x02);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a2_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

KOD POD ZAKŁADKĄ q3:// Ten kod służy do włączania i wyłączania przekaźnika 3 na pokładzie

nieważne a3_on()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x04);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a3_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

Krok 5: Programowanie - II

Programowanie - II
Programowanie - II

KOD POD ZAKŁADKĄ q4:

// Ten kod służy do włączania i wyłączania przekaźnika 4 na pokładzie

nieważne a4_on()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x08);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a4_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

KOD POD ZAKŁADKĄ q5:

// Ten kod służy do włączania i wyłączania przekaźnika 5 na pokładzie

nieważne a5_on()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x10);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a5_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

KOD POD TAB q6:// Ten kod służy do włączania i wyłączania przekaźnika 6 na pokładzie

nieważne a6_on()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x20);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a6_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

KOD POD TAB q7:// Ten kod służy do włączania i wyłączania przekaźnika 7 na pokładzie

nieważne a7_on() {

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x40);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a7_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

KOD POD TAB q8: // Ten kod służy do włączania i wyłączania przekaźnika 8 na pokładzie

nieważne a8_on() {

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x80);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

nieważne a8_off()

{

// Rozpocznij transmisję

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

opóźnienie(1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Wyjście na ekran

Serial.print("Wartość GPIO:");

Serial.println(GPIO, BIN);

}

Krok 6: Wideo

W przypadku dalszych pytań zapraszamy do odwiedzenia naszej strony:

www.dcubetechnologies.com

Zalecana: