Помогите разобраться с Serial

Тема в разделе "Arduino & Shields", создана пользователем iBoy, 17 фев 2016.

  1. iBoy

    iBoy Гик

    Код (C++):



    void setup(){
      pinMode(1, INPUT);
    Serial.begin(9600);

    }

    void loop() {
    delay(100);
    if(digitalRead(1)==HIGH){
        Serial.println("HIH");
        if(digitalRead(2)==HIGH){
          delay(10);
          Serial.println(1);
        }
      }

    }
    Подскажите, пожалуйста, почему он как только один раз получает сигнал, даже после отключения этого сигнала начинает постоянно писать HIH, а не один раз? После получения сигнала на пин 2 чередует HIH и 1. Должен же по идее один раз реагировать? Если это важно, то у меня ардуино леонардо
     
    Последнее редактирование: 17 фев 2016
  2. Onkel

    Onkel Гуру

    нет, loop() {} означает, что то что в фигурных скобках повторяется бесконечно.
     
  3. iBoy

    iBoy Гик

    но у него же отключают сигнал первого пина. Куда надо поместить, чтобы он каждый раз проверял?
     
  4. Onkel

    Onkel Гуру

    а что значит "получает сигнал"? Ко входу что-то подключено?
     
  5. iBoy

    iBoy Гик

    Там кнопка, один её конец вставлен в 5 вольт, другой - в пин 1
     
    Последнее редактирование: 17 фев 2016
  6. ut2k5

    ut2k5 Нерд

    именно постоянно? или несколько? если несколько, так это Вам с дребезгом разбираться
    ну и я надеюсь кнопка без фиксации?
     
  7. Sindbad

    Sindbad Гик

    1. delay(100); заменить на delay(1000);
    2. Пин 1 кроме кнопки соединить с землей через резистор 10 кОм
     
  8. iBoy

    iBoy Гик

    спасибо! сейчас попробую!
     
  9. Onkel

    Onkel Гуру

    да там опрос раз в 100 мс,так что не страшно.
     
  10. iBoy

    iBoy Гик

    Попробовал. Причём на разных ардуинах. Он когда вставляют в контакт 1 начинает писать 1(по идее должен когда вставляют в контакт 2) в перемежку с HIGH. Программно тоже пытался избавиться от дребезга. Он тупо ничего не делает.
     
  11. Sindbad

    Sindbad Гик

    Скриншот экрана на котором видна последняя версия скетча и одновременно то, что печатается в порт, приведите пожалуйста.
     
  12. iBoy

    iBoy Гик

  13. Onkel

    Onkel Гуру

    тестером можете померять ? Там наверняка 5 В. Наверное у вас со схемой что-то не то. должно быть
    ardu2.jpg
     
  14. iBoy

    iBoy Гик

  15. iBoy

    iBoy Гик

    Я сделал как на схеме
     
  16. iBoy

    iBoy Гик

    Только я там вместо кнопки вставляю и вытаскиваю провод(белый)
     
  17. Sindbad

    Sindbad Гик

    Ну да. А зачем резистор нужен был не догадались?

    Добавьте в схему (что на фото) еще один резистор - соединить пин2 и землю через (второй) резистор 10 кОм. Будет печатать только "HIH".
     
  18. Onkel

    Onkel Гуру

    вставлять и вытаскивать вместо кнопки надо красный провод.
    и не используйте пины 1 и 0 -они используются для usart (Serial), используйте другие.
     
  19. Sindbad

    Sindbad Гик

    Именно! Вытаскивая белый вы отключаете стягивающий резистор от пина

    Разве на Леонардо в данной схеме это актуально?
     
  20. Onkel

    Onkel Гуру

    Oops. Был неправ вспылил.