две кнопки, две независимые программы, одна ардуина

Тема в разделе "Arduino & Shields", создана пользователем svjatoy, 30 ноя 2015.

  1. seres

    seres Нуб

    Код (C++):
    if (Selest && digitalRead(but_set))  // нажали кнопку
        {
          delay(10);  // ждём дребезг
           for(int i = 0; i<500; i++)  // 500 циклов + delay(10)   даст 5 сек задержки...
           {
             if (digitalRead(but_set)) { // если кнопка еще нажата...
              delay(10); // ждем...
              if(enter) i = 500; // если отпустили заканчиваем цикл (можно и через gotо не пробовал еще...)
             }
             else    // отпустили переходим к функции однократного нажатия
              enter = true;
           }
    if (digitalRead(but_set) && !enter) {  // когда выдержали 5 сек
    /*
    Пишем код
    */

    }
    if(enter){      // однократное нажатие
    /*
    Пишем код
    */

    }
    }
    Я пока так реализовал функционал кнопки с задержкой или без
     
  2. ИгорьК

    ИгорьК Гуру

    Я же говорю - спокойнее. Попробуйте ещё раз войти в нирвану и понять о чем речь. Вы в своём чудесном коде воздействуете на лампочку по расписанию. Ну, на мысль наводит? Постигайте гениальность собственных решений! Трансформируйте их от лампочки к кнопке :)
     
    Последнее редактирование: 1 дек 2015
  3. seres

    seres Нуб

     
  4. DrProg

    DrProg Вечный нерд

    Лампочки там три, если присмотреться, соответственно и это замечание уже не по делу, а упражнение в словоблудии, в котором, вероятно, вы считаете себя специалистом не меньшего масштаба. К сожалению, в этом форуме этого могут и не оценить.
     
    ИгорьК нравится это.
  5. ИгорьК

    ИгорьК Гуру

    Это не словоблудие, а стеб, Максим. (Вызванный, в том числе вашим открытием трех проводов в шине i2c).
    Словоблудие началось в посте №4, когда после двух конкретных ответов ТС вы начали приводить абстрактный код и утверждать, что программный антидребезг кнопки связан с торможением программы.
    На короткий уточняющий вопрос в посте 7 вы продолжили блудить словами.
    Начали учить многопоточности "в лоб"? Покажите, тогда, как обработать кнопку, а не виляйте.
    Не знаете как? Читайте Маркса. Только не учите молодежь всякой ерунде.
     
  6. DrProg

    DrProg Вечный нерд

    С
    Чем пример Маркса отличается от классического с задержкой? Тем что вместо delay() гоняется пустой цикл в ожидании millis() + задержка? Ни изящности, ни эффекта, молодежь, кстати, была права.
     
    ИгорьК нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Ваше утверждении о том, что программный антидребезг связан с delay, конечно, невероятно изящно, и, главное, бесспорно :)
     
  8. DrProg

    DrProg Вечный нерд

    А пустой цикл чем не delay? Более того, delay так и работает, хоть розой назови его хоть нет. Программный антидребезг это задержка, о чем я и говорил выше.
     
    ИгорьК нравится это.
  9. ИгорьК

    ИгорьК Гуру

    Ну, добавьте в пустой цикл Serial.print("Dr Forever!"); чтобы он вам delay не казался. Или вы в delay тоже Serial.print добавить сможете? Сможете - тогда разницы, конечно, нет.