Автоматическое включение света в ванной. Счетчик посетителей

На основе ИК датчиков и Arduino pro min  сделал счетчик посетителей. Программа определяет направление движения и если кто то зашел в ванную автоматически включается свет.

ИК датчик

sku_148556_3

Датчики в дверном проеме. Устанавливал уже в установленную дверную коробку, просверлив два отверстия на 18 мм перьевым сверлом.  Arduino стоит за наличником дверной коробки.

IMG_1071_

Герконы покупал врезные

Встроенный-тип-сигнализации-магнитный-датчик-DoorWindow-встраиваемые-геркон-Белый

Так выглядит геркон в дверной коробке

IMG_1278!

А это магнит в двери
IMG_1280!

Код для Arduino

bool flag=0;
bool flag2=0;
bool state=0;
bool state2=0;
int DoorPin = 10; //Геркон
int pause=500;
int StatusDoor=0;
int status1=0;
int status2=0;
 
void setup(){          
	// Serial.begin(9600);
	 pinMode(13,OUTPUT);  // Импульс если зашли
         pinMode(12,OUTPUT);  // Импульс если вышли
         pinMode(DoorPin, INPUT);  //
         digitalWrite(DoorPin, HIGH);  // включить подтягивающий резистор
         pinMode(2, INPUT);
         pinMode(3, INPUT);
         digitalWrite( 12 , LOW );
         digitalWrite( 13 , LOW );
	    }
void loop(){
  StatusDoor = digitalRead(DoorPin);    // узнаём состояние двери
  if(StatusDoor==HIGH){                 // Если Дверь открыта, считаем сколько зашло
	  if(!digitalRead(2) && !flag){
	    delay(5);
	    flag = 1;
	      if(flag2 == 0){
	         state = 1;
	      }
	  }
         if(!digitalRead(3) && !flag2) {
	    delay(5);
	    flag2 = 1;
	       if(flag == 0) {
	       state2 = 1;
	      }
         }
	 if(digitalRead(3) && digitalRead(2)) {
     	    if(!flag || !flag2){
	        state = 0;
	        state2 = 0;
	        flag = 0;
	        flag2 = 0;
	    }  
           if(flag && state2){ //Зашли
              digitalWrite( 13 , HIGH );
              delay(pause);
              digitalWrite( 13 , LOW );
	      flag = 0;
	      flag2 = 0;
	      state2 = 0;
	   }
	   if(flag2 && state){ //Вышли
              digitalWrite( 12 , HIGH );
              delay(pause);
              digitalWrite( 12 , LOW );
	      flag = 0;
	      flag2 = 0;
              state = 0;
	   }
	 }
  }
}

10
Отправить ответ

avatar
6 Цепочка комментария
4 Ответы по цепочке
2 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
6 Авторы комментариев
AlexanderTiminstalatorАндрейалекс Авторы недавних комментариев
Новые вначале Старые вначале По голосам
Владимир
Гость
Владимир

Если Вас не затруднит, можно подробнее про датчики. Модель, аналоги.
Как определяется статус двери?
Буду благодарен ответу на почту ar4er06@mail.ru

алекс
Гость
алекс

как вы монтировали эти датчики в коробку? уже на установленной?

фото установки геркона тоже было бы интересно

алекс
Гость
алекс
Андрей
Гость
Андрей

Добрый день, хочу у себя использовать датчики E18-D80NK, как они у вас работают? есть жалобы на них?

Tim
Гость
Tim

большая просьба, если можно написать код для одной ардуины управления светом в ванной на основе счетчика посетителей, я про эту статью: geektimes.ru/post/270140
у меня каждая ардуина сама по себе (без основного контроллера)

Alexander
Гость
Alexander

Данный код имеет один изъян: если посетитель постоит в двери и уйдет/зайдет обратно, то программа будет считать его как вошедшего или вышедшего, в зависимости от того с какой стороны он был до того.
Решение:
в 25 строке написать: if(!digitalRead(2) && digitalRead(3) && !flag) {
а в 32 строке написать: if(!digitalRead(3) && digitalRead(2) && !flag2) {