#1 2017-07-09 14:24:08

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Помогите мне пожалуйста. ардуина, кнопка, реле

напишите мне пожалуйста со скетчем.
с программированием почти не дружу - по примерам могу что-то склепать, а вот когда нужно несколько разных действий собрать в кучу, то бяда(((((
принцип такой: при включении ардуины, если нажатия на кнопку не произошло (время безгранично), то при поступлении 1 на вход (например 11) , через какое-то время (каждый раз рандомно от 10 до 60 секунд) на выходе (например 12) появляется 1 на 1-2 секунды (включается реле). 
цикличности нет. после включения реле ардуина будет отключаться.

заранее всем спасибо!

Остання редакція Rukas (2017-07-09 20:01:17)

Неактивний

#2 2017-07-09 16:48:22

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

У вас ошибка в изложении темы ...

Неактивний

#3 2017-07-09 17:39:25

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

так правильно?

Неактивний

#4 2017-07-09 17:47:15

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

Rukas пише:

так правильно?

нет...

Rukas пише:

Помогите мне пожалуйста со скетчем.

принцип такой: при включении ардуины, если нажатия на кнопку не произошло (время безгранично), то при поступлении 1 на вход (например 11) , через какое-то время (каждый раз рандомно от 10 до 60 секунд) на выходе (например 12) появляется 1 на 1-2 секунды (включается реле). 
цикличности нет. после включения реле ардуина будет отключаться.

заранее всем спасибо!


Нужно так -  Напишите за меня скетч.

ПОМОЩЬ - это когда вы что-то САМИ сделали и у вас возникли какие-то проблемы....

Неактивний

#5 2017-07-09 19:51:17

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

исправил neutral

Неактивний

#6 2017-07-10 11:18:13

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

Rukas пише:

напишите мне пожалуйста со скетчем.
принцип такой: при включении ардуины, если нажатия на кнопку не произошло (время безгранично)...

"Моя благодарность будет безгранична, но в пределах разумного." Не?

Неактивний

#7 2017-07-10 21:50:43

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

если нет желания помочь, то и не стебайтесь

Неактивний

#8 2017-07-10 22:10:52

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

По моему, это Вы стебётесь. Или дружите, или башляйте. Как вариант набраться каких то знаний - посмотреть как Вашу задачу делают другие. За Ваши деньги.

Неактивний

#9 2017-07-10 22:35:20

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 874

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

Rukas пише:

если нет желания помочь, то и не стебайтесь

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

Неактивний

#10 2017-07-11 00:32:30

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

бизнесмены, во сколько оцениваете задачу? )

Неактивний

#11 2017-07-11 10:29:30

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

NoName пише:

бизнесмены, во сколько оцениваете задачу? )

"Хорошо бы... Пива!".
Дело ж не в деньгах - в отношении.

Неактивний

#12 2017-07-11 18:29:59

goodspeedmen
Учасник
З https://discord.gg/6hbs98y
Зареєстрований: 2016-10-02
Повідомлень: 81

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

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

Неактивний

#13 2017-07-11 18:55:27

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

goodspeedmen пише:

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

goodspeedmen , привет. Вы кому написали то?

Неактивний

#14 2017-07-11 20:38:00

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

Вячеслав Азаров пише:

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

спасибо за отзывчивость
bb1113983844.jpg

при подаче питания на плату, если нажатия на кнопку не произошло (время безгранично), то при поступлении сигнала  на вход  11 , через какое-то время (каждый раз рандомно от 10 до 60 секунд) на 2 секунды включается реле, подключённое к выходу 12.
как-то так

goodspeedmen пише:

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

я думал, что описал работу устройства доходчиво

Остання редакція Rukas (2017-07-11 20:39:56)

Неактивний

#15 2017-07-11 21:59:27

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

1) первое нажатие кнопки после включения питания.
2) сигнала на вход 11 положительный, длительность не кретична, но она будет постоянной
3) после детектирования входного сигнала на входе 11, через случайный промежуток времени от 10 до 60 с, один раз включается реле на 2 секунды
4) после включения реле больше ничего не будет происходить.
5) "Каким уровнем должно включаться реле?"??? просто подключается ардуиновский релейный модуль

Неактивний

#16 2017-07-11 23:03:42

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

Код компилируется, но я не проверял. Одна кнопка запускает, вторая останавливает. Разберетесь напишите и себе.

/*
*/
//---------------Cl_Led---------
//класс Cl_Led управление  светодиодом
class Cl_Led {
    byte _pin;//нога светодиода
    bool _led;// уровень на выводе светодиода
    byte _stat ; //0 готовность к взводу / 1 время до импульса / 2 импульс/3 конец
    uint32_t _time_start, _time_pulse;
    uint32_t _past = 0 ;
  public:
    // конструктор класса
    Cl_Led(byte pin): _pin(pin) {}
    // метод setup()
    void setup() {
      pinMode(_pin, OUTPUT);
      digitalWrite(_pin, _led = 0);
      _stat = 0;
    }
    // метод loop()
    void loop() {
      if (_stat == 1 & millis() - _past >= _time_start) {
        _past = millis();
        digitalWrite(_pin, _led = 1);
        _stat == 2;
      }
      if (_stat == 2 & millis() - _past >= _time_pulse) {
        _past = millis();
        digitalWrite(_pin, _led = 0);
        _stat == 3;
      }
    }
    void pulse(uint32_t time_start, uint32_t time_pulse) {
      _time_start = time_start;
      _time_pulse = time_pulse;
    }
    void stop() {
      digitalWrite(_pin, _led = 0);
      _stat == 3;
    }
};
//---------------Cl_Btn--------
//класс кнопка подключ на питание через резистор 10кОм
class Cl_Btn {
    byte pin; // номер ноги на кнопке
    void (* Do)();// указатель на обработчик
    bool btn, btn_old;
    bool bounce = 0; // антидребезговый флаг
    uint32_t past = 0 ;
  public:
    // конструктор класса
    Cl_Btn( byte _pin, void (* _Do)()): pin(_pin), Do(_Do) {}
    // метод setup()
    void setup() {
      pinMode(pin, INPUT);// подключить кнопку 1 с подтяжкой
      btn = digitalRead(pin); // прочитать реальное значение на выводе};
    }
    // метод loop()
    void loop() {
      if (! bounce && btn != digitalRead(pin)) { // если прошел фронт изм на выводн
        bounce = 1;                              // выставить флаг
        past = millis();                         // сделать временую засветку
      }
      else if ( bounce && millis() - past >= 5 ) { // если прошло антидребезговое время
        bounce = 0;                                // то снять флаг
        btn_old = btn ;
        btn = digitalRead(pin) ;                   // прочитать реальное значение на выводе
        if (!btn_old && btn) Do();
      }
    }
};
//--------------компоновка------------
Cl_Led Led1(/*пин*/12);

void Do_Btn1() {
  Led1.pulse(1000ul * random(10, 60) , 2000);
}
Cl_Btn Btn1(/*пин*/10,/*обработчик*/Do_Btn1);
void Do_Btn2() {
  Led1.stop();
}
Cl_Btn Btn2(/*пин*/11,/*обработчик*/Do_Btn2);
//------------main()--------------
void setup() {
  Led1.setup();
  Btn1.setup();
  Btn2.setup();
}
void loop() {
  Led1.loop();;
  Btn1.loop();
  Btn2.loop();
}

Остання редакція qwone (2017-07-11 23:04:20)

Неактивний

#17 2017-07-19 19:53:16

Rukas
Учасник
Зареєстрований: 2017-07-09
Повідомлень: 7

Re: Помогите мне пожалуйста. ардуина, кнопка, реле

qwone пише:

Код компилируется, но я не проверял. Одна кнопка запускает, вторая останавливает. Разберетесь напишите и себе.

/*
*/
//---------------Cl_Led---------
//класс Cl_Led управление  светодиодом
class Cl_Led {
    byte _pin;//нога светодиода
    bool _led;// уровень на выводе светодиода
    byte _stat ; //0 готовность к взводу / 1 время до импульса / 2 импульс/3 конец
    uint32_t _time_start, _time_pulse;
    uint32_t _past = 0 ;
  public:
    // конструктор класса
    Cl_Led(byte pin): _pin(pin) {}
    // метод setup()
    void setup() {
      pinMode(_pin, OUTPUT);
      digitalWrite(_pin, _led = 0);
      _stat = 0;
    }
    // метод loop()
    void loop() {
      if (_stat == 1 & millis() - _past >= _time_start) {
        _past = millis();
        digitalWrite(_pin, _led = 1);
        _stat == 2;
      }
      if (_stat == 2 & millis() - _past >= _time_pulse) {
        _past = millis();
        digitalWrite(_pin, _led = 0);
        _stat == 3;
      }
    }
    void pulse(uint32_t time_start, uint32_t time_pulse) {
      _time_start = time_start;
      _time_pulse = time_pulse;
    }
    void stop() {
      digitalWrite(_pin, _led = 0);
      _stat == 3;
    }
};
//---------------Cl_Btn--------
//класс кнопка подключ на питание через резистор 10кОм
class Cl_Btn {
    byte pin; // номер ноги на кнопке
    void (* Do)();// указатель на обработчик
    bool btn, btn_old;
    bool bounce = 0; // антидребезговый флаг
    uint32_t past = 0 ;
  public:
    // конструктор класса
    Cl_Btn( byte _pin, void (* _Do)()): pin(_pin), Do(_Do) {}
    // метод setup()
    void setup() {
      pinMode(pin, INPUT);// подключить кнопку 1 с подтяжкой
      btn = digitalRead(pin); // прочитать реальное значение на выводе};
    }
    // метод loop()
    void loop() {
      if (! bounce && btn != digitalRead(pin)) { // если прошел фронт изм на выводн
        bounce = 1;                              // выставить флаг
        past = millis();                         // сделать временую засветку
      }
      else if ( bounce && millis() - past >= 5 ) { // если прошло антидребезговое время
        bounce = 0;                                // то снять флаг
        btn_old = btn ;
        btn = digitalRead(pin) ;                   // прочитать реальное значение на выводе
        if (!btn_old && btn) Do();
      }
    }
};
//--------------компоновка------------
Cl_Led Led1(/*пин*/12);

void Do_Btn1() {
  Led1.pulse(1000ul * random(10, 60) , 2000);
}
Cl_Btn Btn1(/*пин*/10,/*обработчик*/Do_Btn1);
void Do_Btn2() {
  Led1.stop();
}
Cl_Btn Btn2(/*пин*/11,/*обработчик*/Do_Btn2);
//------------main()--------------
void setup() {
  Led1.setup();
  Btn1.setup();
  Btn2.setup();
}
void loop() {
  Led1.loop();;
  Btn1.loop();
  Btn2.loop();
}

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

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму