Время после срабатывания

a2kuz
Offline
Зарегистрирован: 17.04.2017

подскажите пожалуйста 

if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){ 
n1.toCharArray(n,20); 
sms.SendSMS(n, sirena); // Посылаем СМС о том, что включена сирена 
sms.DeleteSMS(1);memset(n,0,20); 
char smsbuffer[160]=""; 
flag1++;

как сделать так чтоб сирена выключалась через какое то определенное время после срабатывания, как я понимаю при повторном срабатывании sensor1 появляется единица на 4 пине! и сирена включается и пока не отправлено смс об отмене так и будет пищать.



правильно ли это?после: 

if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){  пишем,

 

delay(5000); 
digitalWrite(4,LOW)

 ??? Это правильно?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

как включается серена (код)?

a2kuz
Offline
Зарегистрирован: 17.04.2017

xDriver пишет:

как включается серена (код)?

Ну насколько я вижу что так и включается , при повторном срабатывании дачика движения появляется единица

pinMode(10, OUTPUT); // Пассивный зумер (сигнал)


Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);


       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {

//===========================Первое срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

a2kuz пишет:

xDriver пишет:

как включается серена (код)?

Ну насколько я вижу что так и включается , при повторном срабатывании дачика движения появляется единица

pinMode(10, OUTPUT); // Пассивный зумер (сигнал)


Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);


       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {

//===========================Первое срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 

 

где появляется единица ????

еще раз...., выдохните....  и назовите номер строки где включается сирена

и не надо мне про датчик

код я так понимаю секретный ? что вы кусками то приводите.

a2kuz
Offline
Зарегистрирован: 17.04.2017

 в коде который я вам отправил есть вся информация для решения моего вопроса, код не секретный.
Серена включается в ардуино на 10 пин, датчик движения  sensor1 ноходится на 4 пине- далее все написано в коде который выше приповторном срабатывании появляется 1 на 10 пине. если Вы про вот это подключение то 

int sensor1=0;
int flag1=0;
boolean started=false;
char n[20];
String n1 = "+7";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

a2kuz пишет:

 все написано в коде который выше приповторном срабатывании появляется 1 на 10 пине

вы меня за идиота принимаете ?

НОМЕР СТРОКИ ГДЕ НА 10 ПИНЕ ПОЯВЛЯЕТСЯ 1 ???????????

куски кода оставте себе, хотите помощи - полный код, иначе ....

в ообщем успехов.

a2kuz
Offline
Зарегистрирован: 17.04.2017
#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;

//=================Пины 2 и 3 для Подключения GSM модуля

int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+7";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena  vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];

void setup() {
 
 pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
 pinMode(7, OUTPUT);

Serial.begin(9600);
  pinMode(4, INPUT); // датчик движения
//  digitalWrite(4, HIGH);

       if (gsm.begin(4800)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

}
void loop() {

//===========================Первое срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==0){
    n1.toCharArray(n,20);
    sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
    delay(5000); // Ждем 5 секунд
  }
//===========================Повторное срабатывание датчика движения
  if ((digitalRead(4)==HIGH) && sensor1==1 && flag1==1){
    n1.toCharArray(n,20);
    sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
    sms.DeleteSMS(1);memset(n,0,20);
    char smsbuffer[160]="";
    flag1++;
  }

  if (flag1>=2){
    tone(10, 2780, 200); // Сирена 
  }


pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
      if (pos) {                    // Если непрочитанные СМС есть, то...
        
getsms(); // получаем непрочитанную СМС

     if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
     sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
     
     if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
     sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
        
        sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }