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

Тут можно читать онлайн Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература, издательство БХВ-Петербург, год 2015. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

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

Изучаем Arduino: инструметы и методы технического волшебства - описание и краткое содержание, автор Джереми Блум, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Книга посвящена проектированию электронных устройств на основе микроконтроллерной платформы Arduino. Приведены основные сведения об аппаратном и программном обеспечении Arduino. Изложены принципы программирования в интегрированной среде Arduino IDE. Показано, как анализировать электрические схемы, читать технические описания, выбирать подходящие детали для собственных проектов. Приведены примеры использования и описание различных датчиков, электродвигателей, сервоприводов, индикаторов, проводных и беспроводных интерфейсов передачи данных. В каждой главе перечислены используемые комплектующие, приведены монтажные схемы, подробно описаны листинги программ. Имеются ссылки на сайт информационной поддержки книги. Материал ориентирован на применение несложных и недорогих комплектующих для экспериментов в домашних условиях.
Для радиолюбителей

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

Изучаем Arduino: инструметы и методы технического волшебства - читать книгу онлайн бесплатно, автор Джереми Блум
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Температура (°С)х10 = Напряжение (мВ)- 500.

Напряжение 700 мВ соответствует температуре 20°С. Расчет по формуле (или просто анализ показаний монитора последовательного порта) дает для 22°С цифровое значение 147, для 18°С- 139. Эти величины выберем для нижнего и верхнего значений комфортной температуры, чтобы изменять цвет светодиода. Функция analogRead() будет считывать показания датчика температуры, digitalWrite() устанавливать цвет светодиода.

СоветРекомендую вам не копировать листинг 3.2, а попробовать написать текст программы самостоятельно, чтобы убедиться в своих силах. Сравните свой результат с приведенным далее.

Листинг 3.2. Программа температурного оповещателя - tempalert.ino

// Температурный оповещатель

// Контакт

const int BLED=9; // Контакт 9 для вывода BLUE RGB-светодиода

const int GLED=10; // Контакт 9 для вывода GREEN RGB-светодиода

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

const int TEMP=0; // A0 для подключения датчика температуры

const int LOWER_BOUND=139; // Нижний порог

const int UPPER_BOUND=147; // Верхний порог

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

void setup()

{

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

pinMode(GLED, OUTPUT); // - - GREEN - -

pinMode(RLED, OUTPUT); // - - RED - -

}

void loop()

{

val = analogRead(TEMP);

- 75 -

if (val < LOWER_BOUND)

{

digitalWrite(RLED, LOW);

digitalWrite(GLED, LOW);

digitalWrite(BLED, HIGH);

}

else if (val > UPPER_BOUND)

{

digitalWrite(RLED, HIGH);

digitalWrite(GLED, LOW);

digitalWrite(BLED, LOW);

}

else

{

digitalWrite(RLED, LOW);

digitalWrite(GLED, HIGH);

digitalWrite(BLED, LOW);

}

}

В коде листинга 3.2 нет ничего принципиально нового, он сочетает в себе все изложенное ранее о системах, взаимодействующих с окружающей средой и платой Arduino.

3.8. Использование переменных резисторов для создания собственных аналоговых датчиков

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

Это всего лишь несколько примеров, которые позволят создать свои собственные аналоговые датчики.

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

3.9. Резистивный делитель напряжения

Резистивный делитель напряжения состоит из двух резисторов, от соотношения сопротивлений которых зависит выходное напряжение. Так, если один из резисторов переменный, то на выходе можно получить изменение напряжения. Другой резистор определяет чувствительность схемы, если это подстроечный резистор, то чувствительность можно корректировать.

- 76 -

Рассмотрим нерегулируемый резистивный делитель (рис. 3.9) и напряжение на его выходе. Обозначение A0 на рис. 3.9- это аналоговый вход A0 на плате Arduino.

Зависимость выходного напряжения делителя от входного:

U вых= U вх(R2/(R1 + R2)).

В нашем случае на вход делителя подано напряжение 5 В, а выход подключен к аналоговому контакту A0 платы Arduino. Если R1 и R2 одинаковы (как, например, 10 кОм), то 5 В делится пополам, и на аналоговом входе будет 2,5 В. Проверьте это, подставив значения в формулу:

U вых= 5 В (10 кОм/(10 кОм+ 10 кОм))= 2,5 В.

Рис 39 Простой делитель напряжения Рис 310 Фоторезистор Теперь - фото 28

Рис. 3.9. Простой делитель напряжения

Рис 310 Фоторезистор Теперь предположим что один из этих резисторов - фото 29

Рис. 3.10. Фоторезистор

Теперь предположим, что один из этих резисторов переменный, например фоторезистор (рис. 3.1 0). Сопротивление фоторезистора зависит от интенсивности падающего на него света. Я использовал фоторезистор с номинальным сопротивлением 200 кОм. В полной темноте его сопротивление около 200 кОм, при ярком свете оно падает почти до нуля. От того, какой резистор (R1 или R2) поменять на фоторезистор, и от номинала постоянного резистора будет зависеть масштаб и точность показаний. Попробуйте поэкспериментировать с различными конфигурациями и посмотрите через монитор последовательного порта, как меняются показания.

В качестве примера заменим R1 на фоторезистор, а R2 возьмем постоянным с номиналом 10 кОм (рис. 3.11 ). Для данного упражнения можно оставить на плате RGB-светодиод и подключить его как одноцветный.

Загрузите программу считывания аналоговых данных и выдачи результата в последовательный порт ( см. листинг 3.1) и поменяйте освещенность фоторезистора. Вы не сможете получить весь диапазон значений от 0 до 1023, потому что у фоторезистора никогда не будет нулевого сопротивления. В результате вы определите минимальное и максимальное значения напряжения на выходе. Эти данные потребуются, чтобы сделать "интеллектуальный" ночник, который будет светить более ярко в темном помещении, и наоборот. Выберите аналоговые значения для вашей комнаты, соответствующие темноте и максимальной освещенности. У меня это бы

- 77 -

ли значения 200 (темнота) и 900 (максимальное освещение). У вас могут быть другие цифры. Они зависят от условий освещения, значения резистора R2 и характеристик фоторезистора.

Рис 311 Подключение фоторезистора 310 Управление аналоговыми выходами по - фото 30

Рис. 3.11. Подключение фоторезистора

3.10. Управление аналоговыми выходами по сигналу от аналоговых входов

Напомним, что функция analogWrite() позволяет изменять яркость светодиода. Но не забывайте, аргумент этой функции 8-разрядный, т. е. находится в диапазоне от 0 до 255, в то время как АЦП выдает значения от 0 до 1023. В языке программирова

- 78 -

ния Arduino есть удобные функции для пропорционального преобразования значений от одного диапазона к другому: map() и constrain(). Синтаксис функции map() выглядит следующим образом:

output = map(value, fromLow, fromHigh, toLow, toHigh).

Здесь 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(), синтаксис которой выглядит следующим образом:

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

Интервал:

Закладка:

Сделать


Джереми Блум читать все книги автора по порядку

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




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


Отзывы читателей о книге Изучаем Arduino: инструметы и методы технического волшебства, автор: Джереми Блум. Читайте комментарии и мнения людей о произведении.


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

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