Задержка по прерыванию. Помощь в создании простого реле на Arduino Nano

Тема в разделе "Arduino & Shields", создана пользователем Bortnik27, 23 июн 2019.

  1. b707

    b707 Гуру

    Пусть он хотя бы с этим кодом разберется.
    Переписывать тут нечего. 20 строчек всего.
    Проблема ТС в том, что он даже этого кода совершенно не понимает - добавляет и убавляет операторы методом тыка
     
    DetSimen нравится это.
  2. Asper Daffy

    Asper Daffy Иксперд

    Ой !!!
     
    DetSimen нравится это.
  3. b707

    b707 Гуру

    я бы вот так написал
    Код (C++):
    #define msft 13
    #define intpin 2
    volatile boolean flag = false;
    unsigned long timer = 2000;
    unsigned long crntt = 0;
    void setup() {
      attachInterrupt(digitalPinToInterrupt(intpin), get_in, FALLING);
      pinMode(msft,OUTPUT);
      pinMode(intpin,INPUT_PULLUP);
    }

    void loop() {
      if ((flag) && (digitalRead(intpin) == LOW)){
      digitalWrite (msft, HIGH);
      crntt = millis();
      flag = false;
    }
      if ((digitalRead(intpin) == HIGH) || (millis()- crntt > timer))  digitalWrite (msft, LOW);
    }
    void get_in(){
        flag = true;
        }
    добавил логику - при выключении геркона мосфет сразу гаснет. Как мне кажется, вам именно это и нужно, если нет - пишите
     
    DetSimen нравится это.
  4. Bortnik27

    Bortnik27 Нуб

    Я пробовал так:
    Код (C++):
    #define msft 13
    #define intpin 2
    volatile boolean flag = false;
    unsigned long timer = 2000;
    unsigned long crntt = 0;
    void setup() {
      attachInterrupt(0, get_in, FALLING);
    Не помогло.
    Я понимаю что дребезг есть, вопрос в том что есть или нет, код не должен срабатывать на RISING. Хотя может из-за дребезга и срабатывает вместо RISING, FALLING... :D
    p.s. ну уж больно четко на rising срабатывает. ладно че гадать, надо пробовать. Надо блин держать на работе еще комплект джамперов и ардуинки. собственно уже едут, жду)
     
  5. Bortnik27

    Bortnik27 Нуб

    Спасибо всем за проявленный интерес, к сожалению забыл нано дома, приду с работы буду пробовать. Надеюсь, что срабатывание мосфета на RISING происходит из-за дребезга. Даже если так, будут вопросы еще, как вы понимаете)))
     
  6. DetSimen

    DetSimen Спамовредитель Модератор

    PCINT-у апще пофиг, он срабатывает на ЛЮБОЕ изменение состояния, и с 0 в 1 и набарот.
     
  7. parovoZZ

    parovoZZ Гуру

    он и не срабатывает. Когда подвижной контакт отскакивает и снова возвращается на место, вот тогда и формируется условие для срабатывания FALLING.
     
    Bortnik27 нравится это.
  8. parovoZZ

    parovoZZ Гуру

    надо запрещать прерывания (хоть на INT, хоть глобально). Но на тини, которая в глубоком сне, этот код работать не будет.