Добрый день! Ни как не могу разобраться пунктом 3: Подключите кнопки по схеме со стягивающим резистором и измените программу так, чтобы она продолжала работать. Пока разбирался заметил что "Принципиальная схема" не совпадает с "Схема на макетке", на схеме на макетке у казано что GND и 5V соединены с одно стороны, а Pin с другой, принципиальная схема выглядит по другому. Но вот с чем я не смог разобраться, если я подключаю схему со стягивающим резистором то у меня получается меняется сама схема и теперь при нажатии я получаю True, но почему то программа работает что при нажатии динамик затихает и необходимо использовать ! Не знаю, получилось ли объяснить проблему, но хватает ума подключить по другому и исправить программу. Помогите кто соображает!
Добавлю комментарий , получается что схема работает только в том случаи если PIN расположон с противополжной стороны, а не как на схеме сайта Амперка во вкладке КНОПКА, или я чего то не понимаю в схемах! И 5В должно находиться на одной стороне с GND! По другому у меня не работает! Может кнопка особенная.
я дико извеняюсь!, НО я один не пойму какой "пункт 3", какая "схема на макете"???? в чем проблема собственно???
В чем проблема то? Надо уметь читать документацию, а не думать, что тут и так все понятно. Все там правильно. В том же эксперименте написано, цитата: В http://wiki.amperka.ru/конспект-arduino:кнопка Так же наглядно описано, что коммутируется не верхние и нижние контакты кнопки, а правые и левые. Может так понятней будет, как в приложенном файле
Подскажите пожалуйста, у меня так же проблема с 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 на самой ардуинке.
Сделал ссылку на дропбокс папку: https://www.dropbox.com/lightbox/home/фотография схемы Собственно синяя (-) это у меня GND (слевой стороны), справой стороны (+) на неё я подаю напряжение 5В (белый провод) Динамик слева зеленый провод идет в 13-ый пин, справа черный у динамика в GND. Справа от кнопок проводки идут в пины, те V(out), слева идут в резистор потом землю нижня нога у кнопки идет слевой стороны в V(cc)
Перевыложил на гугл диск с доступом всем - https://drive.google.com/folderview...ExSjJZejEtbHk1WWNKNEQ2bFRROXc4cW8&usp=sharing
Но у нас же получается так (если верить вот этой схеме http://wiki.amperka.ru/_media/конспект-arduino:p008-button-pull-down.svg.png): Я примерно нарисовал схемку включения, без динамика только. 2 параллельные прямые это рельсы на самой кнопке, которые нарисованы внизу, под ней.
У вас земля соединена с кнопкой напрямую, а не через резистор. Когда вы нажимаете кнопку, то происходит короткое замыкание.
Мне не совсем понятно, почему кнопка соединена напрямую? у меня же между землей и кнопкой стоит резистор.
altex все правильно говорит, там КЗ при нажатии. На примере 28-й линии макетки и первой кнопки. гнезда a,b,c,d,e - короткозамкнуты внутри платы. Вы туда подаете 0В и "шунтируете" короткозамкнутый проводник резюком. Соответственно, при нажатии КЗ. 0В нужно подавать на 27а, а ногу резюка на 27b. Для остальных кнопок аналогично.
Схему собрал как вы верно подсказали, но теперь столкнулся со следующей проблемой: 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 Обновленное фото схемы: