Помогите разобраться с PIR HC-SR501
- Войдите на сайт для отправки комментариев
Пнд, 08/04/2013 - 15:46
Возможно кто-то работал с PIR HC-SR501, поделитесь пожалуйста опытом. Он имеет 2 регулятора, почему два, что регулируется одним и вторым http://www.jamesrobertson.eu/pages/2013/feb/10/pir-sensor-hc-sr501-on-eb... Использую такой код, он нормально работает, но я так же не могу понять по какому принципу он посылает комманду ended. Спасибо. /* * PIR sensor tester */ int inputPin = 3; // choose the input pin (for PIR sensor) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status void setup() { pinMode(inputPin, INPUT); // declare sensor as input Serial.begin(9600); } void loop(){ val = digitalRead(inputPin); // read input value if (val == HIGH) { // check if the input is HIGH if (pirState == LOW) { // we have just turned on Serial.println("Motion detected!"); // We only want to print on the output change, not state pirState = HIGH; } } else { if (pirState == HIGH){ // we have just turned of Serial.println("Motion ended!"); // We only want to print on the output change, not state pirState = LOW; } } }
К сожалению не могу подкорректировать тему (нет кнопки изменить).
Ended пылается тогда когда (val == LOW), это описано в функции
if
(val == HIGH) в части Else (иначе)
Сам код я понимаю. я не понимаю по какому принципу он выключается. Тоесть из за чего val может стать HIGH, т.к. он не сразу становится HIGH после того как человек закончил двигатся, он выключается через секунд 40-60.
Появился еще 1 вопрос, может выше предложенный код поместить в что-то подобное, это обгелчит работу Arduin-е или ей безразницы?
Сам код я понимаю. я не понимаю по какому принципу он выключается. Тоесть из за чего val может стать HIGH, т.к. он не сразу становится HIGH после того как человек закончил двигатся, он выключается через секунд 40-60.
Там есть резистор помоему правый, он регулирует задержку.
Да. Вы были правы, спасибо. 1 отвечает имено за время, другой видимо за чуствительность.
Но вот насчет второго предложенного кода. Но ведь если вставить такую задерку данные будут собираться чуть реже и это должно отразится на нагрузке Arduino. Почему я не прав?
Но вот насчет второго предложенного кода. Но ведь если вставить такую задерку данные будут собираться чуть реже и это должно отразится на нагрузке Arduino. Почему я не прав?
Программа выполнятся не перестанет, не будут считываться и передоваться данные но цикл будет идти. Это как насколько уменьшится нагрузка на ходовую камаза, если возить один мешок картошки не постоянно, а только каждые 4 рейса? Если смысл? кроме затрат памяти?
А есть какие-то комманды которые позволяют посмотреть сколько используется Ram и Mhz?
Нет. Но объем свободной оперативной памяти можно получить окольными вычислениями типа этих, а частота сидит в макроопределении F_CPU.