
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02

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
Zalecana:
Alexa Smart Home System przy użyciu modułu przekaźnika NodeMCU: 10 kroków

Alexa Smart Home System przy użyciu modułu przekaźnika NodeMCU: W tym projekcie IoT stworzyłem system Alexa Smart Home Automation przy użyciu NodeMCU ESP8266 & Moduł przekaźnikowy. Możesz łatwo sterować oświetleniem, wentylatorem i innymi urządzeniami gospodarstwa domowego za pomocą polecenia głosowego. Aby połączyć inteligentny głośnik Echo Dot z
Ręczna gra nożyczek Arduino Paper Rock przy użyciu wyświetlacza LCD 20x4 z I2C: 7 kroków

Przenośna gra Arduino Paper Rock Scissors wykorzystująca wyświetlacz LCD 20x4 z I2C: Witam wszystkich, a może powinienem powiedzieć "Hello World!" Jest to podręczna gra Arduino Paper Rock Scissors wykorzystująca wyświetlacz LCD I2C 20x4. I
Obliczanie wilgotności, ciśnienia i temperatury przy użyciu BME280 i interfejsu fotonowego.: 6 kroków

Obliczanie wilgotności, ciśnienia i temperatury za pomocą BME280 i interfejsu fotonowego.: Natrafiamy na różne projekty, które wymagają monitorowania temperatury, ciśnienia i wilgotności. W ten sposób zdajemy sobie sprawę, że te parametry faktycznie odgrywają kluczową rolę w oszacowaniu wydajności pracy systemu w różnych warunkach atmosferycznych
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków

Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
DIY lutownica na gorące powietrze przy użyciu 12-18 woltów prądu stałego przy 2-3 amperach: 18 kroków (ze zdjęciami)

DIY lutownica na gorące powietrze przy użyciu 12-18 woltów prądu stałego przy 2-3 amperach: to moja pierwsza publikacja eva artykułu o majsterkowaniu w Internecie. Więc przepraszam za literówki, protokoły itp. Poniższe instrukcje pokazują, jak zrobić PRACOWĄ lutownicę na gorące powietrze odpowiednią do WSZYSTKICH zastosowań wymagających lutowania. To lutowanie gorącym powietrzem