Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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
- 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
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
Krok 4: 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
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