Изучаем Arduino: инструметы и методы технического волшебства - страница 23

стр.

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.

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

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