Помогите разобраться с тактовой кнопкой

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Итак имеется радиоуправляемый модуль.Вот с Ебай (http://www.ebay.com/itm/IC2262-2272-4-channel-wireless-remote-control-ki...)

Затея в следующим.Необходимо добиться режима фиксаций.То есть при нажатий на кнопки.Реле на глухо замыкалась.Читал что не хватает тока для срабатывание обмотки катушки реле.Но, это не важно.Можно транзистор впаять.Господа форумчани прощу написать скетч.Кодинг для радиоуправление

at0mix
at0mix аватар
Offline
Зарегистрирован: 23.11.2015

А причем тут "тактовая кнопка" и собственно ардуино?

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Ну кнопка та без фиксаций получается.Как реализовать с фиксаций? Как вот на видео.Посмотрите (https://www.youtube.com/watch?v=fHSrYgY7K0E)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Proger_xxx  , чего ты хочешь ?

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

О наконец-то.Надеюсь поможете! Итак у меня есть релейный модуль на 4 канала.Необходимо управлять (Включать-Отключать) этими реле.То есть нажал на кнопку "А" включилась лампа.Нажал обратно кнопку "А" выключилась.Вот и все! И так на все четыре канала.На пульте четыре кнопки на эти самые реле

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

я на этом радиомодуле сделал управление  и 4х , и 8х модулем...
возможно управление до 8......1024 реле , можно и 4096 реле...
тибе надо код управлением реле ?

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Да конечно.Если вам не трудно

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Proger_xxx пишет:

Да конечно.Если вам не трудно

да !
по времени - надо искать коды...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

напомни завтра - аха ?

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Админ только не забудь пожалуйста.Кроме тебя мне никто не поможет.Люди молчать либо не знают.Либо лень искать

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

моя - мне админ !!!!

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Угарно))) Ладно залей как только сможешь

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Может быть....
Не угарно....
Кажися делал для - А+А ,  А+В , A+C ...........  для каналов 1 , 2 , 3 ................... 

не помню , нафиг не надо было

// Nano , 8 Canal
// RF >>>   7    6    5    4    3    2    1
//          DA   D2   D0   D3   D1   VCC  GND
// Arduino  2    5    3    6    4    VCC  GND
#define Pause 1000
int n;
#define CanalInterruptPin 2
byte Canal[ ] = { 7, 8, 9, 10, 11, 12, 13, A0 };
byte CanalState[ ] = { 1, 1, 1, 1, 1, 1, 1, 1 };
volatile byte CodeBtnRF = 0;
volatile byte CodeBtnRFCount = 0;
int CodeBtn = 0;
byte CodeBtnTemp1 = 0;
byte CodeBtnTemp2 = 0;
unsigned long Time;
int TimeStrobe = 2000;
//*********************************************************************
void setup()
{  
  Serial.begin(9600); 
  for ( n = 0; n < 8; n++ )
  {
    pinMode( Canal[ n ], OUTPUT );      
  }
  attachInterrupt( 0, ButtonPush, RISING );
}
//*********************************************************************
void ButtonPush()
{
  CodeBtnRF = PIND>>3;
  CodeBtnRF = CodeBtnRF & B00001111;
  CodeBtnRFCount++;
}
//*********************************************************************
void Otladka()
{
  Serial.println( CodeBtnRFCount, HEX ); 
  Serial.println( CodeBtnRF, HEX ); 
  Serial.println( CodeBtnTemp1, HEX );      
  Serial.println( CodeBtnTemp2, HEX );    
  Serial.println( CodeBtn, DEC );
  Serial.println( " " );  
  delay( Pause );
}
//*********************************************************************
void loop()
{
/*
  digitalWrite( Canal[ 0 ], LOW );
  delay( 500 );
  digitalWrite( Canal[ 0 ], HIGH );
  delay( 500 );
  
  digitalWrite( Canal[ 1 ], LOW );
  delay( 500 );
  digitalWrite( Canal[ 1 ], HIGH );
  delay( 500 );
  
  digitalWrite( Canal[ 2 ], LOW );
  delay( 500 );
  digitalWrite( Canal[ 2 ], HIGH );
  delay( 500 );
  
  digitalWrite( Canal[ 3 ], LOW );
  delay( 500 );
  digitalWrite( Canal[ 3 ], HIGH );
  delay( 500 );
*/
  
  if ( 1 == CodeBtnRFCount )
  {
    Time = millis();
    CodeBtnTemp1 = CodeBtnRF;
    CodeBtnRFCount++;
  }
  if ( 2 == CodeBtnRFCount )
  {
    if ( ( millis() - Time ) > TimeStrobe )
    {
      CodeBtnRFCount = 0;
    }
  }
  if ( 3 == CodeBtnRFCount )
  {
    CodeBtnTemp2 = CodeBtnRF;
    CodeBtn = ( CodeBtnTemp1<<4 ) | CodeBtnTemp2;
    CodeBtnRFCount = 0;
  }

  Otladka();

// канал 1
  if ( 17 == CodeBtn )
  {
    CanalState[ 0 ] = !CanalState[ 0 ];
    digitalWrite( Canal[ 0 ], CanalState[ 0 ] );
    CodeBtn = 0;
  }
// канал 2
  if ( 18 == CodeBtn )
  {
    CanalState[ 1 ] = !CanalState[ 1 ];
    digitalWrite( Canal[ 1 ], CanalState[ 1 ] );
    CodeBtn = 0;
  }
// канал 3
  if ( 20 == CodeBtn )
  {
    CanalState[ 2 ] = !CanalState[ 2 ];
    digitalWrite( Canal[ 2 ], CanalState[ 2 ] );
    CodeBtn = 0;
  }
// канал 4
  if ( 24 == CodeBtn )
  {
    CanalState[ 3 ] = !CanalState[ 3 ];
    digitalWrite( Canal[ 3 ], CanalState[ 3 ] );
    CodeBtn = 0;
  }
// канал 5
  if ( 33 == CodeBtn )
  {
    CanalState[ 4 ] = !CanalState[ 4 ];
    digitalWrite( Canal[ 4 ], CanalState[ 4 ] );
    CodeBtn = 0;
  }
// канал 6
  if ( 34 == CodeBtn )
  {
    CanalState[ 5 ] = !CanalState[ 5 ];
    digitalWrite( Canal[ 5 ], CanalState[ 5 ] );
    CodeBtn = 0;
  }
// канал 7
  if ( 36 == CodeBtn )
  {
    CanalState[ 6 ] = !CanalState[ 6 ];
    digitalWrite( Canal[ 6 ], CanalState[ 6 ] );
    CodeBtn = 0;
  }
// канал 8
  if ( 40 == CodeBtn )
  {
    CanalState[ 7 ] = !CanalState[ 7 ];
    digitalWrite( Canal[ 7 ], CanalState[ 7 ] );
    CodeBtn = 0;
  }
// канал AllOff
  if ( CodeBtn == 136 )
  {
    PORTC = PORTC | B11111111;
    for ( n = 0; n < 8; n++ )
    {
      CanalState[ n ] = 1;
    }
    CodeBtn = 0;
  }
}
//*********************************************************************

 

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Ооо спасибо! Примерно понял логику

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

и я - почти понял :)