Создание программ — это занятие другого рода. Вы должны быть дисциплинированны и логичны, иначе будете писать программный код с ошибками, и он не станет работать надежно. Также здесь необходимо все планировать наперед, в противном случае вы потеряете много времени, переделывая выполненную ранее работу или полностью отказываясь от нее.
Я не люблю планировать, но еще больше я не люблю терять время. Поэтому, я все же составляю план, а в этом заключительном проекте опишу процесс планирования подробно. Прошу извинить меня за то, что вы не получите немедленного удовольствия от простого процесса сборки компонентов и возможности увидеть результат. Но если я не поясню процесс разработки программного обеспечения, то создам ошибочное впечатление о том, что программирование проще, чем оно есть на самом деле.
Первый вопрос кажется очевидным: «Каких конкретных действий я жду от этой программы?» Вопрос необходим, потому что если цель не вполне ясна даже вам, то микроконтроллер и подавно не сможет ее реализовать. Формулировка цели напоминает описанный в эксперименте 15 процесс написания технического задания для системы охранной сигнализации, но в случае микроконтроллера детализация должна быть больше.
Основное требование очень простое. Мне нужна программа, которая будет выбирать случайное число и показывать его с помощью светодиодов, расположение которых напоминает точки на игральном кубике.
Поскольку выбор случайного числа — это основа данной программы, то вас следует познакомить с данной темой. Давайте заглянем на сайт Arduino, где находится справка о языке. Этот раздел сайта не настолько исчерпывающий, как мне хотелось бы, но для начала сгодится.
Чтобы найти его, перейдите на главную страницу Arduino [18] На сайте http://arduino.ru похожий раздел называется «Программирование». — Ред
, выберите вкладку Learning (Обучение) и отыщите раздел Reference, где вы найдете секцию Random Numbers. Там вы обнаружите специально созданную для контроллера Arduino функцию под названием random ().
Вас не должно это удивлять, потому что практически все языки программирования высокого уровня имеют какую-либо встроенную функцию генерации случайных чисел, и она всегда основана на математических приемах для формирования последовательности чисел, которая продолжается очень долго, прежде чем начнет повторяться. Единственная проблема заключается в том, что поскольку эти числа создаются путем математических операций, то случайная последовательность будет начинаться с одного и того же места каждый раз, когда вы запускаете программу.
А если вы желаете, чтобы последовательность начиналась с другого числа? Для этого есть другая функция ПОД названием randomSeed () , которая запускает генератор чисел в зависимости от состояния вывода микроконтроллера, который ни к чему не подключен. Как я уже упоминал ранее, «плавающий» логический вывод улавливает окружающее электромагнитное излучение, и вы никогда не узнаете, что от него ожидать. Поэтому значение randomSeed () может оказаться в полном смысле слова случайным, и его использование даст хороший результат, но следует помнить, что «плавающий» контакт нельзя задействовать для чего-либо еще.
Отложим ненадолго вопрос о начальном значении для генератора случайных чисел. Давайте предположим, что случайное значение генерирует функция random () и затем из него формируется число в качестве выходного значения программы имитации игральных костей. Как это реализовать?
Я думаю, игрок будет нажимать кнопку, и в этот момент отобразится случайно выбранная конфигурация точек на кубике. Готово! Затем, если вам нужно «кинуть кости» повторно, вы просто нажимаете кнопку еще раз, и появляется другая, выбранная случайным образом, комбинация точек на кубике.
Это нам подходит, но выглядит не очень правдоподобно. Люди могут задаться вопросом, на самом ли деле это случайное число? Полагаю, проблема в том, что пользователь лишен возможности управлять процессом.
Вернемся к «аппаратной» версии этого устройства. Мне нравился вариант, когда после включения точки отображаются очень быстро и конфигурации нечеткие, а игрок может нажать кнопку, чтобы произвольно прервать последовательность.
Может быть, программа должна работать именно так, а не использовать функцию random () ?
Она может вести отсчет от 1 до 6 снова и снова очень быстро — как микросхема счетчика в аппаратной версии игральных костей.
Читать дальше
Конец ознакомительного отрывка
Купить книгу