Z-Uno Управление ворот

Данный раздел предназначен для русскоязычных пользователей. Если вы владеете английским, рекомендуем также просмотреть общую ветку обсуждений на английском.
Post Reply
Clie
Posts: 11
Joined: 06 Jun 2017 12:58

Z-Uno Управление ворот

Post by Clie »

Решил сделать управление въездных ворот на базе Z-Uno + Roger Technology (привод)
Имеется датчик состояния ворот (геркон-триггер на состояние открыто) + 2 реле на закрытие и открытие
Я совсем не программер, но написал (переписал с примеров) код, но в HC2 не отображается датчик состояния. Реле работают нормально.
Прошу помощи.В чем проблема?

Code: Select all

//
  
#define LedPin1     9
#define LedPin2     10
#define LED_PIN1    13
#define BTN_PIN1     17
#define ZUNO_CHANNEL_NUMBER_ONE 1     

// Variables
  
byte switchValue1 = 1;
byte switchValue2 = 1;
byte lastButton1State;

// Always connect

ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);

//Channels setup

ZUNO_SETUP_CHANNELS(
  ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
  ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2),
  ZUNO_SENSOR_BINARY(ZUNO_SENSOR_BINARY_TYPE_GENERAL_PURPOSE, getter1)
);


void setup() 
  {
    pinMode(LedPin1, OUTPUT);
    pinMode(LedPin2, OUTPUT);
    pinMode(LED_PIN1, OUTPUT); 
    pinMode(BTN_PIN1, INPUT_PULLUP);
  }


void loop() {
  
      byte currenButton1State = digitalRead(BTN_PIN1);
          if (currenButton1State != lastButton1State)           
              {lastButton1State = currenButton1State;                 
                zunoSendReport(ZUNO_CHANNEL_NUMBER_ONE);                
          if (currenButton1State == LOW) 
              {digitalWrite(LED_PIN1, HIGH);} 
               else {digitalWrite(LED_PIN1, LOW);}
              }
             }
      byte getter1() 
            {if (lastButton1State == 0) 
                  {return 0xff;}
             else 
                  {return 0;}
            }

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

 
Спасибо за помощь!
Clie
Posts: 11
Joined: 06 Jun 2017 12:58

Re: Z-Uno Управление ворот

Post by Clie »

Поправил, заработало, но

При включении Реле1 срабатывает датчик состояния. Почему? :(

Code: Select all

//
  
#define LedPin1     9
#define LedPin2     10
#define LED_PIN1    13
#define BTN_PIN1     17
#define ZUNO_CHANNEL_NUMBER_ONE 1     

// Variables
  
byte switchValue1 = 1;
byte switchValue2 = 1;
byte lastButton1State;

// Always connect

ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);

//Channels setup

ZUNO_SETUP_CHANNELS(
  ZUNO_SENSOR_BINARY(ZUNO_SENSOR_BINARY_TYPE_GENERAL_PURPOSE, getter1),
  ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
  ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2)
 );


void setup() 
  {
    pinMode(LedPin1, OUTPUT);
    pinMode(LedPin2, OUTPUT);
    pinMode(LED_PIN1, OUTPUT); 
    pinMode(BTN_PIN1, INPUT_PULLUP);
  }



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 loop() {
  
      byte currenButton1State = digitalRead(BTN_PIN1);
          if (currenButton1State != lastButton1State)           
              {lastButton1State = currenButton1State;                 
                zunoSendReport(ZUNO_CHANNEL_NUMBER_ONE);                
          if (currenButton1State == LOW) 
              {digitalWrite(LED_PIN1, HIGH);} 
               else {digitalWrite(LED_PIN1, LOW);}
              }}
             
      byte getter1() 
            {if (lastButton1State == 0) 
                  {return 0xff;}
             else 
                  {return 0;}}

Post Reply