Реле времени

ataman-007
Offline
Зарегистрирован: 19.09.2016

Доброго времени суток!

Я новичек. У меня проблема.  нашел скетч для включения светодиода с задержкой. Пробовал реле китайское

тоже работает. Мне конечно лучше реле. Но в этом скетче только на один светодиод управление одной

кнопкой. а мне нужно управление двумя реле двумя кнопками независимо друг от друга. хочу управлять ставнями.

одно реле подымает и другое реле опускает. задержка каждого реле 20 сек на отключение. потому что мотор работает если кнопку держишь пока ставня до конца не опустится. а опускается или подымается примерно 20 сек.

Вот скетч.

 

int lamp = 2; // ЛАМПА
int breaker = 3; // ВЫКЛЮЧАТЕЛЬ
int SEK = 0; //Таймер времени
unsigned long wait = 0;
boolean state = false;
#define pulse 2
#define delayOff 20
 
void setup()
{
//Serial.begin(9600);
pinMode(lamp, OUTPUT);
pinMode(breaker, INPUT);
//digitalWrite(breaker, HIGH);
}
 
void loop()
{
  int button = 0; // локальная переменная
  button = digitalRead(breaker);
  if(button == HIGH){
  if(SEK == 0) state = true;}
  if(state == true){
  if(millis() - wait > 1000){
  wait = millis();
  SEK++;}}
  if(button == HIGH){
  if(SEK > pulse){
  SEK = -10;
  state = false;}}
 
  if(SEK >= 1 && SEK < pulse) digitalWrite(lamp,HIGH);
  if(SEK > delayOff){
  SEK = 0;
  digitalWrite(lamp, LOW);
  state = false;}
  if(SEK == -10){
  digitalWrite(lamp, button);
  if(button == LOW) SEK = 0;}
 
  /*Serial.print("State - ");
  Serial.print(state);
  Serial.print(" Delay - ");
  Serial.println(SEK);
  delay(250);*/
}
 
 
Источник
 
Помогите пожалуйста.
 
 
Пробовал вот так не идет
int lamp1 = 2; // ЛАМПА
int lamp2 = 4;
int breaker1 = 3; // ВЫКЛЮЧАТЕЛЬ
int breaker2 = 5;
int SEK = 0; //Таймер времени
unsigned long wait = 0;
boolean state = false;
#define pulse 2
#define delayOff 20
 
void setup()
{
//Serial.begin(9600);
pinMode(lamp1, OUTPUT);
pinMode(lamp2, OUTPUT);
pinMode(breaker1, INPUT);
pinMode(breaker2, INPUT);
//digitalWrite(breaker, HIGH);
}
 
void loop()
{
  int button = 0; // локальная переменная
  button = digitalRead(breaker1);
  button = digitalRead(breaker2);
  if(button == HIGH){
  if(SEK == 0) state = true;}
  if(state == true){
  if(millis() - wait > 1000){
  wait = millis();
  SEK++;}}
  if(button == HIGH){
  if(SEK > pulse){
  SEK = -10;
  state = false;}}
 
  if(SEK >= 1 && SEK < pulse) digitalWrite(lamp1,HIGH);
  if(SEK >= 1 && SEK < pulse) digitalWrite(lamp2,HIGH);
  if(SEK > delayOff){
  SEK = 0;
  digitalWrite(lamp1, LOW);
  digitalWrite(lamp2, LOW);
  state = false;}
  if(SEK == -10){
  digitalWrite(lamp1, button);
  digitalWrite(lamp2, button);
  if(button == LOW) SEK = 0;}
 
  /*Serial.print("State - ");
  Serial.print(state);
  Serial.print(" Delay - ");
  Serial.println(SEK);
  delay(250);*/
}

 

kadir544
Offline
Зарегистрирован: 25.11.2015

простите я тоже новичек и в вашем коде ничего не понял. но вопрос. вы хотите нажатием кнопки подать 1 на пин что бы он сохранялся 20 сек и нажатием другой на другой пин тоже самое?

kadir544
Offline
Зарегистрирован: 25.11.2015

.

kadir544
Offline
Зарегистрирован: 25.11.2015

глюк

vvadim
Offline
Зарегистрирован: 23.05.2012

так ставнями не управляют.

нужны обязательно концевые выключатели

режимы работы кнопок по усмотрению - держим-двигаемся или нажали-поехали до концевика
можно комбинированный вариант

kadir544
Offline
Зарегистрирован: 25.11.2015

vvadim пишет:

так ставнями не управляют.

нужны обязательно концевые выключатели

режимы работы кнопок по усмотрению - держим-двигаемся или нажали-поехали до концевика
можно комбинированный вариант

а зачем там вообще ардуино тогда? Если конечно это не пульт ду. 

ataman-007
Offline
Зарегистрирован: 19.09.2016

Да вы меня правильно поняли каждая кнопка управляет отдельно.  На ставнях концевики работают.

Просто не хочу кнопки держать пока закроются или откроются ставни. Первый скетч рабочий но только на одну кнопку . мне нужно  всего лишь переделать первый скетч он рабочий.  Я просто не знаю как это сделать . Две кнопки два реле . каждое при нажатии на кнопку включалось и только через 20 сек отключалось. Вот вообщем то и все.  Если кто подскажет буду благодарен.

vvadim
Offline
Зарегистрирован: 23.05.2012

ataman-007 пишет:

Да вы меня правильно поняли каждая кнопка управляет отдельно.  На ставнях концевики работают.

Просто не хочу кнопки держать пока закроются или откроются ставни. Первый скетч рабочий но только на одну кнопку . мне нужно  всего лишь переделать первый скетч он рабочий.  Я просто не знаю как это сделать . Две кнопки два реле . каждое при нажатии на кнопку включалось и только через 20 сек отключалось. Вот вообщем то и все.  Если кто подскажет буду благодарен.

 

нафига 20 сек если есть концевики ?

ataman-007
Offline
Зарегистрирован: 19.09.2016

Я нажимаю на кнопку ставня опускается вниз отпускаю остонавливается и стою жду 20 сек пока она не закроется

совсем. а я хочу нажать на кнопку и идти дальше по своим делам пускай сама закрывается .  вот и вся проблема. мне нужно чтоб я нажал на кнопку реле включилось и через 20 сек выключилось

ataman-007
Offline
Зарегистрирован: 19.09.2016

Я не хочу держать. я хочу нажать и идти дальше по своим делам. а оно хай сомо закрывается. Автоматика должна быть полной.

kadir544
Offline
Зарегистрирован: 25.11.2015

Так зачем 20 сек если концевик отключает питание мотора

kadir544
Offline
Зарегистрирован: 25.11.2015

Так зачем 20 сек если концевик отключает питание мотора