mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 01:24:04 +00:00
[P124] Add plugin Output - I2C Multi Relay
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
When running this sketch please make sure there is only one
|
||||
Multi Channel Relay module connected to your board, otherwise
|
||||
it may not work to change module address, or cause other
|
||||
unpredictable issue.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <multi_channel_relay.h>
|
||||
|
||||
|
||||
int new_i2c_address = 0x21;
|
||||
|
||||
Multi_Channel_Relay relay;
|
||||
|
||||
void setup() {
|
||||
uint8_t old_address = 0;
|
||||
uint8_t retry = 0;
|
||||
|
||||
DEBUG_PRINT.begin(9600);
|
||||
while (!DEBUG_PRINT);
|
||||
|
||||
// // Set I2C address by default and start relay
|
||||
relay.begin();
|
||||
|
||||
/* Scan I2C device detect device address */
|
||||
while ((retry++ < 10) && (old_address == 0x00)) {
|
||||
old_address = relay.scanI2CDevice();
|
||||
delay(100);
|
||||
}
|
||||
|
||||
if ((0x00 == old_address) || (0xff == old_address)) {
|
||||
while (1);
|
||||
}
|
||||
|
||||
relay.changeI2CAddress(old_address, new_i2c_address); /* Set I2C address and save to Flash */
|
||||
DEBUG_PRINT.print("Address 0x");
|
||||
DEBUG_PRINT.print(new_i2c_address, HEX);
|
||||
DEBUG_PRINT.println(" has been saved to flash.");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
#include <multi_channel_relay.h>
|
||||
|
||||
/**
|
||||
channle: 8 7 6 5 4 3 2 1
|
||||
state: 0b00000000 -> 0x00 (all off)
|
||||
state: 0b11111111 -> 0xff (all on)
|
||||
*/
|
||||
|
||||
Multi_Channel_Relay relay;
|
||||
|
||||
void setup() {
|
||||
|
||||
DEBUG_PRINT.begin(9600);
|
||||
while (!DEBUG_PRINT);
|
||||
|
||||
// Set I2C address and start relay
|
||||
relay.begin(0x11);
|
||||
|
||||
/* Begin Controlling Relay */
|
||||
DEBUG_PRINT.println("Channel 1 on");
|
||||
relay.turn_on_channel(1);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 2 on");
|
||||
relay.turn_off_channel(1);
|
||||
relay.turn_on_channel(2);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 3 on");
|
||||
relay.turn_off_channel(2);
|
||||
relay.turn_on_channel(3);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 4 on");
|
||||
relay.turn_off_channel(3);
|
||||
relay.turn_on_channel(4);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 5 on");
|
||||
relay.turn_off_channel(4);
|
||||
relay.turn_on_channel(5);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 6 on");
|
||||
relay.turn_off_channel(5);
|
||||
relay.turn_on_channel(6);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 7 on");
|
||||
relay.turn_off_channel(6);
|
||||
relay.turn_on_channel(7);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 8 on");
|
||||
relay.turn_off_channel(7);
|
||||
relay.turn_on_channel(8);
|
||||
delay(500);
|
||||
relay.turn_off_channel(8);
|
||||
|
||||
relay.channelCtrl(CHANNLE1_BIT |
|
||||
CHANNLE2_BIT |
|
||||
CHANNLE3_BIT |
|
||||
CHANNLE4_BIT |
|
||||
CHANNLE5_BIT |
|
||||
CHANNLE6_BIT |
|
||||
CHANNLE7_BIT |
|
||||
CHANNLE8_BIT);
|
||||
DEBUG_PRINT.print("Turn all channels on, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
|
||||
relay.channelCtrl(CHANNLE1_BIT |
|
||||
CHANNLE3_BIT |
|
||||
CHANNLE5_BIT |
|
||||
CHANNLE7_BIT);
|
||||
DEBUG_PRINT.print("Turn 1 3 5 7 channels on, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
|
||||
relay.channelCtrl(CHANNLE2_BIT |
|
||||
CHANNLE4_BIT |
|
||||
CHANNLE6_BIT |
|
||||
CHANNLE8_BIT);
|
||||
DEBUG_PRINT.print("Turn 2 4 6 8 channels on, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
|
||||
|
||||
relay.channelCtrl(0);
|
||||
DEBUG_PRINT.print("Turn off all channels, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
|
||||
}
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
#include <multi_channel_relay.h>
|
||||
|
||||
/**
|
||||
channle: 4 3 2 1
|
||||
state: 0b0000 -> 0x00 (all off)
|
||||
state: 0b1111 -> 0x0f (all on)
|
||||
*/
|
||||
|
||||
Multi_Channel_Relay relay;
|
||||
|
||||
void setup() {
|
||||
DEBUG_PRINT.begin(9600);
|
||||
while (!DEBUG_PRINT);
|
||||
|
||||
// Set I2C address and start relay
|
||||
relay.begin(0x11);
|
||||
|
||||
/* Begin Controlling Relay */
|
||||
DEBUG_PRINT.println("Channel 1 on");
|
||||
relay.turn_on_channel(1);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 2 on");
|
||||
relay.turn_off_channel(1);
|
||||
relay.turn_on_channel(2);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 3 on");
|
||||
relay.turn_off_channel(2);
|
||||
relay.turn_on_channel(3);
|
||||
delay(500);
|
||||
DEBUG_PRINT.println("Channel 4 on");
|
||||
relay.turn_off_channel(3);
|
||||
relay.turn_on_channel(4);
|
||||
delay(500);
|
||||
relay.turn_off_channel(4);
|
||||
|
||||
relay.channelCtrl(CHANNLE1_BIT |
|
||||
CHANNLE2_BIT |
|
||||
CHANNLE3_BIT |
|
||||
CHANNLE4_BIT);
|
||||
DEBUG_PRINT.print("Turn all channels on, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
|
||||
relay.channelCtrl(CHANNLE1_BIT |
|
||||
CHANNLE3_BIT);
|
||||
DEBUG_PRINT.print("Turn 1 3 channels on, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
|
||||
relay.channelCtrl(CHANNLE2_BIT |
|
||||
CHANNLE4_BIT);
|
||||
DEBUG_PRINT.print("Turn 2 4 channels on, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
|
||||
|
||||
relay.channelCtrl(0);
|
||||
DEBUG_PRINT.print("Turn off all channels, State: ");
|
||||
DEBUG_PRINT.println(relay.getChannelState(), BIN);
|
||||
|
||||
delay(2000);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
#include <multi_channel_relay.h>
|
||||
|
||||
#define USE_8_CHANNELS (1)
|
||||
|
||||
Multi_Channel_Relay relay;
|
||||
|
||||
void setup() {
|
||||
DEBUG_PRINT.begin(9600);
|
||||
while (!DEBUG_PRINT);
|
||||
|
||||
// Set I2C address and start relay
|
||||
relay.begin(0x11);
|
||||
|
||||
/* Read firmware version */
|
||||
DEBUG_PRINT.print("firmware version: ");
|
||||
DEBUG_PRINT.print("0x");
|
||||
DEBUG_PRINT.print(relay.getFirmwareVersion(), HEX);
|
||||
DEBUG_PRINT.println();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user