Как остановить arduino ?

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

  1. Stine

    Stine Нуб

    Друзья, подскажите, как сделать так, что бы по завершении всех действий arduino остановилась и ждала нажатия на кнопку, что бы запустить циклы заново.

    Пока что, ничего умнее, чем в конце поставить delay(дофига часов) и нажимать потом кнопку reset, не придумал. Понимаю что это глупо, прошу вашей помощи.
     
  2. DrProg

    DrProg Вечный нерд

    Если просто остановить то:
    Код (C++):
    while (digitalRead(KEYPIN));
    или
    Код (C++):
    while (!digitalRead(KEYPIN));
    в зависимости от подключения. Можно даже дребезг не давить в ряду случаев.
    Если же нужно "усыпить" ардуину, то это тема отдельной статьи.
     
    ИгорьК нравится это.
  3. Stine

    Stine Нуб

    Спасибо, буду пробовать
     
  4. Stine

    Stine Нуб

    Не получается. подскажите, что я делаю не так.
    Хотелось бы, что бы ардуина выполнила цикл for, и остановилась, ждала, пока я не нажму на кнопку. В таком варианте как сейчас, for идет бесконечно, и лишь не надолго замирает при нажатии кнопки. А если сделать while (!digitalRead(KEYPIN)), то вначале стоит, а потом бесконечно работает.

    #define KEYPIN 2
    void setup()
    {
    pinMode(KEYPIN, INPUT);
    Serial.begin(9600);
    }
    void loop()
    {
    while (digitalRead(KEYPIN))
    {
    for (int i =0; i <5; i++)
    {
    Serial.println(i);
    }
    }
    }
     
  5. DrProg

    DrProg Вечный нерд

    Код (C++):
    #define KEYPIN 2
    void setup()
    {
      pinMode(KEYPIN, INPUT);
      Serial.begin(9600);
    }

    void loop()
    {
      for (int i = 0; i < 5; i++)  Serial.println(i);
      while (!digitalRead(KEYPIN));
    }
     
    ИгорьК нравится это.
  6. Airbus

    Airbus Радиохулиган Модератор

    А так?

    Код (C++):
    #define KEYPIN  2
    void setup()
    {
      pinMode(KEYPIN, INPUT);// это вход
      digitalWrite(KEYPIN, HIGH);  // включим подтяжку
      Serial.begin(9600);
    }
    void loop()
    {
    while(digitalRead(KEYPIN) == HIGH) {  // пока не нажата курим бамбук
                                                                       }
      {
              for (int i =0; i <5; i++)
               {
        Serial.println(i);
                   }   //конец Serial
             }  //конец For
       }
     
    Последнее редактирование: 10 ноя 2015
  7. DrProg

    DrProg Вечный нерд

    Как то весьма странно включаете подтяжку.
    pinMode(KEYPIN, INPUT_PULLOUT);
    тогда уж.
     
    ИгорьК нравится это.
  8. Airbus

    Airbus Радиохулиган Модератор

    Странно?Не думаю.Как учили http://tinyurl.com/oo6h792 А вот у Вас необычно надо попробовать.Вы же на Си пишете так PORTD=0хFF? //В порт D все единицы поэтому у меня логичнее
     
  9. Stine

    Stine Нуб

    DrProg и Airbus , друзья, спасибо вам огромное за помощь. Все получилось, вы очень добрые и отзывчивые.
     
  10. Tomasina

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

    а разве, INPUT_PULLOUT допустимая конструкция?
     
  11. INPUT_PULLUP тогда уж.
     
  12. DrProg

    DrProg Вечный нерд

    Да, опечатался. )
     
    ИгорьК нравится это.