LoveRead.info » Книги » Разная литература » Электроника для начинающих (2-е издание) - Чарльз Платт

Электроника для начинающих (2-е издание) - Чарльз Платт

Книгу Электроника для начинающих (2-е издание) - Чарльз Платт читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

293 0 10:01, 27-05-2023
Электроника для начинающих (2-е издание) - Чарльз Платт
27 май 2023

Книга Электроника для начинающих (2-е издание) - Чарльз Платт читать онлайн бесплатно без регистрации

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

    1 ... 114 115 116 117 118 119 120 121 122 ... 128
    Перейти на страницу:

    Теперь мы переходим к важной части. В написанном мною алгоритме мы дошли до Шагов 3, 4 и 4а. Напомню:

    • Шаг 3. Проверить, нажата ли кнопка.

    • Шаг 4. Проверить, достигло ли системное время значения переменной ignore.

    • Шаг 4а. Если кнопка не была нажата ИЛИ если системное время не достигло значения переменной ignore, вернуться к Шагу 1. Иначе…

    Эти шаги можно скомбинировать в одной функции сравнения if. Алгоритм выглядел бы так:

    • Если (кнопка не нажата ИЛИ системное время меньше значения ignore), вернуться к Шагу 0.

    Но здесь есть проблема. Фраза «вернуться к» предполагает отсылку микроконтроллера к указанной части программы. Казалось бы, естественная команда, но когда вы программируете на языке С, следует избегать передачи управления из одной части программы в другую.

    Причина в том, что обилие команд «перейти туда» или «перейти сюда» усложняет понимание программы – не только для других людей, но и для вас самих, когда вы взглянете на нее снова через полгода и не сможете вспомнить, что имелось в виду.

    Концепция языка С заключается в том, что каждая часть программы содержится в отдельном блоке и программа запускает их при помощи вызовов по вашему запросу. Воспринимайте каждый блок команд как послушного слугу, который выполняет только одно дело: мытье посуды или вынос мусора. Когда требуется выполнить определенное задание, вы просто зовете слугу по имени.

    Такие блоки обычно называются функциями, что немного сбивает с толку, потому что мы уже имели дело с функциями setup() и loop(). Фактически, вы можете написать собственную функцию, которая будет работать в целом по такому же принципу.

    Я решил, что будет правильнее написать эту программу, выделив функцию проверки статуса в отдельную… хм… функцию. Я назвал ее checkbutton(), но мог бы назвать как угодно, если только ее название уже не зарезервировано для другой цели.

    Вы видите функцию checkbutton() в нижней части листинга 5.3 с предшествующим ей словом void, потому что эта функция не возвращает никакого значения в остальную часть программы.

    Слова void checkbutton() – это заголовок функции, после которого, как обычно, в фигурных скобках содержится сама процедура. Эта функция выполняет следующее:

    • Ждет 50 мс, пока прекратится дребезг контактов.

    • Ожидает, пока будет отпущена кнопка.

    • Ждет еще 50 мс, пока прекратится дребезг контактов отпущенной кнопки.

    • Ждет, пока кнопка будет нажата снова (другими словами, ожидает завершения отпущенного состояния).

    • Сбрасывает переменную ignore.

    Когда микроконтроллер доходит до конца этой функции, куда он идет дальше? Все просто: он возвращается к строке, расположенной сразу за той, из которой была вызвана функция. Где она? Сразу под функцией сравнения, выше. Так и происходит вызов функции: вы просто указываете ее имя (включая круглые скобки, внутри которых иногда содержатся параметры, хотя в данном случае их нет).

    Вы можете и должны создавать столько функций в программе, сколько пожелаете, используя каждую для выполнения отдельной задачи. Чтобы узнать об этом, рекомендую прочитать любые общие руководства по языку С. Документация к среде Arduino не описывает функции детально, потому что они сложны для понимания, когда речь заходит о передаче значений. Тем не менее, это основополагающая конструкция языка С.

    Структура программы

    Строка, которая начинается с if (millis() > ignore, предназначена для того же, что и Шаг 4 в моем алгоритме, но теперь все работает по-другому. Вместо того чтобы решить, отправлять ли микроконтроллер обратно к началу программы, принимается решение, вызывать ли функцию checkbutton(). Ранее я резюмировал ее логику так: «Если (кнопка не нажата ИЛИ системное время меньше значения ignore), вернуться к Шагу 0». Пересмотренный вариант гласит: «Если превышен период игнорирования кнопки И кнопка нажата, перейти к функции к checkbutton()».

    После того как микроконтроллер выполнит это и вернется, он достигнет конца основной функции loop, которая всегда повторяется автоматически.

    На самом деле эта программа выполняет только одну задачу. Она выбирает случайные числа и отображает их в виде конфигурации точек снова и снова. Если кнопка нажата, то программа делает паузу и ждет, а когда кнопку нажмут снова, программа продолжает делать то, что делала раньше. Процедура проверки кнопки – всего лишь кратковременный перерыв.

    Поэтому, естественная структура для этой программы – основной цикл, который выбирает и отображает цифры, и если кнопка нажата, микроконтроллер отправляется к функции checkbutton(), а затем возвращается к основному циклу.

    Документация среды Arduino ничего не говорит о структуре программы, потому что подразумевает наличие базовых знаний программирования. Поэтому среда Arduino просто требует указать обязательную функцию setup, за которой следует функция loop, и все.

    Но как только программа увеличится в размере, вам обязательно понадобится разделить ее на подходящие функции, чтобы она не превращалась в запутанный «клубок» операторов. Стандартное руководство по языку С объяснит все более детально.

    Безусловно, если поставленная задача не слишком сложна, например, включение нагревателя, когда в комнате становится прохладно, вы можете поместить все процедуры внутри основной функции loop, и этого будет достаточно. Но при этом возможности микроконтроллера задействованы не полностью. Он ведь способен выполнить намного больше. Проблема в том, что когда вы пытаетесь сделать что-то более амбициозное, например, сымитировать бросок игрального кубика, операторов становится намного больше и обязательно потребуется их структурировать.

    Есть еще одно преимущество разделения программы на функции. Можно сохранить функции отдельно и использовать их в других программах в дальнейшем. Функция checkbutton() пригодится в любой игре, где вы хотите останавливать ход путем нажатия кнопки и возобновлять игру повторным нажатием.

    Подобным же образом вы можете в своих программах использовать функции других людей, при условии, что авторы не запрещают вам это, контролируя свое авторское право. Большое количество функций на языке С доступно бесплатно в онлайн-источниках, многие из них написаны специально для среды Arduino. Например, есть функции для управления почти всеми алфавитно-цифровыми дисплеями. Это приводит к очень важному, но часто игнорируемому совету для программистов: не изобретайте велосипед. Вам не нужно тратить время, чтобы создавать свою функцию, если кто-либо разрешает вам взять уже готовую. Это еще одна причина, по которой понятие функции так важно в языке С.

    Сложно ли создавать программы?

    Чем больше программ вы создаете, тем проще это дается. Вначале все кажется слишком сложным, но после некоторой практики цикл for получится у вас без долгих раздумий. Все станет очевидным. Так любят говорить программисты. Но так ли это?

    Иногда да, а иногда нет.

    1 ... 114 115 116 117 118 119 120 121 122 ... 128
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Ксения Ксения24 июнь 18:50 Очень понравился цикл книг "В самом сердце стужи". Интересная история, написанная с огромным вниманием к деталям. Не избитый... В самом Сердце Стужи. Том VII - Александр Якубович
    2. Riya Riya23 июнь 00:13 Остані 20 сторінок ледве дочитала, сам роман тримав в напрузі, але воно того було варте хотілося щоб про Лоренса  більше було і... По праву вражды и истинности - Виктория Вашингтон
    3. awaynice awaynice21 июнь 16:59 Книга в которой начинаешь сходить с ума вместе с героем: было или не было? Ксчастб, она короткая.... Эхо забвения - Хелен Гард
    Все комметарии
    Новинки бесплатной онлайн библиотеки