Игнорирование данных с пина определенное время

Averbahxx
Averbahxx аватар
Offline
Зарегистрирован: 13.10.2020

Добрый день. Сегодня первый день, как я начал осваивать азы Arduino. Пытаюсь сделать "дополнение" к своей сигнализации на авто. Суть в следующем: Имею arduino nano, модуль sim800l и аналоговый датчик напряжения. Схема подключения такова, что ардуина будет мне звонить при появлении напряжения на сирене. Все работает, все прекрасно, но при постановке и снятии с охраны мне так же приходит звонок. Вопрос в том, чтобы как-то сделать игнорирование сигнала, если он длится меньше, скажем, 2 секунд.

#include <SoftwareSerial.h>
SoftwareSerial Main(11, 10);

void setup() {
  delay (10000);
  Main.begin(9600);
  Main.println("AT");
  delay(300);
  Main.println("AT+GSMBUSY=1");
  delay(300);
  Main.println("AT+CLIP=1");
  delay(300);
}

void loop() {
  if (analogRead(A1) > 100)
  {
    Main.println("ATD+123456789;");
    delay(20000);
    Main.println("ATH");
    delay(1000);
  }
}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015
Averbahxx
Averbahxx аватар
Offline
Зарегистрирован: 13.10.2020

Спасибо! Даже не знал как загуглить :)

MaksVV
Offline
Зарегистрирован: 06.08.2015

только сигнал сирены в скетче там инвертирован, т.к. подключение предполагалось  через оптрон. PC817 например. Т.е. когда сирена кричит, пин ардуино садится на  GND

Averbahxx
Averbahxx аватар
Offline
Зарегистрирован: 13.10.2020

Да мне хотя бы общую концепцию реализации данного вопроса понять, а там уже как-нибудь прорвемся 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Averbahxx пишет:

Сегодня первый день, как я начал осваивать азы Arduino.

И сразу же "памагити!!!".

Может, хоть пару-тройку месяцев поковыряться, осмотреться? Не?

Averbahxx
Averbahxx аватар
Offline
Зарегистрирован: 13.10.2020

Возможно, Вы и правы, но меня очень интересовал данный вопрос, а как его правильно сформулировать, я не знал. Сейчас как раз и буду ковыряться, осматриваться)

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Averbahxx пишет:

Да мне хотя бы общую концепцию реализации данного вопроса понять, а там уже как-нибудь прорвемся 

Все просто - при появлении напряжения на сирене запускать таймер на две секунды и по прошествии их, если напряжение не исчезло, отправлять вам сообщение

Averbahxx
Averbahxx аватар
Offline
Зарегистрирован: 13.10.2020

Теперь я уже понял, что через таймер надо делать. Спасибо!