задержка, таймер, импульс. Как реализовать ?

aavs
Offline
Зарегистрирован: 26.01.2017

Здравствуйте. Прошу прощения за безграмотность, но сегодня первый день как пытаюсь что то сделать.

Читал материалы но немного запутался в обилии библиотек методов реализации.

При нажатии кнопка с фиксацией взаимодействует с двумя выходами. После включени первый выход должен включится через 1 сек. и остоваться включенным до окончания работы, а второй выход должен быть включен 5сек. после чего бездействовать до окончания работы.

void setup() {
   pinMode(8, OUTPUT); // 8 пин - Включает реле c задержкой 1 сек. до окончания отключения кнопки и повторного срабатывания 6 пина.
   pinMode(7, OUTPUT); // 7 пин - Включает реле сразу но на 5 сек. после отключается и бездействует до повторного срабатывания 6 пина.
   pinMode(6, INPUT);  // 6 пин - Кнопка с фиксацией подключена к земле и по умолчанию 0 
   digitalWrite(6, HIGH); //подключаем подтягивающий резистор
}
 
void loop() {
 digitalWrite(7, !digitalRead(6)); 
 digitalWrite(8, !digitalRead(6)); 
}
 
-------------------------------------------------------------------------------------------------------------------------------
 
Также необходимо сделать один из выходов, выводом который будет давать импульсы на протяжении всего срабатывания 7 пина с частатой 0,25 сек.
 
 
Пожалуйста подскажите как это правильно реализовать. 
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Ну для наала вы должны бы изучить , как на форум выкладывается код. Да и правильно его оформить

/* to_aavs.ino
  #1 реле 1->8 (relay1_pin) Включает реле c задержкой 1 сек. до окончания отключения кнопки и повторного срабатывания 6 пина.
  #2 реле 2->7 (relay2_pin) Включает реле сразу но на 5 сек. после отключается и бездействует до повторного срабатывания 6 пина.
  #3 кнопка с фиксацией->6 (btm1_pin) 1 нажата /0 нет
*/
//  #1 реле 1
const byte relay1_pin = 8;
//  #2 реле 2
const byte relay2_pin = 7;
//  #3 кнопка с фиксацией
const byte btm1_pin = 6;
void setup() {
  //  #1 реле 1
  pinMode(relay1_pin, OUTPUT);
  //  #2 реле 2
  pinMode(relay2_pin, OUTPUT);
  //  #3 кнопка с фиксацией
  pinMode(btm1_pin, INPUT_PULLUP);
}
void loop() {
  digitalWrite(relay1_pin, !digitalRead(btm1_pin));
  digitalWrite(relay2_pin, !digitalRead(btm1_pin));
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

aavs пишет:

Здравствуйте. 

Привет!

aavs пишет:

первый день как пытаюсь что то сделать.

А что поковыряться хотя бы с недельку и попытаться разобраться самому религия не позволила? 

aavs пишет:

При нажатии кнопка с фиксацией взаимодействует с двумя выходами. После включени первый выход должен включится через 1 сек. и остоваться включенным до окончания работы, а второй выход должен быть включен 5сек. после чего бездействовать до окончания работы.

Что Вы понимаете под "взаимодействует" и "включён" знаете только Вы.

aavs пишет:

void setup() {

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

aavs пишет:

частатой 0,25 сек.

Если Вы о частоте, то она в секундах не измеряется. В чём измеряется никто не знает (так и пишут "HZ"), но не в секундах точно!

aavs пишет:

Пожалуйста подскажите как это правильно реализовать. 

Правильно это делается так.

1)
Внимательно изучаете матчасть, а именно конроллер, плату (Вы даже не написали какая у Вас) и язык программирования. На этом этапе сюда можно обращаться только с просьбой посоветовать литературу и, возможно, объяснить непонятные места в ней, но ни с чем другим.

2)
садитесь и делаете, скорее всего всё получится, там делать нечего. Но если уж никак, приходите сюда, публикуете свой код (по правилам) и задаёте конкретные вопросы.

 

aavs
Offline
Зарегистрирован: 26.01.2017

Моя плата Arduino nano ATmega 168/

Дело в том что одно устройство вышло из строя и нужно реализовать то что написал.

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

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вот если настроете этот скетч, то будет Вам счастье. Полный здесь https://yadi.sk/d/yiO-01BG3B6n2N

А главный файл здесь

/* to_aavs.ino  https://yadi.sk/d/yiO-01BG3B6n2N
  #1 реле 1->8 (relay1_pin) Включает реле c задержкой 1 сек. до окончания отключения кнопки и повторного срабатывания 6 пина.
  #2 реле 2->7 (relay2_pin) Включает реле сразу но на 5 сек. после отключается и бездействует до повторного срабатывания 6 пина.
  #3 светодиод -мигалка
  #4 блок управления мигалкой
  #5 кнопка с фиксацией->6 (btm1_pin) 1 нажата /0 нет
*/
//  #1 реле 1
#include "Cl_time_relay.h"
const byte relay1_pin = 7;
Cl_time_relay Relay1;
//  #2 реле 2
const byte relay2_pin = 8;
Cl_time_relay Relay2;
//  #3 светодиод -мигалка
#include "Cl_led.h"
const byte led1_pin = 13;
Cl_led Led1; // создать
//  #4 блок управления мигалкой
#include "Cl_team_delay.h"
Cl_team_delay Team;
void func_3() {
    Led1.blink();
}
void func_4() {
    Led1.OFF();
}
//  #5 кнопка с фиксацией
#include "Cl_do_btn_dn_up.h"
const byte btn1_pin = 2;
Cl_do_btn_dn_up Do_btm1; // создать
void func_1() {
  Relay1.ON();
  Relay2.ON();
  Team.ON();
}
void func_2() {
  Relay1.OFF();
  Relay2.OFF();
  Team.OFF();
}
void setup() {
  //  #1 реле 1
  Relay1.logic = 0; // реле вкл 0
  Relay1.time_ON = 0;// нет задержки вкл
  Relay1.time_OFF = 0;// нет задержки выкл
  Relay1.setup(relay1_pin);
  //  #2 реле 2
  Relay2.logic = 0; // реле вкл 0
  Relay2.time_ON = 300;//задержка вкл 300 миллисек
  Relay2.time_OFF = 00;//задержка выкл 300 миллисек
  Relay2.setup(relay2_pin);
  //  #3 светодиод -мигалка
  Led1.T_blink = 500;//<--- это период мигания светодиода
  Led1.logic = 1;
  Led1.setup(led1_pin);
  //  #4 блок управления мигалкой
  Team.time_ON = 1000;//задержка вкл 1000 миллисек=1 сек
  Team.time_OFF = 00;//задержка выкл 300 миллисек
  Team.setup(& func_3 , & func_4);
  //  #5 кнопка с фиксацией
  Do_btm1.logic = 0; // когда 0 это нажатая кнопка
  Do_btm1.setup(btn1_pin);
}
void loop() {
  //  #1 реле 1
  Relay1.loop();
  //  #2 реле 2
  Relay2.loop();
  //  #3 светодиод -мигалка
   Led1.loop();
  //  #4 блок управления мигалкой
  Team.loop(& func_3 , & func_4);
  //  #5 кнопка с фиксацией
  Do_btm1.loop(& func_1 , & func_2 );
}

 

aavs
Offline
Зарегистрирован: 26.01.2017

qwone пишет:

Вот если настроете этот скетч, то будет Вам счастье. Полный здесь https://yadi.sk/d/yiO-01BG3B6n2N

А главный файл здесь

/* to_aavs.ino  https://yadi.sk/d/yiO-01BG3B6n2N
  #1 реле 1->8 (relay1_pin) Включает реле c задержкой 1 сек. до окончания отключения кнопки и повторного срабатывания 6 пина.
  #2 реле 2->7 (relay2_pin) Включает реле сразу но на 5 сек. после отключается и бездействует до повторного срабатывания 6 пина.
  #3 светодиод -мигалка
  #4 блок управления мигалкой
  #5 кнопка с фиксацией->6 (btm1_pin) 1 нажата /0 нет
*/
//  #1 реле 1
#include "Cl_time_relay.h"
const byte relay1_pin = 7;
Cl_time_relay Relay1;
//  #2 реле 2
const byte relay2_pin = 8;
Cl_time_relay Relay2;
//  #3 светодиод -мигалка
#include "Cl_led.h"
const byte led1_pin = 13;
Cl_led Led1; // создать
//  #4 блок управления мигалкой
#include "Cl_team_delay.h"
Cl_team_delay Team;
void func_3() {
    Led1.blink();
}
void func_4() {
    Led1.OFF();
}
//  #5 кнопка с фиксацией
#include "Cl_do_btn_dn_up.h"
const byte btn1_pin = 2;
Cl_do_btn_dn_up Do_btm1; // создать
void func_1() {
  Relay1.ON();
  Relay2.ON();
  Team.ON();
}
void func_2() {
  Relay1.OFF();
  Relay2.OFF();
  Team.OFF();
}
void setup() {
  //  #1 реле 1
  Relay1.logic = 0; // реле вкл 0
  Relay1.time_ON = 0;// нет задержки вкл
  Relay1.time_OFF = 0;// нет задержки выкл
  Relay1.setup(relay1_pin);
  //  #2 реле 2
  Relay2.logic = 0; // реле вкл 0
  Relay2.time_ON = 300;//задержка вкл 300 миллисек
  Relay2.time_OFF = 00;//задержка выкл 300 миллисек
  Relay2.setup(relay2_pin);
  //  #3 светодиод -мигалка
  Led1.T_blink = 500;//<--- это период мигания светодиода
  Led1.logic = 1;
  Led1.setup(led1_pin);
  //  #4 блок управления мигалкой
  Team.time_ON = 1000;//задержка вкл 1000 миллисек=1 сек
  Team.time_OFF = 00;//задержка выкл 300 миллисек
  Team.setup(& func_3 , & func_4);
  //  #5 кнопка с фиксацией
  Do_btm1.logic = 0; // когда 0 это нажатая кнопка
  Do_btm1.setup(btn1_pin);
}
void loop() {
  //  #1 реле 1
  Relay1.loop();
  //  #2 реле 2
  Relay2.loop();
  //  #3 светодиод -мигалка
   Led1.loop();
  //  #4 блок управления мигалкой
  Team.loop(& func_3 , & func_4);
  //  #5 кнопка с фиксацией
  Do_btm1.loop(& func_1 , & func_2 );
}

 

Спасибо, но этот скетч мне скинули мне здесь forum.amperka.ru/threads/задержка-таймер-импульс-Как-реализовать.10753/page-2

Я его уже загрузил и проверил. то что нужно но вот 2е реле не отключается по истечению 5 секунд

aavs
Offline
Зарегистрирован: 26.01.2017

Тему можно закрывать