можно ли управлять 8 реле с z uno

Данный раздел предназначен для русскоязычных пользователей. Если вы владеете английским, рекомендуем также просмотреть общую ветку обсуждений на английском.
oleg38ru
Posts: 10
Joined: 08 Jan 2017 07:32

можно ли управлять 8 реле с z uno

Post by oleg38ru »

Всем привет уменя вопрос можно прикрутить 8 реле к зуне .у меня получилось только 4 . я скопировал пример со светофором(https://geektimes.ru/company/zwave/blog/273588/)
/*
*
* 4 Relays controlled thouth resistors 220Omh and optocouplers 817С
* Off — HIGH
* On — LOW
*/

// Pins definitions
#define LedPin1 9
#define LedPin2 10
#define LedPin3 11
#define LedPin4 12

// Global variables to store data reported via getters
byte switchValue1 = 1;
byte switchValue2 = 1;
byte switchValue3 = 1;
byte switchValue4 = 1;

ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);

// Set up 10 channels
ZUNO_SETUP_CHANNELS(
ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2),
ZUNO_SWITCH_BINARY(getterSwitch3, setterSwitch3),
ZUNO_SWITCH_BINARY(getterSwitch4, setterSwitch4)
);

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);
}

void loop() {
// Empty
}

// Getters and setters

void setterSwitch1(byte value) {
digitalWrite(LedPin1, (value > 0)? LOW: HIGH);
switchValue1 = value;
}

byte getterSwitch1(){
return switchValue1;
}

void setterSwitch2(byte value) {
digitalWrite(LedPin2, (value > 0)? LOW: HIGH);
switchValue2 = value;
}

byte getterSwitch2(){
return switchValue2;
}

void setterSwitch3(byte value) {
digitalWrite(LedPin3, (value > 0)? LOW: HIGH);
switchValue3 = value;
}

byte getterSwitch3(){
return switchValue3;
}

void setterSwitch4(byte value) {
digitalWrite(LedPin4, (value > 0)? LOW: HIGH);
switchValue4 = value;
}

byte getterSwitch4(){
return switchValue4;
}
, но когда попробовал увеличить количество swith binary получил ошибку компиляции
Arduino: 1.6.5 (Windows XP), Плата"Z-Wave>ME Z-Uno, Russian, Disabled, Disabled"

Изменена опция сборки, пересобираем все

Traceback (most recent call last):
File "C:\tmp\zuno-packager\build\zuno_toolchain-00.08.20-win32\build\compiler\out00-PYZ.pyz\logging", line 851, in emit
File "C:\tmp\zuno-packager\build\zuno_toolchain-00.08.20-win32\build\compiler\out00-PYZ.pyz\logging", line 724, in format
File "C:\tmp\zuno-packager\build\zuno_toolchain-00.08.20-win32\build\compiler\out00-PYZ.pyz\logging", line 467, in format
UnicodeDecodeError: 'ascii' codec can't decode byte 0xae in position 226: ordinal not in range(128)
Logged from file logging, line 1620

************* Building Arduino Sketch *************
C:\Users\29F0~1\AppData\Local\Temp\build6936783508414762416.tmp/_4_kanala.cpp
***************************************************

Preprocessing file: Print.cpp with SDCPP...
Compiling Print_sdcpp_.cpp ...
Preprocessing file: Stream.cpp with SDCPP...
Compiling Stream_sdcpp_.cpp ...
Preprocessing file: HardwareSerial.cpp with SDCPP...
Compiling HardwareSerial_sdcpp_.cpp ...
Preprocessing file: HLCore.cpp with SDCPP...
Compiling HLCore_sdcpp_.cpp ...
Preprocessing file: __4_kanala.cpp with SDCPP...
Compiling __4_kanala_sdcpp_.cpp ...
Preprocessing file: Print.cpp with SDCPP...
Compiling Print_sdcpp_.cpp ...
Preprocessing file: Stream.cpp with SDCPP...
Compiling Stream_sdcpp_.cpp ...
Preprocessing file: HardwareSerial.cpp with SDCPP...
Compiling HardwareSerial_sdcpp_.cpp ...
Preprocessing file: HLCore.cpp with SDCPP...
Compiling HLCore_sdcpp_.cpp ...
Preprocessing file: __4_kanala.cpp with SDCPP...
Compiling __4_kanala_sdcpp_.cpp ...Compiling file "LLCore_arduino.c" by means of SDCC...
sdcc: Calling preprocessor...
sdcc: sdcpp.exe -nostdinc -Wall -obj-ext=.rel -D__SDCC_STACK_AUTO -D__SDCC_MODEL_LARGE -D__SDCC_INT_LONG_REENT -D__SDCC_FLOAT_REENT -D__SDCC=3_5_0 -DSDCC=350 -D__SDCC_REVISION=9253 -D__SDCC_mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "C:\Users\52A8~1\AppData\Roaming\ARDUIN~1\packages\Z-Uno\tools\ZUNO_T~1\0008~1.20\ZUNO_T~1/sdcc/\bin\..\include\mcs51" -isystem "C:\Users\52A8~1\AppData\Roaming\ARDUIN~1\packages\Z-Uno\tools\ZUNO_T~1\0008~1.20\ZUNO_T~1/sdcc/\bin\..\include" "LLCore_arduino.c"
sdcc: Generating code...
LLCore_arduino.c:25: warning 85: in function NOPS unreferenced function argument : 'i'
LLCore_arduino.c:218: warning 85: in function delayLoops unreferenced function argument : 'v'
/Custom.h:13: error 20: Undefined identifier 'getterSwitch5'
/Custom.h:13: error 20: Undefined identifier 'setterSwitch5'
Error. SDCC returned: 1

Ошибка компиляции.

Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
я так понял больше 4 реле не получится?
oleg38ru
Posts: 10
Joined: 08 Jan 2017 07:32

Re: можно ли управлять 8 реле с z uno

Post by oleg38ru »

Задача управлять сервоприводами теплого пола
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: можно ли управлять 8 реле с z uno

Post by PoltoS »

/Custom.h:13: error 20: Undefined identifier 'getterSwitch5'
/Custom.h:13: error 20: Undefined identifier 'setterSwitch5'

Вот эти строчки наводят подозрения. Похоже, лог не от того файла, что выше
oleg38ru
Posts: 10
Joined: 08 Jan 2017 07:32

Re: можно ли управлять 8 реле с z uno

Post by oleg38ru »

вы правы лаг из немного другого скетча который ушел в небытие в процессе эксперементов но ваши слова натолкнули меня на мысль что я где то ошибся и это так . Короче всё получилось единственный момент постоянного сигнала на ногах 19,20 нет, только кратковременный импульс при нажатии.
вот скетч
/*
*
* 4 Relays controlled thouth resistors 220Omh and optocouplers 817С
* Off — HIGH
* On — LOW
*/

// Pins definitions
#define LedPin1 9
#define LedPin2 10
#define LedPin3 11
#define LedPin4 12
#define LedPin5 13
#define LedPin6 14
#define LedPin7 15
#define LedPin8 16
#define LedPin9 19
#define LedPin10 20

// Global variables to store data reported via getters
byte switchValue1 = 1;
byte switchValue2 = 1;
byte switchValue3 = 1;
byte switchValue4 = 1;
byte switchValue5 = 1;
byte switchValue6 = 1;
byte switchValue7 = 1;
byte switchValue8 = 1;
byte switchValue9 = 1;
byte switchValue10 = 1;

ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);

// Set up 10 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),
ZUNO_SWITCH_BINARY(getterSwitch6, setterSwitch6),
ZUNO_SWITCH_BINARY(getterSwitch7, setterSwitch7),
ZUNO_SWITCH_BINARY(getterSwitch8, setterSwitch8),
ZUNO_SWITCH_BINARY(getterSwitch9, setterSwitch9),
ZUNO_SWITCH_BINARY(getterSwitch10, setterSwitch10)
);

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);
pinMode(LedPin6, OUTPUT);
pinMode(LedPin7, OUTPUT);
pinMode(LedPin8, OUTPUT);
pinMode(LedPin9, OUTPUT);
pinMode(LedPin10, OUTPUT);
}

void loop() {
// Empty
}

// Getters and setters

void setterSwitch1(byte value) {
digitalWrite(LedPin1, (value > 0)? LOW: HIGH);
switchValue1 = value;
}

byte getterSwitch1(){
return switchValue1;
}

void setterSwitch2(byte value) {
digitalWrite(LedPin2, (value > 0)? LOW: HIGH);
switchValue2 = value;
}

byte getterSwitch2(){
return switchValue2;
}

void setterSwitch3(byte value) {
digitalWrite(LedPin3, (value > 0)? LOW: HIGH);
switchValue3 = value;
}

byte getterSwitch3(){
return switchValue3;
}

void setterSwitch4(byte value) {
digitalWrite(LedPin4, (value > 0)? LOW: HIGH);
switchValue4 = value;
}

byte getterSwitch4(){
return switchValue4;
}
void setterSwitch5(byte value) {
digitalWrite(LedPin5, (value > 0)? LOW: HIGH);
switchValue5 = value;
}

byte getterSwitch5(){
return switchValue5;
}
void setterSwitch6(byte value) {
digitalWrite(LedPin6, (value > 0)? LOW: HIGH);
switchValue6 = value;
}

byte getterSwitch6(){
return switchValue6;
}
void setterSwitch7(byte value) {
digitalWrite(LedPin7, (value > 0)? LOW: HIGH);
switchValue7 = value;
}

byte getterSwitch7(){
return switchValue7;
}
void setterSwitch8(byte value) {
digitalWrite(LedPin8, (value > 0)? LOW: HIGH);
switchValue8 = value;
}

byte getterSwitch8(){
return switchValue8;
}
void setterSwitch9(byte value) {
digitalWrite(LedPin9, (value > 0)? LOW: HIGH);
switchValue9 = value;
}

byte getterSwitch9(){
return switchValue9;
}
void setterSwitch10(byte value) {
digitalWrite(LedPin10, (value > 0)? LOW: HIGH);
switchValue10 = value;
}

byte getterSwitch10(){
return switchValue10;
}
joergm6
Posts: 24
Joined: 03 Nov 2016 21:16

Re: можно ли управлять 8 реле с z uno

Post by joergm6 »

Pin 19-22 не работает в данный момент
https://forum.z-wave.me/viewtopic.php?f ... 977#p64977
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: можно ли управлять 8 реле с z uno

Post by PoltoS »

Ошибку нашли. в 2.0.8 уже поправим. Действительно ноги 19-22 пока некорректно работаю
oleg38ru
Posts: 10
Joined: 08 Jan 2017 07:32

Re: можно ли управлять 8 реле с z uno

Post by oleg38ru »

я позже проверил и 17,18 пины точно такая же вещ
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: можно ли управлять 8 реле с z uno

Post by PoltoS »

всё верно, там 7 пинов таких
Константин82
Posts: 2
Joined: 29 Jan 2017 12:33

Re: можно ли управлять 8 реле с z uno

Post by Константин82 »

всем доброго времени суток, может кому пригодится, 6 реле, 3 диммера, и датчик освещенности:

/*
*
* 6 switches
* 3 dimmers
* 1 luminance sensor
*
*/

// Pins definitions
#define LedPin1 9
#define LedPin2 10
#define LedPin3 11
#define LedPin4 PWM2
#define LedPin5 PWM3
#define LedPin6 PWM4
#define LedPin7 19
#define LedPin8 20
#define LedPin9 12
#define LumiPin A2

#define SWITCH_ON 0xff
#define SWITCH_OFF 0

// Global variables to store data reported via getters
byte switchValue1 = 0;
byte switchValue2 = 0;
byte switchValue3 = 0;
byte dimValue1 = 0;
byte dimValue2 = 0;
byte dimValue3 = 0;
byte switchValue7 = 0;
byte switchValue8 = 0;
byte switchValue9 = 0;
byte lastLumiValue = 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 10 channels
ZUNO_SETUP_CHANNELS(
ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2),
ZUNO_SWITCH_BINARY(getterSwitch3, setterSwitch3),
ZUNO_SWITCH_MULTILEVEL(getterDim1, setterDim1),
ZUNO_SWITCH_MULTILEVEL(getterDim2, setterDim2),
ZUNO_SWITCH_MULTILEVEL(getterDim3, setterDim3),
ZUNO_SWITCH_BINARY(getterSwitch7, setterSwitch7),
ZUNO_SWITCH_BINARY(getterSwitch8, setterSwitch8),
ZUNO_SWITCH_BINARY(getterSwitch9, setterSwitch9),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_LUMINANCE, SENSOR_MULTILEVEL_SCALE_PERCENTAGE_VALUE, SENSOR_MULTILEVEL_SIZE_ONE_BYTE, SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS, getterLuminance)
);

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(LedPin7, OUTPUT);
pinMode(LedPin8, OUTPUT);
pinMode(LedPin9, OUTPUT);
}

void loop() {
byte currentLumiValue;

// Luminosity
currentLumiValue = (byte)(100 - analogRead(LumiPin)*25/256);
if ((currentLumiValue > (lastLumiValue + 5)) || (currentLumiValue < (lastLumiValue - 5))) {
lastLumiValue = currentLumiValue;
zunoSendReport(8);
}

}

// Getters and setters

void setterSwitch1(byte value) {
digitalWrite(LedPin1, (value > 0) ? HIGH : LOW);
switchValue1 = value;
}

byte getterSwitch1(){
return switchValue1;
}

void setterSwitch2(byte value) {
digitalWrite(LedPin2, (value > 0) ? HIGH : LOW);
switchValue2 = value;
}

byte getterSwitch2(){
return switchValue2;
}

void setterSwitch3(byte value) {
digitalWrite(LedPin3, (value > 0) ? HIGH : LOW);
switchValue3 = value;
}

byte getterSwitch3(){
return switchValue3;
}

void setterDim1(byte value) {
if (value > 99) value = 99;
analogWrite(LedPin4, ((word)value)*255/99);
dimValue1 = value;
}

byte getterDim1(void) {
return dimValue1;
}

void setterDim2(byte value) {
if (value > 99) value = 99;
analogWrite(LedPin5, ((word)value)*255/99);
dimValue2 = value;
}

byte getterDim2(void) {
return dimValue2;
}

void setterDim3(byte value) {
if (value > 99) value = 99;
analogWrite(LedPin6, ((word)value)*255/99);
dimValue3 = value;
}

byte getterDim3(void) {
return dimValue3;
}

byte getterLuminance(void) {
return lastLumiValue;
}

void setterSwitch7(byte value) {
digitalWrite(LedPin7, (value > 0) ? HIGH : LOW);
switchValue7 = value;
}

byte getterSwitch7(){
return switchValue7;
}

void setterSwitch8(byte value) {
digitalWrite(LedPin8, (value > 0) ? HIGH : LOW);
switchValue8 = value;
}

byte getterSwitch8(){
return switchValue8;
}

void setterSwitch9(byte value) {
digitalWrite(LedPin9, (value > 0) ? HIGH : LOW);
switchValue9 = value;
}

byte getterSwitch9(){
return switchValue9;
}
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: можно ли управлять 8 реле с z uno

Post by PoltoS »

Константин, если есть фото и описание, с удовольствием разместим на сайте в разделе проектов пользователей с ссылкой на автора:
http://z-uno.z-wave.me/examples/#projects
Post Reply