Читаем Изучаем Arduino: инструменты и методы технического волшебства полностью

Здесь value - преобразуемое значение (напряжение на аналоговом входе). fromLow и fromHigh - это нижняя и верхняя границы текущего диапазона. В нашем примере это минимальная и максимальная освещенность в помещении (200 и 900). toLow и toHigh - нижняя и верхняя границы нового диапазона. Аргумент функции analogWrite() должен быть в диапазоне от 0 до 255. Но мы хотим меньшей освещенности сопоставить большую яркость светодиода, т. е. минимальным значениям на аналоговом входе должны соответствовать максимальные значения на выводах светодиода. У доб но, что функция map() делает это автоматически. Функция map() осуществляет линейное отображение. Например, если fromLow и fromHigh равны 200 и 900, соответственно, а toLow и toHigh равны 255 и 0, то 550 превратится в 127, потому что 550 находится посередине между 200 и 900, а 127 посередине между 255 и 0. Следует учесть, что функция map() не ограничивает значения, если они выходят за границы диапазона. Если value окажется меньше 200 (для нашего примера), то output будет больше 255. Это неудобно, т. к. передать функции analogWrite() значение, превышающее 255, нельзя. Для ограничения значений есть Функция constrain(), синтаксис которой выглядит следующим образом:

output = constrain(value, min, max).

При передаче значения из функции map() в функцию constrain() можно установить аргумент min равным 0 и max - 255, тогда величины, выходящие за рамки этого диапазона, будут ограничены. Теперь все готово, чтобы написать программу управляемого ночника. Посмотрим, как будет выглядеть окончательно наш проект (листинг 3.3).

Листинг 3.3. Программа управляемого ночника - nightlight.ino

// Автоматический ночник

const int RLED=9; // Контакт 9 для ШИМ-вывода RED RGB-светодиода

const int LIGHT=0; // Контакт A0 для входа фоторезистора

const int MIN_LIGHT=200; // Нижний порог освещенности

const int MAX_LIGHT=900; // Верхний порог освещенности

int val = 0; // Переменная для сохранения считанного аналогового значения


void setup()

{

pinMode(RLED, OUTPUT); // Сконфигурировать RED-контакт светодиода как выход

}

- 79 -

void loop()

{

val = analogRead(LIGHT); // Чтение показаний фоторезистора

val = map(val, MIN_LIGHT, MAX_LIGHT, 255, 0); // вызов функции map()

val = constrain(val, 0, 255); // ограничение границ

analogWrite(RLED, val); // управление светодиодом

}

Обратите внимание, что в листинге переменная val используется повторно.

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

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

Резюме

В этой главе вы узнали следующее:

• Чем отличаются аналоговые сигналы от цифровых.

• Как преобразовать аналоговые сигналы в цифровые.

• Как считать аналоговый сигнал с потенциометра.

• Как вывести на экран данные, используя монитор последовательного порта.

• Как взаимодействовать через интерфейс с аналоговыми датчиками.

• Как создать собственные аналоговые датчики.

• Как ограничить значения для управления аналоговыми выходами.

ЧАСТЬ II Управление окружающей средой


В этой части

Глава 4. Использование транзисторов и управляемых двигателей

Глава 5. Работаем со звуком

Глава 6. USB и последовательный интерфейс

Глава 7. Сдвиговые регистры


Глава 4. Использование транзисторов и управляемых двигателей


Список деталей

Для повторения примеров главы вам понадобятся следующие детали:

• плата Arduino Uno;

• USB-кабель;

• батарея 9 В;

• разъем для батареи 9 В;

• стабилизатор напряжения L4940V5;

• электролитический конденсатор 22 мкФ;

• электролитический конденсатор 0, 1 мкФ;

• керамический конденсатор 1 мкФ;

• 4 синих светодиода;

• 4 резистора номиналом 1 кОм;

• биполярный n-p-n транзистор PN2222;

• диод 1N4004;

• перемычки;

• провода;

• ИК-датчик расстояния Sharp GP2YOA41SKOF ИК с кабелем;

• стандартный серводвигатель;

• двигатель постоянного тока;

• макетная плата;

• потенциометр;

• драйвер двигателя SN754410.

- 84 -


Электронные ресурсы к главе

На странице http://www.exploringarduino.com/content/ch4 можно загрузить код программ, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.

Что вы узнаете в этой главе

Перейти на страницу:

Похожие книги

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Основы информатики: Учебник для вузов
Основы информатики: Учебник для вузов

Учебник состоит из двух разделов: теоретического и практического. В теоретической части учебника изложены основы современной информатики как комплексной научно-технической дисциплины, включающей изучение структуры и общих свойств информации и информационных процессов, общих принципов построения вычислительных устройств, рассмотрены вопросы организации и функционирования информационно-вычислительных сетей, компьютерной безопасности, представлены ключевые понятия алгоритмизации и программирования, баз данных и СУБД. Для контроля полученных теоретических знаний предлагаются вопросы для самопроверки и тесты. Практическая часть освещает алгоритмы основных действий при работе с текстовым процессором Microsoft Word, табличным редактором Microsoft Excel, программой для создания презентаций Microsoft Power Point, программами-архиваторами и антивирусными программами. В качестве закрепления пройденного практического курса в конце каждого раздела предлагается выполнить самостоятельную работу.

Вадим Васильевич Лысенко , Лариса Александровна Малинина , Максим Анатольевич Беляев

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Внутреннее устройство Microsoft Windows (гл. 1-4)
Внутреннее устройство Microsoft Windows (гл. 1-4)

Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS. Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы. B четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64. Книга состоит из 14 глав, словаря терминов и предметного указателя. Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.Названия всех команд, диалоговых окон и других интерфейсных элементов операционной системы приведены как на английском языке, так и на русском.Версия Fb2 редакции — 1.5. Об ошибках просьба сообщать по адресу — general2008@ukr.net.

Дэвид Соломон , Марк Руссинович

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT