В 12 экперименте от амперки http://wiki.amperka.ru/конспект-arduino:кнопочные-ковбои используется 13 пин на вход с подтягивающим резистором. Интересует вопрос, разве напряжение из Vcc проходя через подтягивающий резистор не будет выходить через светодиод, распаянный на плате, на GND? Учитывая высокий импенданс на входе, и маленькое сопротивление светодиода.
В принципе, да, если сделать такую цепь, ток будет течь через подтяжку и светодиод. Сопротивление встроенной подтяжки 20~50k, падение напряжения на диоде 1.5~2.5V (примерно), при Vcc=5V ток будет (5-2.5)/50k=0.05mA ~ (5-1.5)/20k=0.172mA. p.s. оценка очень грубая, Vf у диода при таком токе будет меньше.
http://c2n.me/j7VDbl.png Интересно, там добавили ОУ, в 3-й ревизии. Возможно только из-за этого на практике эксперимент 12 и работает.
Круто, спасибо, разобрался. У меня сразу же второй вопрос. Аналогичный. Я вот пытаюсь сделать тот же эксперимент на Nucleo F401RE http://www.st.com/web/catalog/tools...ipf_pron_pr-nucleo_feb2014&sc=nucleoF401RE-pr Там схема немного отличается http://c2n.me/j7VXvj.png Тут нет никакого ОУ, а напрямую ток идёт на светодиод через резистор. Получается, что вот такая программа немного глючит в итоге Код (Text): #include "mbed.h" DigitalIn button(D13); PwmOut speaker(D12); int main() { button.mode(PullUp); int state; while(1) { printf("start\n"); wait_ms(1000); speaker.period(.0003); speaker = .5; while(1) { state = button.read(); if (!state) { printf("button=%d\n", state); break; } } } } вот такой вывод получается Код (Text): start button=0 start button=0 start button=0 start button=0 ... Причём, если добавить wait(1); перед циклом while(1) - задержку в 1 секунду, либо если убрать работу с pwm перед циклом while(1), то таких глюков почему-то не происходит. Теперь я думаю, что проблема именно в этом светодиоде, и для корректности нужно вообще отказаться от использования D13 на вход, так как к нему подключен этот светодиод напрямую.