Здравейте
Добри поздрави .. !!
Аз (Somanshu Choudhary) от името на технологичните компании Dcube ще контролираме Релета чрез I2C протокол, използвайки Arduino nano и MCP23008.
градина:
Стъпка 1: Общ преглед
- Устройството MCP23X08 осигурява 8-битово, общо предназначение, паралелно I / O разширение за I2C шина или SPI приложения.
- MCP23X08 се състои от множество 8-битови конфигурационни регистри за избор на вход, изход и полярност. Системният капитан може да разреши I / O като вход или изход чрез записване на I / O конфигурационни бита. Данните за всеки вход или изход се съхраняват в съответния входен или изходен регистър. Полярността на регистъра на входния порт може да се инвертира с регистъра за инверсия на поляритета. Всички регистри могат да бъдат прочетени от системния капитан.
- DATASHEET LINK: http: //ww1.microchip.com/downloads/en/DeviceDoc/21 …
Стъпка 2: Какво имате нужда / Връзки
1.Arduino Nano LINK: http://store.arduino.cc/
2. Щит за Arduino Nano LINK: http: //www.controleverything.com/content/I2C-Mast …
3.USB кабел тип A до микро тип B 6 фута дълъг LINK: http: //www.controleverything.com/content/USB-Cabl …
4.I²C Кабел LINK: http: //www.controleverything.com/content/I2C-Cabl …
5. Осем SPDT I²C контролирани релета LINK: http: //www.controleverything.com/content/Relay-Co …
6. Адаптор LINK: http: //www.amazon.in/Sharp-Plus-Adapter-Supported -…
Стъпка 3: Схема на веригата
Стъпка 4: Програмиране - I
- В този код използвам Paradigm за програмиране на функции
- Използвах различни раздели за дефиниране на функции и функционално извикване
CODE UNDER THE TAB q:
// Прост код за извикване на функции
#include
void setup ()
{
// I2C адрес на MCP23008
#define MCP_ADDR 0x20
// Присъединете се към I2C Bus като главен
Wire.begin ();
// Стартиране на серийната комуникация и задаване на скоростта на предаване
Serial.begin (9600);
// Започва предаване с дадено устройство на I2C шина
Wire.beginTransmission (MCP_ADDR);
// Изберете IODIR - I / O DIRECTION REGISTER регистър
Wire.write (0x00);
// Изберете необходимата операция (изход)
Wire.write (0x00);
// Изберете регистър CONFIGURATION
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 ();
}
CODE UNDER THE TAB q1:
// Този код е за включване и изключване на реле 1 на борда
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);
}
анулира 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);
}
CODE UNDER THE TAB q2:
// Този код е за включване и изключване на реле 2 на борда
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);
}
анулира 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);
}
CODE UNDER TABE под TAB q3:
// Този код е за включване и изключване на реле 3 на борда
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);
}
анулира 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
CODE UNDER THE TAB Q4:
// Този код е за включване и изключване на реле 4 на борда
void 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);
}
анулира 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 на борда
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);
}
анулира 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);
}
CODE UNDER THE TAB q6:
// Този код е за включване и изключване на реле 6 на борда
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);
}
анулира 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);
}
CODE UNDER THE TAB q7:
// Този код е за включване и изключване на реле 7 на борда
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);
}
CODE UNDER THE TAB 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);
}
анулира 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