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

Тут можно читать онлайн Чарльз Платт - Электроника для начинающих (2-е издание) - бесплатно ознакомительный отрывок. Жанр: sci_tech, издательство «БХВ-Петербург», год 2017. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Электроника для начинающих (2-е издание)
  • Автор:
  • Жанр:
  • Издательство:
    «БХВ-Петербург»
  • Год:
    2017
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-9775-3793-3
  • Рейтинг:
    3.12/5. Голосов: 6221
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

Электроника для начинающих (2-е издание) - читать онлайн бесплатно ознакомительный отрывок

Электроника для начинающих (2-е издание) - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Чарльз Платт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Отложим ненадолго вопрос о начальном значении для генератора случайных чисел. Давайте предположим, что случайное значение генерирует функция random () и затем из него формируется число в качестве выходного значения программы имитации игральных костей. Как это реализовать?

Я думаю, игрок будет нажимать кнопку, и в этот момент отобразится случайно выбранная конфигурация точек на кубике. Готово! Затем, если вам нужно «кинуть кости» повторно, вы просто нажимаете кнопку еще раз, и появляется другая, выбранная случайным образом, комбинация точек на кубике.

Это нам подходит, но выглядит не очень правдоподобно. Люди могут задаться вопросом, на самом ли деле это случайное число? Полагаю, проблема в том, что пользователь лишен возможности управлять процессом.

Вернемся к «аппаратной» версии этого устройства. Мне нравился вариант, когда после включения точки отображаются очень быстро и конфигурации нечеткие, а игрок может нажать кнопку, чтобы произвольно прервать последовательность.

Может быть, программа должна работать именно так, а не использовать функцию random () ?

Она может вести отсчет от 1 до 6 снова и снова очень быстро — как микросхема счетчика в аппаратной версии игральных костей.

Но теперь возникают другие сложности. Когда программа считает от 1 до 6, а затем повторяет счет, микроконтроллеру, как я думаю, понадобится еще несколько микросекунд, чтобы вернуться к началу цикла. Поэтому число «6» всегда будет отображаться чуть дольше, чем другие числа.

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

Мне нравится этот план. Но что потом? Не придется ли добавить еще одну кнопку, чтобы перезапустить быстрое отображение чисел? Хотя, нет, это излишне: одна и та же кнопка выполнит обе операции. Нажмите, чтобы остановить, снова нажмите, чтобы перезапустить.

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

Алгоритм

Мне нравится составлять алгоритм в виде последовательности предложений, которые очень легко перевести на язык компьютера. Вот мой план алгоритма для программы, которую я назвал «Точные игральные кости». Имейте в виду то, что эти инструкции будут выполняться очень быстро, и в результате числа окажутся размытыми.

Основной цикл:

• Шаг 1. Выбрать случайное число.

• Шаг 2. Преобразовать его в конфигурацию точек на игральной кости и зажечь соответствующие светодиоды.

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

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

• Шаг 5. Остановить индикацию на дисплее.

• Шаг 6. Подождать, пока игрок не нажмет кнопку повторно. После этого вернуться к Шагу 1 и повторить.

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

Нет, потому что некоторых инструкций не хватает. Шаг 2 говорит «зажечь соответствующие светодиоды», но нигде нет инструкции по их выключению!

Внимание!

Вы всегда должны помнить: компьютер делает только то, что вы ему приказываете.

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

Где она должна быть? Необходимо гасить дисплей пред выбором и отображением каждого нового числа. Поэтому правильное место для сброса дисплея находится в начале основного цикла. Добавим его так:

• Шаг 0. Выключить все светодиоды.

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

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

Обработка состояния кнопки

Что еще пропущено в списке шагов алгоритма? Кнопка.

Необходимо еще раз представить, какие действия я ожидаю от программы. На дисплее очень быстро сменяются числа. Игрок нажимает кнопку, чтобы остановить индикацию. Дисплей замирает, показывая текущее значение. На Шаге 6 микроконтроллер ждет неопределенно долго, пока игрок не нажмет кнопку снова, чтобы вновь запустить быстрое отображение.

Минуточку. Как игрок сможет нажать кнопку снова, не отпустив ее вначале?

На самом деле, если оставить текущий вариант алгоритма, то микроконтроллер будет делать следующее (учтите, что он выполняет задания очень-очень быстро):

• Программа говорит микроконтроллеру проверить кнопку.

• Микроконтроллер обнаруживает, что кнопка нажата.

• Дисплей замирает. Микроконтроллер ждет, когда кнопка будет нажата снова.

• Но он обнаруживает, что кнопка по- прежнему нажата, потому что игрок еще не успел отпустить ее.

• Микроконтроллер действует так: «Кнопка нажата, поэтому я должен возобновить быстрое отображение цифр».

В результате индикация на дисплее остановится лишь на мгновение.

Вот решение проблемы — дополнительный шаг в последовательности:

• Шаг 5А. Дождаться момента, когда игрок отпустит кнопку.

Это не даст компьютеру возможности вести дальнейший отсчет и отображать другие числа, пока игрок не будет готов.

Теперь все в порядке?

Нет, боюсь, что нет. Возможно, вам кажется, что процесс становится слишком трудоемким, но в таком случае я вынужден сказать: «извините, но таково программирование». Если кто-то говорит, что можно быстро набросать несколько команд и посмотреть, как они работают, то уверяю вас, что чаще всего это не так.

Существует еще одна проблема с кнопкой. Шаг 6 просит подождать, пока кнопка не будет нажата снова, чтобы запустить быстрое отображение. Отлично. Игрок нажимает кнопку, дисплей возобновляет индикацию цифр, но микроконтроллер настолько быстр, что он «промчится» через процесс обнуления текущего значения и отображения новой комбинации игральных костей прежде, чем игрок перестанет нажимать кнопку. В результате, когда микроконтроллер перейдет к Шагу 4, он обнаружит, что кнопка по-прежнему нажата, и снова «заморозит» дисплей.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Чарльз Платт читать все книги автора по порядку

Чарльз Платт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Электроника для начинающих (2-е издание), автор: Чарльз Платт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x