Оформи код соответствующим тэгом, см. Правила
Ребят приветствую!. помогите гуру скетчеры) Работаю слаботочником СВН СКС СКД. Клиентом была поставлена задача:
Не хорошие ребята, в центре Питера заходят погреться попить пивка и поболтать о том о сем громко и непристойно , на лестничную площадку.
Квартира, на этаже одна так как центр ,старый фонд.
Хозяин вроде не против тусы ,но чтоб ненадолго!
Так вот! Нужно что бы датчик движения, фиксировал эти посиделки примерно 5-7 минут , а затем кинул эту инфу на пин реле, которое, в свою очередь запустит
модуль воспроизведения. Где будут предупреждены и мягко посланы далеко и надолго. Но если в течении этого времени произойдет движение равное допустим 1 минуты(хозяин уходит из дома) реле не сработает, а счетчик времени при этом обнулится и будет считать следующую сработку датчика. Так как я новичок, в вашем деле переконопатил столько инфы ,что лопается голова. понял что написать такой скетч можно 10-ми вариаций. Смог придумать только во это, файл прилагаю к описанию и кину еще на всякий случай вот так. При таком раскладе датчик работает не очень корректно как будто что то его притормаживает даже с учетом указанного время сработка происходит через 35 секунд беспрерывного махания) датчик движения использовал -HC-SR501
#define RELAY_PIN 3
#define SENSOR_PIN 2
#define TRIGGER_TIME 10000 // 5 минут
unsigned long start_time = 0;
long current_time = 0;
unsigned long trigger_duration = 0;
bool relay_state = false;
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
}
void loop() {
int sensor_value = digitalRead(SENSOR_PIN);
if (sensor_value == HIGH) {
if (start_time == 0) {
start_time = millis();
}
current_time = millis();
trigger_duration = current_time - start_time;
if (trigger_duration >= TRIGGER_TIME) {
digitalWrite(RELAY_PIN, HIGH);
relay_state = true;
start_time = 0;
}
}
else {
if (relay_state == true) {
digitalWrite(RELAY_PIN, LOW);
relay_state = false;
}
start_time = 0;
}
}
Не хорошие ребята, в центре Питера заходят погреться попить пивка и поболтать о том о сем громко и непристойно , на лестничную площадку.
Квартира, на этаже одна так как центр ,старый фонд.
Хозяин вроде не против тусы ,но чтоб ненадолго!
Так вот! Нужно что бы датчик движения, фиксировал эти посиделки примерно 5-7 минут , а затем кинул эту инфу на пин реле, которое, в свою очередь запустит
модуль воспроизведения. Где будут предупреждены и мягко посланы далеко и надолго. Но если в течении этого времени произойдет движение равное допустим 1 минуты(хозяин уходит из дома) реле не сработает, а счетчик времени при этом обнулится и будет считать следующую сработку датчика. Так как я новичок, в вашем деле переконопатил столько инфы ,что лопается голова. понял что написать такой скетч можно 10-ми вариаций. Смог придумать только во это, файл прилагаю к описанию и кину еще на всякий случай вот так. При таком раскладе датчик работает не очень корректно как будто что то его притормаживает даже с учетом указанного время сработка происходит через 35 секунд беспрерывного махания) датчик движения использовал -HC-SR501
#define RELAY_PIN 3
#define SENSOR_PIN 2
#define TRIGGER_TIME 10000 // 5 минут
unsigned long start_time = 0;
long current_time = 0;
unsigned long trigger_duration = 0;
bool relay_state = false;
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
}
void loop() {
int sensor_value = digitalRead(SENSOR_PIN);
if (sensor_value == HIGH) {
if (start_time == 0) {
start_time = millis();
}
current_time = millis();
trigger_duration = current_time - start_time;
if (trigger_duration >= TRIGGER_TIME) {
digitalWrite(RELAY_PIN, HIGH);
relay_state = true;
start_time = 0;
}
}
else {
if (relay_state == true) {
digitalWrite(RELAY_PIN, LOW);
relay_state = false;
}
start_time = 0;
}
}
Вложения
-
727 байт Просмотры: 1