Эксперимент 8

Тема в разделе "Флудилка", создана пользователем Ivanov, 25 янв 2015.

  1. Ivanov

    Ivanov Нуб

    Добрый день!
    Ни как не могу разобраться пунктом 3:
    Подключите кнопки по схеме со стягивающим резистором и измените программу так, чтобы она продолжала работать.

    Пока разбирался заметил что "Принципиальная схема" не совпадает с "Схема на макетке", на схеме на макетке у казано что GND и 5V соединены с одно стороны, а Pin с другой, принципиальная схема выглядит по другому.

    Но вот с чем я не смог разобраться, если я подключаю схему со стягивающим резистором то у меня получается меняется сама схема и теперь при нажатии я получаю True, но почему то программа работает что при нажатии динамик затихает и необходимо использовать !

    Не знаю, получилось ли объяснить проблему, но хватает ума подключить по другому и исправить программу. Помогите кто соображает!
     
  2. Ivanov

    Ivanov Нуб

    Добавлю комментарий , получается что схема работает только в том случаи если PIN расположон с противополжной стороны, а не как на схеме сайта Амперка во вкладке КНОПКА, или я чего то не понимаю в схемах! И 5В должно находиться на одной стороне с GND!
    По другому у меня не работает!
    Может кнопка особенная.
     
  3. dreadfull

    dreadfull Гик

    я дико извеняюсь!, НО я один не пойму какой "пункт 3", какая "схема на макете"???? в чем проблема собственно???
     
  4. X-Dron

    X-Dron Гик

    В чем проблема то? Надо уметь читать документацию, а не думать, что тут и так все понятно.
    Все там правильно.
    В том же эксперименте написано, цитата:
    В http://wiki.amperka.ru/конспект-arduino:кнопка
    Так же наглядно описано, что коммутируется не верхние и нижние контакты кнопки, а правые и левые.
    Может так понятней будет, как в приложенном файле
     

    Вложения:

  5. AntonEryomin

    AntonEryomin Нуб

    Подскажите пожалуйста, у меня так же проблема с 3-им пунктом, но не с подключением схемы (ну как мне кажется), а именно с кодом. Вот то, что у меня сейчас:

    #define BUZZER_PIN 13
    #define FIRST_KEY_PIN 4
    #define KEY_COUNT 5

    void setup()
    {
    pinMode(BUZZER_PIN, OUTPUT);
    Serial.begin(9600);
    }

    void loop()
    {
    for (int i = 0; i < KEY_COUNT; i++){
    int keyPin = i + FIRST_KEY_PIN;
    boolean keyUp = digitalRead(keyPin);
    Serial.println(keyUp);
    if (keyUp){
    int frequency = 2000 + i*500;
    tone(BUZZER_PIN, frequency, 20);
    }
    }
    }

    При текущей реализации, звука нет вообще, если нажимать или не нажимать на кнопку. Если же, в блоке if, я изменю на (!keyUp), то динамик будет трещать постоянно. В чем может быть проблема?

    P.S. Когда у меня в if блоке стоит (keyUp), то при нажатии на кнопку гаснет светодиод On на самой ардуинке.
     
    Последнее редактирование: 11 фев 2015
  6. altex

    altex Гик

    Фотографию конструкции нужно
     
  7. AntonEryomin

    AntonEryomin Нуб

    Сделал ссылку на дропбокс папку:

    https://www.dropbox.com/lightbox/home/фотография схемы

    Собственно синяя (-) это у меня GND (слевой стороны), справой стороны (+) на неё я подаю напряжение 5В (белый провод)
    Динамик слева зеленый провод идет в 13-ый пин, справа черный у динамика в GND.
    Справа от кнопок проводки идут в пины, те V(out), слева идут в резистор потом землю
    нижня нога у кнопки идет слевой стороны в V(cc)
     
  8. altex

    altex Гик

    "Чтобы получить доступ к этой странице, войдите в аккаунт или зарегистрируйтесь."
     
  9. altex

    altex Гик

    резистор и земля должны идти к пинам, а не к кнопкам
     
  10. AntonEryomin

    AntonEryomin Нуб

  11. AntonEryomin

    AntonEryomin Нуб

    Но у нас же получается так (если верить вот этой схеме http://wiki.amperka.ru/_media/конспект-arduino:p008-button-pull-down.svg.png):

    Я примерно нарисовал схемку включения, без динамика только. 2 параллельные прямые это рельсы на самой кнопке, которые нарисованы внизу, под ней.
     

    Вложения:

  12. altex

    altex Гик

    У вас земля соединена с кнопкой напрямую, а не через резистор.
    Когда вы нажимаете кнопку, то происходит короткое замыкание.
     
  13. AntonEryomin

    AntonEryomin Нуб

    Мне не совсем понятно, почему кнопка соединена напрямую? у меня же между землей и кнопкой стоит резистор.
     
  14. altex

    altex Гик

    Резистор стоит не между, о обоими ногами на одной линии
     
  15. X-Dron

    X-Dron Гик

    altex все правильно говорит, там КЗ при нажатии.
    На примере 28-й линии макетки и первой кнопки.
    гнезда a,b,c,d,e - короткозамкнуты внутри платы. Вы туда подаете 0В и "шунтируете" короткозамкнутый проводник резюком. Соответственно, при нажатии КЗ.
    0В нужно подавать на 27а, а ногу резюка на 27b.
    Для остальных кнопок аналогично.
     
  16. AntonEryomin

    AntonEryomin Нуб

    Схему собрал как вы верно подсказали, но теперь столкнулся со следующей проблемой:
    1) Звук идет всегда, но если нажать на кнопку то тон меняется, пока кнопка нажата
    2) по коду сделал 2 вывода значения keyPin такое ощущение что она "сама" нажимается.

    вот код:
    #define BUZZER_PIN 13
    #define FIRST_KEY_PIN 4
    #define KEY_COUNT 5

    void setup()
    {
    pinMode(BUZZER_PIN, OUTPUT);
    Serial.begin(9600);
    }

    void loop()
    {
    for (int i = 0; i < KEY_COUNT; i++){
    int keyPin = i + FIRST_KEY_PIN;
    boolean keyUp = digitalRead(keyPin);
    Serial.println(keyUp);
    if (keyUp){
    int frequency = 500 + i*500;
    tone(BUZZER_PIN, frequency, 10);
    Serial.println(keyUp);
    }
    }
    }


    А вот кусочек вывода:

    1
    0
    0
    0
    0
    1
    1
    0
    0
    0
    0
    1
    1
    1
    1
    0
    0
    0
    1
    1
    0
    0
    0
    0
    1
    1
    1
    1

    Обновленное фото схемы:
     

    Вложения:

    • IMG_0363.jpg
      IMG_0363.jpg
      Размер файла:
      442,3 КБ
      Просмотров:
      750
  17. AntonEryomin

    AntonEryomin Нуб

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