Ик датчик движения sen0018 - длительное HIGH подскажите новичку
- Войдите на сайт для отправки комментариев
Чт, 08/11/2012 - 16:22
Добрый день.
Подключаю указанный датчик. Читаем его значение. Проводим в его зоне рукой например. Получаем значение High как и должно быть, но это значение почему-то возращается в течении примерно десяти секунд после движения. Мне казалось, что так должно быть не более 1-2 сек. В чем я не прав ?
int i =0;
int valueSensor = LOW;
void setup(){
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(3,INPUT);
}
void loop(){
int valueSensor = digitalRead(3);
if (valueSensor==HIGH){
Serial.println(i);
digitalWrite(13, HIGH);
i=i+1;
}else{
digitalWrite(13, LOW);
i = 0;
}
delay(1000);
}
Не нашел ни одной фоты вашего датчика сзади, но на нормальных датчиках есть потенциеметры, которыми регульруется чувствительность и время работы.
У вас на оборотной стороне, что нибудь есть?
Большое спасибо за ответ. Дейсвительно есть регулировка и она позволяет настроить.
Доброго времени суток.
Дополню данный пост, маленьким листингом (для начинающих)
Задержка в секундах на выключение
const int ledPin=13; // Светодиодный сигнальный индикатор const int OutPin=7; // выход на реле long previousMillis = 0; // храним время последнего переключения светодиода long interval = 15000; // интервал между включение/выключением светодиода (X секунд) void setup(){ Serial.begin(9600); pinMode(2, INPUT); // Вход считывающий данные посылаемые инфракрасным модулем pinMode(ledPin, OUTPUT);// Светодиодный сигнальный индикатор pinMode(OutPin, OUTPUT);// выход на реле } void loop() { int sensorValue = digitalRead(2); unsigned long currentMillis = millis(); if(sensorValue==1) // если есть сигнал то... { previousMillis = currentMillis; // присваиваем секунды digitalWrite(ledPin,HIGH); // зажгем диод }else // или digitalWrite(ledPin,LOW); // гасим диод //проверяем не прошел ли нужный интервал, если прошел то if(currentMillis - previousMillis > interval) { //digitalWrite(ledPin,LOW); digitalWrite(OutPin,HIGH); // ВЫХОД НА РЕЛЕ } else{ //digitalWrite(ledPin,HIGH); digitalWrite(OutPin,LOW); // ВЫХОД НА РЕЛЕ } Serial.println(sensorValue, DEC); //Данные в монитор }