LXF107:Аппаратный хакинг
(→Шаг 2: Программируем) |
|||
Строка 1: | Строка 1: | ||
: '''Arduino''' Аппаратный хакинг для любителей гаражной электроники | : '''Arduino''' Аппаратный хакинг для любителей гаражной электроники | ||
− | [[Категория: | + | [[Категория:Учебники]]{{Цикл/Arduino}} |
==Arduino: Светодиодный светометр== | ==Arduino: Светодиодный светометр== |
Текущая версия на 11:29, 19 августа 2009
|
|
|
- Arduino Аппаратный хакинг для любителей гаражной электроники
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
[править] Arduino: Светодиодный светометр
- В завершение нашей серии Грэм Моррисон соберет датчик освещенности.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Это последний учебник по Arduino в нашей серии. Прибавим проекту жизни: вставим датчик освещенности. Из названия ясно, что он должен как-то реагировать на свет, но эти датчики не так умны, как кажутся. По сути, датчик освещенности – это переменный резистор, и его также часто называют «фоторезистором» [light dependent resistor, LDR], что прекрасно описывает принцип действия. Фоторезистор можно использовать в самых разных задачах, от измерения освещенности помещения до построения сети защитных датчиков и лазеров вокруг короны Св. Эдуарда в Лондонском Тауэре [используемой при коронации британских монархов, – прим. ред.]. А главное, датчик освещенности обычно имеется в стартовом наборе Arduino, и для построения чего-то полезного вам больше почти ничего не нужно.
[править] Шаг 1: Сборка
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Если вы, например, прикрутите датчик освещенности к простой цепи со светодиодом, то обнаружите, что яркость последнего меняется в зависимости от количества прямого света, падающего на датчик, Вы также обнаружите, что эта яркость немного колеблется, независимо от освещенности датчика, потому что цепь «плывет», и возникающая небольшая электрическая интерференция влияет на сопротивление. Решением будет добавить резистор в 1 кОм между источником энергии и датчиком освещенности. Это стабилизирует цепь, остановив интерференцию, влияющую на сопротивление датчика.
Вы можете попытаться сделать это сами. Поместите датчик освещенности на вашу макетную плату – так, чтобы два его контакта были по обе стороны центральной канавки. Соедините одну сторону через резистор с 5-В выходом Arduino и соедините проводом ту же линию с Аналоговым входом 0. Другую сторону канавки макетной платы просто подключите к GND (Земля) на Arduino. Наконец, вставьте длинную ножку светодиода прямо в Цифровой порт 13 на Arduino, а короткую ножку – в ближайший разъем GND. Вот код, делающий рабочей эту конструкцию:
int ledPin = 13; int analogInput = 0; int aInput; void setup(){ pinMode(ledPin, OUTPUT); pinMode(analogInput, INPUT); beginSerial(9600); } void loop(){ aInput = analogRead(analogInput); digitalWrite(ledPin, HIGH); delay(aInput); digitalWrite(ledPin, LOW); delay(aInput); printInteger(aInput); printByte(10); }
Вы должны бы уже привыкнуть к синтаксису, и понять, что при этом происходит, несложно. Мы считываем аналоговые данные с датчика освещенности и используем их как задержку мигания светодиода на плате. Чем ярче свет, падающий на датчик, тем меньше задержка между вспышками светодиода. Как мы изучили в прошлом месяце, анало- говые значения варьируются в диапазоне от 0 до 1023, что может дать задержку вспышек от более одной секунды до практически нулевой. Но вы найдете, что большинству датчиков нужен прямой солнечный свет, чтобы задержки стали меньше 150 миллисекунд (единицы измерения, используемые командой ‘delay’), и при искусственном освещении различия заметить труднее. Значит, нам нужен способ увидеть значения, считываемые с датчика освещенности, чтобы мы могли улучшить нашу программу для работы с меньшими значениями. Вот это и делают строки beginSerial(9600), printInteger(aInput) и printByte(10). Они открывают последовательное соединение с компьютером и начинают передавать значения с датчика освещенности. Чтобы увидеть значение, нужно просто открыть Serial Monitor в IDE Arduino на вашем компьютере. Вы будете видеть каждое значение в новой строке (результат работы команды printByte), и сможете отслеживать читаемые с датчика освещенности числа, отражающие количество света. В условиях светлого офиса наш датчик показывал около 800 и сбрасывался до 960, когда мы закрывали его пальцем. Учтите, датчик редко имеет линейную зависимость отклика, и при уменьшении освещенности вдвое вы не должны ожидать такого же уменьшения сопротивления.
Разобравшись с выводом с датчика, мы можем применить сенсор еще где-нибудь. Используем массив светодиодов как столбик графика, где число горящих светодиодов представляет значение освещенности, попадающей на датчик. Можете использовать до 13 отдельных светодиодов – столько, сколько позволяют цифровые входы Arduino, но для демонстрации основных принципов нам хватит четырех. Каждый светодиод требует присоединения его длинной ножки к отдельному цифровому входу, в большинстве случаев через 1-кОм резистор (это зависит от типа используемых светодиодов). Короткая ножка подключается к «земле». Используем различные контакты для каждого светодиода, с общей шиной, присоединенной к GND, и проводом к цифровому входу Arduino.
[править] Шаг 2: Программируем
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Вот и все нужные нам дополнительные подключения. Но исходный код программы требует чуть больше работы. Начнем с верхней части кода, добавив следующие определения ‘define’ и изменив переменную ledPin:
#define MAX_LED 4 int ledPin[MAX_LED]={12, 11,10,9};
Вместо того, чтобы вручную инициализировать и обрабатывать каждый подключенный к Arduino светодиод, мы создали простой массив, куда записали выходной контакт для каждого соединения (ledPin). Мы не только сэкономили место на данной странице, но и облегчили легкое перемещение по данным. Это решение также более гибкое. Если вы захотите добавить или удалить светодиоды с Arduino, вам будет только нужно изменить значение MAX_LED и удалить назначенные контакты из массива. Но перед тем, как мы сможем их зажечь, сперва необходимо инициализировать каждый используемый контакт, в функции setup заменив строку pinMode(ledPin, OUTPUT) на следующую:
for (int i=0; i<MAX_LED; i++){ pinMode(ledPin[i], OUTPUT); }
Этот простой цикл for показывает вам, как легко сконфигурировать каждый светодиод в массиве, и мы в дальнейшем применим эту технику еще дважды в новой функции с именем barGraph. Она выполняет работу по зажиганию требуемого числа светодиодов, в зависимости от переданного функции входного значения. Например, если оно равно 3, будут задействованы первые три светодиода в нашем массиве. Используем эту функцию для показа освещенности, определяемой датчиком:
void barGraph(int count) { for (int i=0; i<MAX_LED; i++){ digitalWrite(ledPin[i], LOW); } for (int i=0; i<count; i++){ digitalWrite(ledPin[i], HIGH); } }
Тут сперва выключаются все светодиоды, а потом они по очереди включаются, в зависимости от значения переменной ‘count’. Наконец, в логику программы осталось добавить команду, ответственную за вызов функции barGraph с различными значениями. Мы используем серию условий if для снятия различных пороговых значений освещенности. Следующие значения работали у нас, но вам может потребоваться использовать Serial Console в IDE Arduino для подбора значений, более подходящих к вашей установке. Если значения, читаемые с датчика освещенности, менее чем 840, мы зажигаем все четыре светодиода. Это значение освещенности в нашем офисе. Если вам повезет испытывать установку на природе летним солнечным днем, то более подходящим значением будет 150. Каждый последующий диапазон для 3-х, 2-х, 1-го и 0 светодиодов является произвольным отклонением от стартового значения. Вы можете использовать более чем четыре светодиода, для этого вам нужно будет добавить соответствующие диапазоны в условия ‘if’.
aInput = analogRead(analogInput); if (aInput < 840) barGraph(4); else if (aInput < 900) barGraph(3); else if (aInput < 940) barGraph(2); else if (aInput < 980) barGraph(1); else barGraph(0); delay (10);
Скомпилировав и послав эту программу на ваш Arduino, вы должны увидеть набор светодиодов, откликающихся в зависимости от уровня света, попадающего на сенсор. Темнота все их выключит, а прямое освещение все зажжет. Проект готов. Потом вы сможете много чего добавить, чтобы извлечь из него пользу. Можно применить его в системах домашней автоматизации – например, включения или выключения устройств при наступлении темноты. Лучшей стартовой площадкой будет Arduino Sketchbook – онлайн-репозиторий всех вещей Arduino, а также полезный форум, полных энтузиастов вроде вас. Все это можно найти на главном сайте Arduino: http://www.arduino.cc. Сообщите нам, если изваяете что-нибудь клевое. LXF