Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Засичане на движение чрез Arduino и PIR Motion сензор


PIR Motion SE-10 е сензор за засичане на движение. Захранранва се с напрежение от 5 до 12V като по даташийт се препоръчват точно 12V. След подаване на захранване, са му необходими около две секунди за да „снима“ помещението и да започне работа. Ако засече движение, сменя състоянието на пин „аларма“ в LOW.

В примера използваме батерия от 9V за да захраним сензора, тъй като Arduino не доставя повече от 5V. Използваме и светодиод, който да сигнализира за движение около сензора.

Свързване

Червеният кабел на сензора е към плюсa на батерията, а кафявият е към минусa. Минусът на на батерията се свързва и към GND пин на Arduino. Черният кабел се свързва през 10k ома PullUp резистор към плюсa на батерията и към пин 7 на платката. Светодиода е между GND и пин 13 без ограничителен резистор.

Код

/*

 * Отчита движение чрез PIR Motion сензор
 * Сигнализира чрез светодиод

 Свързване:
 * Анода на светодиода е към пин 13, а катода му към GND
 * Червеният кабел на сензора е към плюсa на батерията, а кафевият към минуса
 * Минусът на батерията се свързва и към пин GND на Arduino
 * 10k резистор се свързва между черния кабел на сензора и плюса на батерията
 * Черният кабел се свързва и към пин 7 на Arduino

 * Tihomir Trifonov (07-2011)
 * с подкрепата на Robotev.com

 */

////  пинове за вход и изход
const int buttonPin = 7;  // казва към кой пин е сензора  
const int ledPin =  13;   // пин, който пали светодиода

//// променливи, използвани в програмата 
int buttonState = 0;      // запомня състоянието на сензора

void setup() {// инициализации

  pinMode(ledPin, OUTPUT);   // задава пин-а на светодиода
                             // като изход
  pinMode(buttonPin, INPUT); // задава пин-а към сензора
                             // като вход
}

void loop(){ // програмен цикъл

///// проверява състоянието на сензора и светва светодиода  
///// ако е засякъл движение

  buttonState = digitalRead(buttonPin); // чете състоянието на пин 7                                    
  if (buttonState == LOW) {             // проверява дали е LOW         

    digitalWrite(ledPin, HIGH); // пали светодида ако има движение                             
  } 
  else {

    digitalWrite(ledPin, LOW); // гаси светодиода ако няма движение                                                       
  }
}

При така зададената проверка на състоянието, светодиода ще свети при засичане на движение.