Включение - работа - выключение

trifon
Offline
Зарегистрирован: 12.09.2015

Прошу помочь с кодом. При срабатывании датчика движения (PIR) зажигается свет. Вопрос: можно ли сделать выключение света при повторном срабатывании этого датчика? Или требуется применение другого датчика? 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

trifon пишет:

Прошу помочь с кодом.

С каким кодом? Не вижу в Вашем сообщении кода.

trifon пишет:

Вопрос: можно ли сделать выключение света при повторном срабатывании этого датчика?

Ответ: можно.

trifon
Offline
Зарегистрирован: 12.09.2015
#define pirPin 7
#define LedPin 6
 
void setup()
{
  
  pinMode(pirPin, INPUT);
  pinMode(LedPin,OUTPUT);
}
 
void loop()
{
  int pirVal = digitalRead(pirPin);
 
  //Если обнаружили движение
  if(pirVal == HIGH)
  {
    digitalWrite(LedPin, HIGH);
    
    delay(2000);
  }
  else
  {
    
    digitalWrite(LedPin,LOW);
  }
}
Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

PIR-датчик при срабатывании точно HIGH выдаёт? Помнится, вроде наоборот LOW, хотя может и ошибаюсь. Лучше наверно через прерывание сделать (PIR-датчик подключаем на пин 2 или 3):

#define LedPin 6
volatile int State = LOW;

void setup()
{  
  pinMode(LedPin, OUTPUT);
  attachInterrupt(0, Light, RISING); // для пина 2
  //attachInterrupt(1, Light, RISING); // для пина 3
}

void loop()
{

}

void Light()
{
  State = !State;
  digitalWrite(LedPin, State);
}

 

trifon
Offline
Зарегистрирован: 12.09.2015

Большое спасибо