остановка программы (или головная боль смены режима)

Тема в разделе "Arduino & Shields", создана пользователем михаил.нестандарт, 7 ноя 2016.

  1. есть такая задача:есть два выхода и три входа(три кнопки если точнее)две из кнопок с фиксацией(выключатель на три положения он-офф-он)что за операторы могут изменять количество циклов:от одного до бесконечности...в общем так переключатель в 1 положении 1пин хай 2й лоу,третий это кнопка запуска программы...и в зависимости от переключателя менялось кол-во циклов выполнения...нет вообще.один цикл и бесконечно...но только когда кнопка 3 нажата....то есть на первом одни цикл и все даже если кнопка зажата,на втором циклы идут пока кнопка нажата,в третьем нет реакции ни при каких условиях...думаю понятно описал...
    зарание благодарю за помошь
     
    ИгорьК нравится это.
  2. rkit

    rkit Гуру

    Не понятно.
     
  3. ostrov

    ostrov Гуру

    Вы специально так написали? Для прикола?
     
  4. ИгорьК

    ИгорьК Гуру

    Зато читать весело :)
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    ну так ведь ник обязывает ;)
     
  6. vvr

    vvr Инженерище

    злые вы, да и нифига не разбираетесь в великом и могучем))))
     
  7. ну кому смешно рад что развеселил вас)а вот по проблеме никто дельного не сказал...
    обидно______вроде подробно написал проблему....
     
  8. rkit

    rkit Гуру

    Ужасно описали. Не хочу звучать высокомерно, но попробуйте перечитать учебник русского языка, и написать еще раз, но в этот раз по правилам.
     
  9. alp69

    alp69 Форумчанин

    Если хотите дельных ответов - описывайте не для себя, а для собеседников. Я не претендую на звание гуру, но даже после пятого прочтения не понял Ваших хотелок. Вы хотя бы знаки препинания расставьте. И формулируйте однозначно.
    До сих пор не могу сложить ребус:
    Нарисуйте алгоритм и будет Вам счастье!;)

    P.S. Пример - "казнить нельзя помиловать". Так и у Вас.
     
    Последнее редактирование: 9 ноя 2016
  10. ostrov

    ostrov Гуру

    Для начала разбейте текст на предложения. Расставьте точки и запятые. Про абзацы уж и не прошу. Потом попытайтесь сформулировать хотелки поэтапно. То есть что есть и как оно должно работать.

    Например:
    Есть три кнопки и мотор. При нажатии на первую мотор крутит влево, при нажатии на вторую - вправо. При нажатии на третью мотор взрывается. Все понятно! Тогда сразу вам все оценят, распишут и помогут на возмездной основе.
     
  11. понял вас господа))))извините.сразу не понял что написал непонятно...
    есть два клапана(газовых),есть три кнопки,искра нео,самопальный шилд-аля силовой ключ+тактовая кнопка на одной плате)
    в общем виде нужно получить что то вроде автомата калашникова....
    то есть три режима предохранитель,одиночный,и автомат,только вместо выстрела используется цикл похожий на пример БЛИНК....механика вся готова загвоздка только в скетче на котором я завис...
     
  12. ostrov

    ostrov Гуру

    Вторая попытка лучше, но ненамного. Что значит три кнопки плюс тактовая кнопка? Четыре кнопки? Схему конструкции нарисовать можете?

    Чем и как выбирается режим? Что должен делать каждый режим? При чем тут Блик, это пример одно из режимов? Какого?
     
  13. Tomasina

    Tomasina Сушитель лампочек Модератор

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

    Перевожу на земной:
    Код (C++):

    #define BUTTON_START A0 // кнопка между пином и GND
    #define SWITCH_MODE  A1 // 3-позиционный тумблер, один крайний через 470 Ом на GND, другой напрямую на GND
    #define OUT1         5
    #define OUT2         6
    enum {MODE_LOCK, MODE_SINGLE, MODE_MULTI};

    void setup()
    {
    pinMode(BUTTON_START, INPUT_PULLUP);
    pinMode(SWITCH_MODE, INPUT_PULLUP);
    pinMode(OUT1, OUTPUT);
    pinMode(OUT2, OUTPUT);
    }

    void loop()
    {
    byte currentMode;
    if(!digitalRead(BUTTON_START))
      {
      unsigned int s = analogRead(SWITCH_MODE);
      currentMode = !s ? MODE_SINGLE : s < 720 ? MODE_MULTI : MODE_LOCK;
      }

    switch(currentMode)
      {
      case MODE_SINGLE:  // одиночный выстрел
      pong();
      while(!digitalRead(BUTTON_START));
      break;

      case MODE_MULTI: // стрельба очередью
      while(!digitalRead(BUTTON_START)) pong();
      break;

      case MODE_LOCK: // предохранитель
      while(!digitalRead(BUTTON_START));
      break;
      }
    }

    void pong()
    {
      digitalWrite(OUT1, HIGH);
      digitalWrite(OUT2, HIGH);
      delay(100);
      digitalWrite(OUT1, LOW);
      digitalWrite(OUT2, LOW);
      delay(100);
    }
    Остальное с телефона лень писать.
     
    Последнее редактирование: 11 ноя 2016
    михаил.нестандарт и alp69 нравится это.
  14. ostrov

    ostrov Гуру

    Томасина монстр! Мало того, что понял телепатическое послание инопланетного разума, так еще и на телефоне программу накатал!
    :eek:
     
  15. ostrov

    ostrov Гуру

    Так реально для ружья что ли пейнтбольного? Блин, сразу то нельзя было написать? Я думал что какой то очередной котел газовый автоматизируют. Одной фразой можно было все объяснить.
     
  16. вопрос по скетчу можно ли перекинуть пины на цифровые???а то я схему уже напаял)и увы на аналоговые разводку не делал)если нет то перепояю естественно)))
     
    Последнее редактирование: 11 ноя 2016
  17. ostrov

    ostrov Гуру

    Кнопку можно, а SWITCH_MODE нельзя, ибо, в данной реализации, она работает как аналоговый вход (измеряет вольтаж который зависит от положения тумблера). Но всегда можно переписать программу под себя и свои железки.
     
  18. Tomasina

    Tomasina Сушитель лампочек Модератор

    можно, но для тумблера понадобится два цифровых пина,
     
    Последнее редактирование: 11 ноя 2016