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

Тема в разделе "Arduino & Shields", создана пользователем aavs, 26 янв 2017.

  1. aavs

    aavs Нерд

    До выключения 6 пина. когда он выключается то и вся ситема должна выключится
     
  2. aavs

    aavs Нерд

    Спасибо. но что то пошло не так:
    Код (C++):
    C:\Users\CD86~1\AppData\Local\Temp\ccttCXFU.ltrans0.ltrans.o: In function `main':

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:43: undefined reference to `setup'


    collect2.exe: error: ld returned 1 exit status

    exit status 1
    Ошибка компиляции для платы Arduino Nano.
     
  3. mcureenab

    mcureenab Гуру

    А зачем он тогда нужен? Кнопкой подали питание на плату. Она быстренько поднимется начнет время считать, пинами тикать. Питание вырубили и все выключилось.
     
  4. mcureenab

    mcureenab Гуру

    Функцию setup свою возьмите. Только pin 9 надо на OUT и LOW настроить.
     
  5. mcureenab

    mcureenab Гуру

  6. aavs

    aavs Нерд

    О спасибо. Подскажите. А что если мне понадобится избежать 9 пин . То есть сделать так что 7 пин не только работает 5 секунд но и работает с прерыванием 4 Гц ?
     
  7. mcureenab

    mcureenab Гуру

    Подключите устройство к пину 9, а пин 7 пусть висит. Или убирайте в коде управление пином 7. А в управлении пином 9 меняйте на 7.

    Код я не тестировал. Предоставляю как есть. Проверяйте его самостоятельно на стенде.
     
  8. aavs

    aavs Нерд

    Спасибо за помощь. но что то не так. так как 7 8 9 пины должны быть в ноль до получения единички с 6 пина.
    На данный момент при подачи питание на Arduino происходит следующие.
    На 1 секу срабатывает 8 пин буквально на секунду а затем отключается.
    через 5 секунд после подачи питания на Arduino срабатывает 7 пин и остается включенным.
    При этом всем никакого взаимодействия с 6 пином не было.

    при нажатии кнопки с фиксацией происходит следующие:
    Сразу срабатывает 8 пин и через 5 секунд срабатывает 7 пин и они остаются включенными до выключения кнопки на 6 пине, после чего реле 7 пин сразу переходит в ноль на 5 секунд и затем сново включается.
    на 8 пине отключается реле отключается через секунду и остается в таком положении до повторного нажатия.
     
  9. aavs

    aavs Нерд

    Объясню в чем дело и для чего это нужно.
    Вышли из строя мозги старо газовой колонки.
    При включении воды подается логическая единица на 2 пин а затем включается вытяжка включенная через реле на 4 пине. В вытяжке стоит датчик тяги. Вот этот датчик тяги и есть кнопка на 6 пине, пока он замкнут система работает.
    Но как замыкается 6й пин должна податься искра и и открыться газовый клапан с задержкой на 0,5 или 1 секунде. Искра дается пять секунд хотя можно и меньше.
    Это связанно с тем что у меня нет датчика пламени из за чего и приходится делать такой отстой.
    Когда кран воды закрывается то пропадает логическая единица на 2 пине и газовый клапан должен отключиться. И система должна ждать повторного включения.
     
  10. mcureenab

    mcureenab Гуру

    Здесь HIGH на LOW поменять надо. Иначе скетч сразу считает, что кнопка нажата. Я не догнал когда замыкается ключ при нажатии кнопки...

    Код (C++):
      boolean btn_on2 = digitalRead(6) == HIGH; // Кнопка нажата, ключ разомкнут.
     
    Поравил VeRsIoN 6
     
    Последнее редактирование: 27 янв 2017
  11. aavs

    aavs Нерд

    Не то. По подробнее то что мне объяснить ?
     
  12. qwone

    qwone Гик

    Полный скетч здесь
    Код (C++):
    /* 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 );
    }
     
  13. aavs

    aavs Нерд

    Код (C++):
    Arduino: 1.8.1 (Windows 10), Плата:"Arduino Nano, ATmega168"

    C:\Users\Алексей\Documents\Arduino\sketch_jan26a\sketch_jan26a.ino\sketch_jan26a.ino.ino:10:27: fatal error: Cl_time_relay.h: No such file or directory

    compilation terminated.

    exit status 1
    Ошибка компиляции для платы Arduino Nano.

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
     
     
  14. mcureenab

    mcureenab Гуру

    схему подключения кнопки нарисовать

    тут два фактора, это состояние включения - HIGH или LOW.

    boolean btn_on2 = digitalRead(6)== LOW;// Кнопка нажата, ключ разомкнут.

    И первоначальное состояние

    static boolean btn_on1 =false;// Изначально считаем что кнопка отпущена.

    и может быть на пинах 7, 8 уровни инвертированы.
     
  15. mcureenab

    mcureenab Гуру

    Воспользуйтесь рекомендацией:

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"

    диагностика будет
     
  16. aavs

    aavs Нерд

    Код (C++):
    Arduino: 1.8.1 (Windows 10), Плата:"Arduino Nano, ATmega168"

    C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Алексей\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Алексей\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Алексей\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega168 -ide-version=10801 -build-path C:\Users\CD86~1\AppData\Local\Temp\arduino_build_265761 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Алексей\Documents\Arduino\sketch_jan26a\sketch_jan26a.ino\sketch_jan26a.ino.ino
    C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Алексей\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Алексей\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Алексей\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega168 -ide-version=10801 -build-path C:\Users\CD86~1\AppData\Local\Temp\arduino_build_265761 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Алексей\Documents\Arduino\sketch_jan26a\sketch_jan26a.ino\sketch_jan26a.ino.ino
    Using board 'nano' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
    Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
    Detecting libraries used...
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega168 -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\CD86~1\AppData\Local\Temp\arduino_build_265761\sketch\sketch_jan26a.ino.ino.cpp" -o "nul"
    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega168 -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\CD86~1\AppData\Local\Temp\arduino_build_265761\sketch\sketch_jan26a.ino.ino.cpp" -o "C:\Users\CD86~1\AppData\Local\Temp\arduino_build_265761\preproc\ctags_target_for_gcc_minus_e.cpp"
    C:\Users\Алексей\Documents\Arduino\sketch_jan26a\sketch_jan26a.ino\sketch_jan26a.ino.ino:10:27: fatal error: Cl_time_relay.h: No such file or directory

    compilation terminated.

    exit status 1
    Ошибка компиляции для платы Arduino Nano.
    Спасибо. Так то на много лучше но пока всёровно мало понятного.
     
  17. aavs

    aavs Нерд

    Датчик тяги по умолчанию (цепь разомкнута) то есть 0 . при подаче питания на вытяжку он срабатывает и переходит в положение (цепь замкнута) то есть 1 . этот датчик и весит у меня на пине 6 и земля.
    Когда он дает единицу то происходят действия с 7 и 8 пинами
     
  18. aavs

    aavs Нерд

    Вроде то что нужно, но не могу понять где меняется время задержки включения реле 1->8 (relay1_pin) и почему не отключается реле 2->7 (relay2_pin)
     
  19. mcureenab

    mcureenab Гуру

    If a pull-up resistor is used, the input pin will be HIGH when the switch is open and LOW when the switch is closed.

    Термины 0 и 1 в Ардуино не применяются. HIGH - пин притянут к Vcc, LOW пин притянут к GND.

    "датчик висит у меня на пине 6 и земля."
    Датчик это электрический ключ?
    Значит когда ключ разомкнут, pull-up resistor подтягивает пин в HIGH.
    Когда датчик сработал, ключ замкнул пин 6 на GND, получаем LOW.
    ???
     
  20. aavs

    aavs Нерд

    да "датчик висит у меня на пине 6 и земля.".
    Вроде все верно.
    Кстати то что скинул qwone работает но не отключает по истечению 5 секунд.
    Будет вообще замечательно если я завтра смогу искупаться с горячей водой а не под холодной. А не можете подсказать как можно реализовать датчик пламени.
    Вернее там есть датчик пламени и он использует только один контакт на плате той что была.
    Был выставлен 1 электрод на который попадал огонь и подача искры прекращалась.
    Раньше с таким не сталкивался и как его можно подключить к Arduino понятия не имею.
     
    Последнее редактирование: 27 янв 2017