Arduino:Примеры/Гайд по использованию датчика движения с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Черновик |
Гайд по использованию датчика движения с Arduino[1]
В этом проекте мы создадим простую цепь с платой Arduino и датчиком движения типа PIR (означает «passive infrared», что переводится как «пассивный инфракрасный»). Ниже показано, как этот датчик работает вживую:
Описание
Датчик движения типа PIR измеряет инфракрасный свет, идущий от объектов, расположенных рядом с ним. Таким образом, он определяет движение, беря за основу данные об изменении инфракрасного света в окружающем пространстве. Это делает его идеальным датчиком для определения, к примеру, людей или животных, находящихся в пределах измеряемого диапазона.
Датчик на рисунке выше оснащен двумя потенциометрами, с помощью которых настраивается время задержки (это потенциометр слева) и чувствительность датчика (это потенциометр справа).
Распиновка
В подключении датчика к плате Arduino нет ничего сложного (у датчика всего три контакта):
- Контакт GND на датчике – к контакту GND на Arduino
- Контакт OUT на датчике – к цифровому контакту на Arduino
- Контакт 5V – к контакту 5V на Arduino
Необходимые компоненты
- Один датчик движения типа PIR (см. на eBay и на Amazon)
- Одна плата Arduino (см. на Amazon)
- Один светодиод
- Провода-перемычки (см. на Amazon)
Схема
Подключите друг к другу все эти компоненты, как показано на картинке ниже:
Код
Загрузите в IDE Arduino следующий код:
/*
* Использование датчика движения типа PIR с платой Arduino.
* Более подробно о проекте на: randomnerdtutorials.com/pirsensor
* Модифицирован Руи Сантосом (Rui Santos)
на основе скетча Лимор Фрид (Limor Fried)
*/
int led = 13; // контакт для светодиода
int sensor = 2; // контакт для датчика
int state = LOW; // по умолчанию никакого движения
// не определено
int val = 0; // переменная для хранения
// статуса датчика
void setup() {
pinMode(led, OUTPUT); // контакт для светодиода
// ставим в режим OUTPUT
pinMode(sensor, INPUT); // контакт для датчика
// ставим в режим INPUT
Serial.begin(9600); // инициализируем последовательную
// коммуникацию
}
void loop(){
val = digitalRead(sensor); // считываем данные от датчика
if (val == HIGH) { // проверяем, находится ли датчик
// в состоянии HIGH
digitalWrite(led, HIGH); // включаем светодиод
delay(100); // задержка в 100 миллисекунд
if (state == LOW) {
Serial.println("Motion detected!"); // "Замечено движение!"
state = HIGH; // обновляем состояние переменной на HIGH
}
}
else {
digitalWrite(led, LOW); // выключаем светодиод
delay(200); // задержка в 200 миллисекунд
if (state == HIGH){
Serial.println("Motion stopped!"); // "Движение прекращено!"
state = LOW; // обновляем состояние переменной на LOW
}
}
}
См.также
Внешние ссылки
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Черновик
- Надо доработать
- Черновой вариант статьи
- Черновой вариант
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino