Z-Uno 5 reley
Posted: 29 Dec 2019 20:16
Добра всем!
Прошу помощи, 2 вопроса...
Попытка создать устройсто упр. 5 реле на PN5-10DA - на 80% получилось.
Последнee устройство 5 , ни в какую не обновляется статус в smarthome ui после передергивания питания. (сброс всех каналов после подкл. питания на офф. по скетчу ниже). Горит "Вкл." 5 канал. Остальные 4 реле - все отображается норм, "выкл" статус меняется...
+ Вопрос по ходу, каким образом записывать текущее состояние каждого реле, что бы пи пропадании и возобновлении питания - возвращалось исходное?
Код:
// Pins definitions
#define LedPin1 9
#define LedPin2 10
#define LedPin4 11
#define LedPin3 12
#define LedPin5 14
// Global variables to store data reported via getters
byte switchValue1 = 0;
byte switchValue2 = 0;
byte switchValue3 = 0;
byte switchValue4 = 0;
byte switchValue5 = 0;
ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);
ZUNO_SETUP_ASSOCIATIONS(ZUNO_ASSOCIATION_GROUP_SET_VALUE); // Send Basic Set to association group
// Set up 5 channels
ZUNO_SETUP_CHANNELS(
ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2),
ZUNO_SWITCH_BINARY(getterSwitch3, setterSwitch3),
ZUNO_SWITCH_BINARY(getterSwitch4, setterSwitch4),
ZUNO_SWITCH_BINARY(getterSwitch5, setterSwitch5)
);
void setup() {
// set up I/O pins. Analog and PWM will be automatically set up on analogRead/analogWrite functions call
pinMode(LedPin1, OUTPUT);
pinMode(LedPin2, OUTPUT);
pinMode(LedPin3, OUTPUT);
pinMode(LedPin4, OUTPUT);
pinMode(LedPin5, OUTPUT);
digitalWrite(LedPin1, HIGH);
digitalWrite(LedPin2, HIGH);
digitalWrite(LedPin3, HIGH);
digitalWrite(LedPin4, HIGH);
digitalWrite(LedPin5, HIGH);
zunoSendReport(1);
zunoSendReport(2);
zunoSendReport(3);
zunoSendReport(4);
zunoSendReport(5);
}
void loop() {
// Empty
}
// Getters and setters
//1
void setterSwitch1(byte value) {
digitalWrite(LedPin1, (value > 0) ? LOW : HIGH);
switchValue1 = value;
}
byte getterSwitch1() {
return switchValue1;
}
//2
void setterSwitch2(byte value) {
digitalWrite(LedPin2, (value > 0) ? LOW : HIGH);
switchValue2 = value;
}
byte getterSwitch2() {
return switchValue2;
}
//3
void setterSwitch3(byte value) {
digitalWrite(LedPin3, (value > 0) ? LOW : HIGH);
switchValue3 = value;
}
byte getterSwitch3() {
return switchValue3;
}
//4
void setterSwitch4(byte value) {
digitalWrite(LedPin4, (value > 0) ? LOW : HIGH);
switchValue4 = value;
}
byte getterSwitch4() {
return switchValue4;
}
//5
void setterSwitch5(byte value) {
digitalWrite(LedPin5, (value > 0) ? LOW : HIGH);
switchValue5 = value;
}
byte getterSwitch5() {
return switchValue5;
}
Прошу помощи, 2 вопроса...
Попытка создать устройсто упр. 5 реле на PN5-10DA - на 80% получилось.
Последнee устройство 5 , ни в какую не обновляется статус в smarthome ui после передергивания питания. (сброс всех каналов после подкл. питания на офф. по скетчу ниже). Горит "Вкл." 5 канал. Остальные 4 реле - все отображается норм, "выкл" статус меняется...
+ Вопрос по ходу, каким образом записывать текущее состояние каждого реле, что бы пи пропадании и возобновлении питания - возвращалось исходное?
Код:
// Pins definitions
#define LedPin1 9
#define LedPin2 10
#define LedPin4 11
#define LedPin3 12
#define LedPin5 14
// Global variables to store data reported via getters
byte switchValue1 = 0;
byte switchValue2 = 0;
byte switchValue3 = 0;
byte switchValue4 = 0;
byte switchValue5 = 0;
ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);
ZUNO_SETUP_ASSOCIATIONS(ZUNO_ASSOCIATION_GROUP_SET_VALUE); // Send Basic Set to association group
// Set up 5 channels
ZUNO_SETUP_CHANNELS(
ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2),
ZUNO_SWITCH_BINARY(getterSwitch3, setterSwitch3),
ZUNO_SWITCH_BINARY(getterSwitch4, setterSwitch4),
ZUNO_SWITCH_BINARY(getterSwitch5, setterSwitch5)
);
void setup() {
// set up I/O pins. Analog and PWM will be automatically set up on analogRead/analogWrite functions call
pinMode(LedPin1, OUTPUT);
pinMode(LedPin2, OUTPUT);
pinMode(LedPin3, OUTPUT);
pinMode(LedPin4, OUTPUT);
pinMode(LedPin5, OUTPUT);
digitalWrite(LedPin1, HIGH);
digitalWrite(LedPin2, HIGH);
digitalWrite(LedPin3, HIGH);
digitalWrite(LedPin4, HIGH);
digitalWrite(LedPin5, HIGH);
zunoSendReport(1);
zunoSendReport(2);
zunoSendReport(3);
zunoSendReport(4);
zunoSendReport(5);
}
void loop() {
// Empty
}
// Getters and setters
//1
void setterSwitch1(byte value) {
digitalWrite(LedPin1, (value > 0) ? LOW : HIGH);
switchValue1 = value;
}
byte getterSwitch1() {
return switchValue1;
}
//2
void setterSwitch2(byte value) {
digitalWrite(LedPin2, (value > 0) ? LOW : HIGH);
switchValue2 = value;
}
byte getterSwitch2() {
return switchValue2;
}
//3
void setterSwitch3(byte value) {
digitalWrite(LedPin3, (value > 0) ? LOW : HIGH);
switchValue3 = value;
}
byte getterSwitch3() {
return switchValue3;
}
//4
void setterSwitch4(byte value) {
digitalWrite(LedPin4, (value > 0) ? LOW : HIGH);
switchValue4 = value;
}
byte getterSwitch4() {
return switchValue4;
}
//5
void setterSwitch5(byte value) {
digitalWrite(LedPin5, (value > 0) ? LOW : HIGH);
switchValue5 = value;
}
byte getterSwitch5() {
return switchValue5;
}