Помогите с кодом

Тема в разделе "Флудилка", создана пользователем Алексей Липецк, 6 сен 2015.

  1. добрый день подскажите пожалуйста как мне сделать чтоб при нажатии кнопки у меня мигал светодиод циклично а то он 1 раз моргает и все какой команды не хватает вот в этом скетче
    int svet1 = 0;
    int knop1 = 2;
    int knop2 = 3;
    int led1 = 4;
    int led2 = 5;
    void setup() {
    pinMode(knop1, INPUT);
    pinMode(knop2, INPUT);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    digitalWrite(knop1, HIGH);
    }

    void loop() {
    if(digitalRead(knop1) == 1 || (digitalRead(knop2)==1) && svet1 == 0)
    {
    {
    digitalWrite(led1, HIGH);
    delay(1000);
    digitalWrite(led1, LOW);
    delay(1000);
    }

    svet1 = 1;
    while (digitalRead(knop1))
    delay(100);
    }

    if (digitalRead(knop1) == 1 && svet1 == 1)
    {
    digitalWrite(led1, LOW);
    svet1 = 0;
    while (digitalRead(knop1))
    delay(100);
    }
    }
     
  2. AlexU

    AlexU Гуру

    Этой инструкцией "нажимаете" кнопку 'knop1'.
    После чего:
    программа уходит в бесконечный цикл.
    Какой функционал Вы хотите получить на "выходе"?
     
  3. DrProg

    DrProg Вечный нерд

    Не, все верно:
    while (digitalRead(knop1));
    будет что-то там ждать либо нажатия либо отжатия в зависимости от схему подключения. А вот:
    digitalWrite(knop1, HIGH);
    непонятно, так как:
    pinMode(knop1, INPUT);
     
    ИгорьК нравится это.
  4. AlexU

    AlexU Гуру

    "Не все верно", будет в случае, если кнопка завмыкает контакты на "землю", а если на "+", то верно. Автору топика, если он хочет получить ответ, следует подробней описать, что он делает (там есть еще 'knop2', предположительно вторая кнопка, и на какую кнопку жмет автор не понятно).

    А что по поводу записи HIGH в пин, который настроен как INPUT, то в этом случае пин подтягивается к +5. Это то же, что пин инициировать вызовом функции:
    Код (Text):
    pinMode(knop1, INPUT_PULLUP);
    Чтение из этого пина будет возвращать HIGH, если этот пин не будет замкнут на "землю".