Хорошо бы для новичков на блок-схеме показывать как работает программа. А то все эти "if(But && !Now)" "if(!Now) { Light = !Light;" "But = Now;" сильно сбивают с толку своей непонятностью. И желательно писать предназначение переменных более понятно, например "checkButton" "checkLight" "pinButton" "pinLed".
Мне, как максимально новичку в ардуино (да и электротехнике) не понятно, как мы приходим к тому, что вот здесь мне нужен резистор. И на не просто какой-то, а конкретно на 10 кОм.
Не на 20 и не на 5
Было бы круто, если бы автор писал, как именно мы приходим к тому, что нам нужны сторонние элементы в цепи
спасибо
Это подтягивающий резистор. Когда кнопка разомкнута, на дискретный вход подается минус с GND. Нужен он для того, чтобы не было ложных срабатываний, из-за наводок например, когда вы подносите руку к Arduino. Номинал обычно выбирается из стандартных: 10, 15 или 20 кОм.
Вообще, тут показана плохая практика с кнопкой, когда она коммутирует "+" на вывод контроллера. Разницы по электрическим причинам то нет, но когда дело доходит до практики на плате кнопку очень неудобно вешать на тонкий проводок подводящий "+" к ней. Общий же провод обычно предоставлен по всей плате в виде большого полигона, риска оторвать тонкую дорожку к которой припаяна SMD или обычная кнопка во время эксплуатации гораздо меньше.
Номинал выбирается из справочника Стеля. Слишком маленький номинал — будет большой ток во время нажатия кнопки, что для батарейного устройства как бы довольно плохо. Слишком большой номинал — будут пролазить наводки электростатические… вот и выходит на практике в качестве компромисса номинал в 10кОм +- лапоть. Иногда этого мало и нужно уменьшать номинал(соседство с силовыми цепями с крутыми фронтами), а иногда ровно наоборот — нужно увеличивать номинал т.к. батарейка не бесконечная а кнопка предполагается очень долго нажатой. Вплоть до того что подтяжка включается ТОЛЬКО на время проверки состояния кнопки.
Немного не понял, что плохого в подаче "+" на дискрет Arduino, и причем здесь разводка платы, проводки и риск оторвать тонкую дорожку.
Справочник Потолковского тоже сгодится.
Не из-за наводок вешается резистор, а что бы явно выставить уровень по-умолчанию, иначе у вас может быть что угодно, вход плавающий. И резистором лучше вешать на питание, а не на землю, так как есть ток утечки вывода и его ёмкость может зарядиться и вызвать ложное срабатывание, если резистор достаточно велик.
Я не автор, но могу сказать, что к этим вещам приходят на основе понимания электротехники…
Я про резистор и диод вот что могу сказать
Если говорить о диоде и резисторе, то надо знать, что на диоде падает примерно постоянное напряжение. А напряжение питания мы прикладываем немного больше, чем надо. Весь излишек напряжения упадет на резисторе или на соединительных проводах (кои тоже можно считать за очень маленький резистор). У резистора есть сопротивление (которое мы вольны выбирать), есть остаток напряжения, который упадет на нем — что из этого получается (для человека, у которого закон Ома в подкорке, это очевидно)? Да ток же, который обтекает все элементы схемы — и резюк, и источник питания, и наш ненаглядный диод. Вот так, вооружившись законом Ома, мы подбираем сопротивление резистора — который определяет ток, текущий через всю схему. Не просто там абы как ограничивает, а именно определяет — мы задаем вполне конкретный ток, питающий диод.
Почему нельзя превышать ток через диод? Потому что от него напрямую зависит мощность, выделяемая на диоде. Если мощность превысит некий предел, диод сгорит к едрене-фене.
Как то вот так, если упрощенно.
В общем то, для новичка было бы круто, если все это будет описано в статье. Но это все равно что рассказывать про переменные и циклы в любой статье про программирование. Хотя, если тут разжевывают даже полярность светодиода, может, и стоило включить вот это вот всё.
Но на самом деле, надо иметь в виду что светодиод не сгорает мгновенно. При превышении тока он начинает деградировать гораздо быстрее чем это могло бы быть. Чем меньше превышение тем дольше он будет «сгорать». Когда-то экспериментировал над классическими АЛ307 зелёный — на токе в 100-200мА(при норме не более 10мА) он работает примерно 30 секунд постепенно меняя цвет свечения на желтый. Современные в этом плане ничем не отличаются.
Arduino для начинающих. Часть 2