СИГНАЛИЗАЦИЯ

igorcds
Offline
Зарегистрирован: 03.12.2013

Доброго времени суток.

Знакомый попросил сделать простейшую сигнализацию на автомобиль(на мое пожелание, чтобы он купил себе простейшую сигналку с обратной связью ответил как то не очень.....)

На машине уже установлена простейшая сигналка с брелком.

Так же знакомый отдал свой старый тлф самсунг х100, питание на него, вернее на контакты АБ он подавал 5В(должно быть максимум 4.2В)....но работает и ладно

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

Телефон разобрал, оставил материнку, экран, модуль антены(кстати- при включенном экране жрет 200мА, при режиме ожидания по нулям). Завел четыре провода для управления(вызов, сброс вызова, и вибро +-), управляется минусом(минус 2.9В, но и -5В то же нормально рулит, на выходе вибро всегда есть плюс, минус появляется при входящем вибро.На телефоне площадки были не графитные, т.е подпаялся без проблем(ЛТИ-120).

Должен подойти в ближайшем будующем PIR сенсор, еще его и установлю в салон, пока все построенно на наличие на сирене 12В.

Вообщем все собрал, воткнули ее для эксперемента на авто- в 21.00 поставили, все отрабатывает нормально, но в 9.20 был вызов. т.к у него нет пейджера, не смог понять- может это было и самопроизвольное срабатывание, а может кто и пнул...вообщем сегодня на работе все завел и посмотрю - будут ли завтра ложные срабатывания.

Смущает, что на ардуино для измерения напруги общий ноль, а для управления тлф общий плюс....

Когда вибро не сработал- показывает на ардуино на А2 30В, при срабатывании вибро показания падают до 15В(хотя реально должно быть максимум 5В.), и чтобы опять вернуть все на исходную необходимо или тлф или ардуино перегрузить

Вот код.

/*
ЗАДУМКА
1.    Снимаются показания напряжения с сирены и АБ, 
-при наличии 12В. на сирене более 7 секунд, проходит вызов.
-при падении напряжения на АБ ниже 10В., моргает светодиод
2.    При входящем вызове- срабатывает реле2 и размыкает цепь авто

на ардуино собрано три вольтметра:
- первый и второй делитель 1Мом-380Ком (измерям "+") измеряем сирену и АБ (А0, А1)
- третий без делителя (А2),т.к с вибро приходит минус -2,9В

Телефон управляется "-", 
заведены кнопки вызов, сброс вызова, и вход с вибро
-кнопка CALL заведена на пин5
-кнопка DIScall на пин3
-вибро заведен на А0
-общий "+"
*/

#define LED1 8    // сигнализации охраны
#define LED2 9    // сигнализация Аб
#define RelayChn1 2 // канал 1-Включение телефона при включении ардуино, контакты замыкаются
#define RelayChn2 4 // канал 2-Блокировка двигателя при входящем вызове, контакты размыкаются 
#define DISCALL 3  // Сброс вызова(общий плюс снимаем с вибро)
#define CALL 5     //вызов

//Вольтметр 1_канал 1 Контроль уровня заряда аккумулятора
//------------------------------------------------
const int analogInPin_Battery = 0;      // А0 Вход вольтметра канал контроля Аб -делитель 1Мом и 380 Ком     
float outputValue_Battery = 0; 
long previousMillis_Battery = 0;        // храним время последнего переключения светодиода previousMillis_battery
long interval_Battery = 200;            // интервал моргания LED2
int flag_Battery = 0;

//Вольтметр 2 канал Сирена
//-------------------------------------------
const int analogInPin_Sirena = 1;       // А1 Вход вольтметра канал охраны 1(сирена) - точное значение 9-12В__делитель 1Мом и 280 Ком      
float outputValue_Sirena = 0; 
int flag_Sirena = 0;                    // флаг срабатывания сирены
int i=0;                                // для цикла вызова(вызов длятся 20 секунд)
int call_kol_vo=0;                      //количество вызовов
//--------------------------------------------

//Вольтметр 3 канал ВИБРО
//-------------------------------------------
const int analogInPin_Vibro = 2;        // А2 Вход вольтметра канал охраны 3(Вибро)      
float outputValue_Vibro = 0; 
int flag_Vibro = 0;                     // флаг срабатывания вибро
int vibro_kol_vo= 0;
//-------------------------------------------

int ledState1 = LOW; 
int ledState2 = LOW;
int buttonState = 0; // состояние кнопки

long previousMillis1 = 0;        // храним время последнего переключения светодиода
long interval_1 = 1500;           // интервал между включение/выключением светодиода (1 секунда)
long previousMillis2 = 0;        // храним время последнего переключения светодиода
long interval_2 = 1000;           // охрана откл

long time_START_sirena=0;        //начало срабатывания сирены, время
long time_STOP_sirena=0;         //сирена отключилась, время
long time_sirena=0;               // сколько времени сирена работала

void setup()
{
  pinMode(LED1, OUTPUT); 
  pinMode(LED2, OUTPUT);
  
  pinMode(CALL, OUTPUT);
  pinMode(DISCALL, OUTPUT);
  analogWrite(CALL, 255);
  analogWrite(DISCALL, 255);
  
  pinMode(RelayChn1,OUTPUT);        
  digitalWrite(RelayChn1,HIGH);      
  pinMode(RelayChn2,OUTPUT);        
  digitalWrite(RelayChn2,HIGH);
  Serial.begin(9600);
  
  //ВКЛЮЧИТЬ ТЕЛЕФОН
          delay(3000);
          digitalWrite(LED1, HIGH);
          digitalWrite(LED2, HIGH);
          digitalWrite(RelayChn1,LOW);
          delay(6000);
          digitalWrite(RelayChn1,HIGH);
          delay(10000);
         // Serial.print("vkl tlf ");
          digitalWrite(LED1, LOW);
          digitalWrite(LED2, LOW);
  
}
 
void loop()
{
unsigned long currentMillis1 = millis();
unsigned long currentMillis_Battery = millis(); 

 // Снимаем показания напряжения АБ
 //--------------------------------------
  outputValue_Battery = float(analogRead(analogInPin_Battery))*7.9719667/245;  // снимаем уровень напряжения АБ
  //Serial.print("Voltage_Battery = " );                     
  //Serial.println(outputValue_Battery);
  delay(80);
  //-------------------------------------
  
  // Снимаем показания напряжения Вибро
 //--------------------------------------
  outputValue_Vibro = float(analogRead(analogInPin_Vibro))*7.9719667/245;  // снимаем уровень напряжения Вибро
  //Serial.print("Voltage_Vibro = " );                     
  //Serial.println(outputValue_Vibro);
  delay(80);
  //-------------------------------------
  
  //снимаем показания сирены
  //---------------------------------------
  outputValue_Sirena = float(analogRead(analogInPin_Sirena))*7.9719667/265;  // снимаем уровень напряжения сирены
  //Serial.print("Voltage_Sirena = " );                     
  //Serial.println(outputValue_Sirena);
  delay(80); 
  digitalWrite(LED2, LOW);                 // включаем сигнализацию
  
//--------------------------------------------------------------------
   
   if((currentMillis1 - previousMillis1 > interval_1)&&(flag_Sirena==0)) {  // режим сигнализации включен, моргаем LED1
    previousMillis1 = currentMillis1; 
    if (ledState1 == LOW)
      ledState1 = HIGH;
    else
      ledState1 = LOW;
    digitalWrite(LED1, ledState1);
   }
   
   
//-----------------------------------------------------------------------
//Напряжение батареи ниже 10,0В.    
  if((outputValue_Battery < 10.0)&&(outputValue_Battery > 7.0)) {   
     digitalWrite(LED2, LOW);
     flag_Battery=1;                // Напряжение батареи упало ниже 10,0В , флаг батареи поднят
  } else {
     flag_Battery=0;
         }
  // Serial.print("flag_Battery = " );                     
  // Serial.println(flag_Battery); 
   
 // флаг батареи поднят, моргаем светодиодом LED2
 if((currentMillis_Battery - previousMillis_Battery > interval_Battery)&&(flag_Battery==1)&&(flag_Sirena==0)) {  
    previousMillis_Battery = currentMillis_Battery; 
    if (ledState2 == LOW){    
        
       ledState2 = HIGH;
                         }       
         else {  
      
      ledState2 = LOW; 
              } 
 //устанавливаем состояния выхода, чтобы включить или выключить светодиод
     
    digitalWrite(LED2, ledState2);
  }
delay(100);

//-------------------------------------------------
//  СИРЕНА
//Напряжение на сирене выше 9 вольт в течении 7сек.    

if((outputValue_Sirena > 9.0)&&(flag_Sirena==0)) {
     time_START_sirena=millis();   //  ВРЕМЯ НАЧАЛА СРАБАТЫВАНИЯ СИРЕНЫ
     flag_Sirena=1;                //  Сирена сработала, флаг СИРЕНЫ включен
     digitalWrite(LED1, HIGH);     //  Горит LED1
     SIRENA();
     // Serial.println("VXOD IZ SIRENA");
     delay(100);
  } 
   //Serial.print("flag_Sirena = ");                     
   //Serial.println(flag_Sirena);
   delay(50);
   
//-------------------------------------------------
// ВХОДЯЩИЙ ВЫЗОВ- БЛОКИРОВКА
//Напряжение на сирене выше 9 вольт в течении 4сек.    

if(outputValue_Vibro < 18.0) {
     //time_START_sirena=millis();   
     flag_Vibro=1;                //  Сирена сработала, флаг СИРЕНЫ включен
     digitalWrite(LED1, HIGH);
     digitalWrite(LED2, HIGH);
     VIBRO();
    // Serial.println("VXOD IZ SIRENA");
     //delay(1000);
                              } 
   //Serial.print("flag_Sirena = ");                     
   //Serial.println(flag_Sirena);
   delay(500);
}

void SIRENA(){
   //Serial.println("vxod sirena" );   
  while(flag_Sirena ==1)  {       
     digitalWrite(LED1, HIGH);   
     outputValue_Sirena = float(analogRead(analogInPin_Sirena))*7.9719667/245;  // снимаем уровень напряжения сирены
      
      if((outputValue_Sirena > 9.0)&&(time_sirena < 7000)) {   
        flag_Sirena=1;
        time_STOP_sirena=millis();                                              //ОКОНЧАНИЕ СРАБАТЫВАНИЯ СИРЕНЫ
        time_sirena=time_STOP_sirena-time_START_sirena;
         Serial.println("time sirena_if__=  " );                     
         Serial.println(time_sirena); 
                                  }else{
                                    flag_Sirena=0;           
                                    time_STOP_sirena=millis();                //ОКОНЧАНИЕ СРАБАТЫВАНИЯ СИРЕНЫ
                                     //Serial.println("2time sirena_if__=  " );                     
                                     //Serial.println(time_sirena); 
                                        }
  }
  //Serial.println(" EXIT while ");
  delay(50);
   time_sirena=time_STOP_sirena-time_START_sirena;                          // ПОДСЧЕТ времени работы сирены
  
 //---------------------------------------------------------------------------------
 // телефон делает два ВЫЗОВа
 // если сирена работает более 7 секунд
 if((time_sirena > 7000)&&(call_kol_vo <= 7)){
          digitalWrite(RelayChn2,LOW);  // блокировка двигателя, контакты размыкаются
          digitalWrite(LED2, HIGH);     // второй диод(он же моргает при севшей АБ)
          analogWrite(DISCALL, -255);   // телефон в ждущем режиме, выводим из ждущего режима
          delay(500);
          analogWrite(DISCALL, 255);
          delay(500);
          analogWrite(DISCALL, -255);
          delay(500);
          analogWrite(DISCALL, 255);
          delay(500);
          analogWrite(CALL, -255);        // ПЕРВЫЙ ВЫЗОВ, два раза нажимаем клавишу вызова
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          analogWrite(CALL, -255);
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          call_kol_vo= call_kol_vo+1; // подсчитываем количество вызовов      
          //Serial.print("11111 ");
          delay(20000);               // вызов длится 20сек(если связь неустойчивая, вызов бывает проходит очень долго(10сек))
          //Serial.print("20 sec ");
          analogWrite(DISCALL, -255); // вызов прошел, ложим трубку
          delay(500);
          analogWrite(DISCALL, 255);  
          delay(20000);               // пауза между вызовами 20 секунд
 // --------------------------------------------------------- 
          analogWrite(CALL, -255);  //ВТОРОЙ ВЫЗОВ
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          analogWrite(CALL, -255);
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          call_kol_vo= call_kol_vo+1; // подсчитываем количество вызовов      
          //Serial.print("222222 ");
          delay(20000);               // вызов длится 20 секунд
          //Serial.print("20 sec ");
          analogWrite(DISCALL, -255); // ложим трубку
          delay(500);
          analogWrite(DISCALL, 255);
          delay(200);               
          flag_Sirena=0;                 
                                                     } 
        //Serial.print(" EXIT SIRENA ");
}

//-------------------------------------------------------------------

void VIBRO(){

  if(vibro_kol_vo <= 1){         // лишнее
  //Serial.print("VXOD VIBRO ");
  digitalWrite(RelayChn2,LOW);  // входящий вызов-срабатывает реле блокировки двигателя, контакты реле2 размыкаются
  delay(2000);
  analogWrite(DISCALL, -255);   // два раза жмем кнопку сброса вызова телефона
  delay(500);
  analogWrite(DISCALL, 255);
  delay(500);
  analogWrite(DISCALL, -255);
  delay(500);
  analogWrite(DISCALL, 255);
  delay(500);
  
   analogWrite(CALL, -255);        // реле2 сработало, ардуино отзванивается
   delay(500);
   analogWrite(CALL, 255);
   delay(500);
   analogWrite(CALL, -255);
   delay(500);
   analogWrite(CALL, 255);
   delay(20000);
   //Serial.print("20 sec ");
   analogWrite(DISCALL, -255);
   delay(500);
   analogWrite(DISCALL, 255);
   delay(500);
   //Serial.print("exit vibro");
   delay(500);
   vibro_kol_vo=vibro_kol_vo+1; //лишнее
  } 
flag_Vibro=0;  
 }

 

igorcds
Offline
Зарегистрирован: 03.12.2013

что то кода не увидел

/*
ЗАДУМКА
1.    Снимаются показания напряжения с сирены и АБ, 
-при наличии 12В. на сирене более 7 секунд, проходит вызов.
-при падении напряжения на АБ ниже 10В., моргает светодиод
2.    При входящем вызове- срабатывает реле2 и размыкает цепь авто

на ардуино собрано три вольтметра:
- первый и второй делитель 1Мом-380Ком (измерям "+") измеряем сирену и АБ (А0, А1)
- третий без делителя (А2),т.к с вибро приходит минус -2,9В

Телефон управляется "-", 
заведены кнопки вызов, сброс вызова, и вход с вибро
-кнопка CALL заведена на пин5
-кнопка DIScall на пин3
-вибро заведен на А2
-общий "+"
*/

#define LED1 8    // сигнализации охраны
#define LED2 9    // сигнализация Аб
#define RelayChn1 2 // канал 1-Включение телефона при включении ардуино, контакты замыкаются
#define RelayChn2 4 // канал 2-Блокировка двигателя при входящем вызове, контакты размыкаются 
#define DISCALL 3  // Сброс вызова(общий плюс снимаем с вибро)
#define CALL 5     //вызов

//Вольтметр 1_канал 1 Контроль уровня заряда аккумулятора
//------------------------------------------------
const int analogInPin_Battery = 0;      // А0 Вход вольтметра канал контроля Аб -делитель 1Мом и 380 Ком     
float outputValue_Battery = 0; 
long previousMillis_Battery = 0;        // храним время последнего переключения светодиода previousMillis_battery
long interval_Battery = 200;            // интервал моргания LED2
int flag_Battery = 0;

//Вольтметр 2 канал Сирена
//-------------------------------------------
const int analogInPin_Sirena = 1;       // А1 Вход вольтметра канал охраны 1(сирена) - точное значение 9-12В__делитель 1Мом и 280 Ком      
float outputValue_Sirena = 0; 
int flag_Sirena = 0;                    // флаг срабатывания сирены
int i=0;                                // для цикла вызова(вызов длятся 20 секунд)
int call_kol_vo=0;                      //количество вызовов
//--------------------------------------------

//Вольтметр 3 канал ВИБРО
//-------------------------------------------
const int analogInPin_Vibro = 2;        // А2 Вход вольтметра канал охраны 3(Вибро)      
float outputValue_Vibro = 0; 
int flag_Vibro = 0;                     // флаг срабатывания вибро
int vibro_kol_vo= 0;
//-------------------------------------------

int ledState1 = LOW; 
int ledState2 = LOW;
int buttonState = 0; // состояние кнопки

long previousMillis1 = 0;        // храним время последнего переключения светодиода
long interval_1 = 1500;           // интервал между включение/выключением светодиода (1 секунда)
long previousMillis2 = 0;        // храним время последнего переключения светодиода
long interval_2 = 1000;           // охрана откл

long time_START_sirena=0;        //начало срабатывания сирены, время
long time_STOP_sirena=0;         //сирена отключилась, время
long time_sirena=0;               // сколько времени сирена работала

void setup()
{
  pinMode(LED1, OUTPUT); 
  pinMode(LED2, OUTPUT);
  
  pinMode(CALL, OUTPUT);
  pinMode(DISCALL, OUTPUT);
  analogWrite(CALL, 255);
  analogWrite(DISCALL, 255);
  
  pinMode(RelayChn1,OUTPUT);        
  digitalWrite(RelayChn1,HIGH);      
  pinMode(RelayChn2,OUTPUT);        
  digitalWrite(RelayChn2,HIGH);
  Serial.begin(9600);
  
  //ВКЛЮЧИТЬ ТЕЛЕФОН
          delay(3000);
          digitalWrite(LED1, HIGH);
          digitalWrite(LED2, HIGH);
          digitalWrite(RelayChn1,LOW);
          delay(6000);
          digitalWrite(RelayChn1,HIGH);
          delay(10000);
         // Serial.print("vkl tlf ");
          digitalWrite(LED1, LOW);
          digitalWrite(LED2, LOW);
  
}
 
void loop()
{
unsigned long currentMillis1 = millis();
unsigned long currentMillis_Battery = millis(); 

 // Снимаем показания напряжения АБ
 //--------------------------------------
  outputValue_Battery = float(analogRead(analogInPin_Battery))*7.9719667/245;  // снимаем уровень напряжения АБ
  //Serial.print("Voltage_Battery = " );                     
  //Serial.println(outputValue_Battery);
  delay(80);
  //-------------------------------------
  
  // Снимаем показания напряжения Вибро
 //--------------------------------------
  outputValue_Vibro = float(analogRead(analogInPin_Vibro))*7.9719667/245;  // снимаем уровень напряжения Вибро
  //Serial.print("Voltage_Vibro = " );                     
  //Serial.println(outputValue_Vibro);
  delay(80);
  //-------------------------------------
  
  //снимаем показания сирены
  //---------------------------------------
  outputValue_Sirena = float(analogRead(analogInPin_Sirena))*7.9719667/245;  // снимаем уровень напряжения сирены
  //Serial.print("Voltage_Sirena = " );                     
  //Serial.println(outputValue_Sirena);
  delay(80); 
  digitalWrite(LED2, LOW);                 // включаем сигнализацию
  
//--------------------------------------------------------------------
   
   if((currentMillis1 - previousMillis1 > interval_1)&&(flag_Sirena==0)) {  // режим сигнализации включен, моргаем LED1
    previousMillis1 = currentMillis1; 
    if (ledState1 == LOW)
      ledState1 = HIGH;
    else
      ledState1 = LOW;
    digitalWrite(LED1, ledState1);
   }
   
   
//-----------------------------------------------------------------------
//Напряжение батареи ниже 10,0В.    
  if((outputValue_Battery < 10.0)&&(outputValue_Battery > 7.0)) {   
     digitalWrite(LED2, LOW);
     flag_Battery=1;                // Напряжение батареи упало ниже 10,0В , флаг батареи поднят
  } else {
     flag_Battery=0;
         }
  // Serial.print("flag_Battery = " );                     
  // Serial.println(flag_Battery); 
   
 // флаг батареи поднят, моргаем светодиодом LED2
 if((currentMillis_Battery - previousMillis_Battery > interval_Battery)&&(flag_Battery==1)&&(flag_Sirena==0)) {  
    previousMillis_Battery = currentMillis_Battery; 
    if (ledState2 == LOW){    
        
       ledState2 = HIGH;
                         }       
         else {  
      
      ledState2 = LOW; 
              } 
 //устанавливаем состояния выхода, чтобы включить или выключить светодиод
     
    digitalWrite(LED2, ledState2);
  }
delay(100);

//-------------------------------------------------
//  СИРЕНА
//Напряжение на сирене выше 9 вольт в течении 7сек.    

if((outputValue_Sirena > 9.0)&&(flag_Sirena==0)) {
     time_START_sirena=millis();   //  ВРЕМЯ НАЧАЛА СРАБАТЫВАНИЯ СИРЕНЫ
     flag_Sirena=1;                //  Сирена сработала, флаг СИРЕНЫ включен
     digitalWrite(LED1, HIGH);     //  Горит LED1
     SIRENA();
     // Serial.println("VXOD IZ SIRENA");
     delay(100);
  } 
   //Serial.print("flag_Sirena = ");                     
   //Serial.println(flag_Sirena);
   delay(50);
   
//-------------------------------------------------
// ВХОДЯЩИЙ ВЫЗОВ- БЛОКИРОВКА
//Напряжение на сирене выше 9 вольт в течении 4сек.    

if(outputValue_Vibro < 18.0) {
     //time_START_sirena=millis();   
     flag_Vibro=1;                //  Сирена сработала, флаг СИРЕНЫ включен
     digitalWrite(LED1, HIGH);
     digitalWrite(LED2, HIGH);
     VIBRO();
    // Serial.println("VXOD IZ SIRENA");
     //delay(1000);
                              } 
   //Serial.print("flag_Sirena = ");                     
   //Serial.println(flag_Sirena);
   delay(500);
}

void SIRENA(){
   //Serial.println("vxod sirena" );   
  while(flag_Sirena ==1)  {       
     digitalWrite(LED1, HIGH);   
     outputValue_Sirena = float(analogRead(analogInPin_Sirena))*7.9719667/245;  // снимаем уровень напряжения сирены
      
      if((outputValue_Sirena > 9.0)&&(time_sirena < 7000)) {   
        flag_Sirena=1;
        time_STOP_sirena=millis();                                              //ОКОНЧАНИЕ СРАБАТЫВАНИЯ СИРЕНЫ
        time_sirena=time_STOP_sirena-time_START_sirena;
         Serial.println("time sirena_if__=  " );                     
         Serial.println(time_sirena); 
                                  }else{
                                    flag_Sirena=0;           
                                    time_STOP_sirena=millis();                //ОКОНЧАНИЕ СРАБАТЫВАНИЯ СИРЕНЫ
                                     //Serial.println("2time sirena_if__=  " );                     
                                     //Serial.println(time_sirena); 
                                        }
  }
  //Serial.println(" EXIT while ");
  delay(50);
   time_sirena=time_STOP_sirena-time_START_sirena;                          // ПОДСЧЕТ времени работы сирены
  
 //---------------------------------------------------------------------------------
 // телефон делает два ВЫЗОВа
 // если сирена работает более 7 секунд
 if((time_sirena > 7000)&&(call_kol_vo <= 7)){
          digitalWrite(RelayChn2,LOW);  // блокировка двигателя, контакты размыкаются
          digitalWrite(LED2, HIGH);     // второй диод(он же моргает при севшей АБ)
          analogWrite(DISCALL, -255);   // телефон в ждущем режиме, выводим из ждущего режима
          delay(500);
          analogWrite(DISCALL, 255);
          delay(500);
          analogWrite(DISCALL, -255);
          delay(500);
          analogWrite(DISCALL, 255);
          delay(500);
          analogWrite(CALL, -255);        // ПЕРВЫЙ ВЫЗОВ, два раза нажимаем клавишу вызова
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          analogWrite(CALL, -255);
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          call_kol_vo= call_kol_vo+1; // подсчитываем количество вызовов      
          //Serial.print("11111 ");
          delay(20000);               // вызов длится 20сек(если связь неустойчивая, вызов бывает проходит очень долго(10сек))
          //Serial.print("20 sec ");
          analogWrite(DISCALL, -255); // вызов прошел, ложим трубку
          delay(500);
          analogWrite(DISCALL, 255);  
          delay(20000);               // пауза между вызовами 20 секунд
 // --------------------------------------------------------- 
          analogWrite(CALL, -255);  //ВТОРОЙ ВЫЗОВ
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          analogWrite(CALL, -255);
          delay(500);
          analogWrite(CALL, 255);
          delay(500);
          call_kol_vo= call_kol_vo+1; // подсчитываем количество вызовов      
          //Serial.print("222222 ");
          delay(20000);               // вызов длится 20 секунд
          //Serial.print("20 sec ");
          analogWrite(DISCALL, -255); // ложим трубку
          delay(500);
          analogWrite(DISCALL, 255);
          delay(200);               
          flag_Sirena=0;                 
                                                     } 
        //Serial.print(" EXIT SIRENA ");
}

//-------------------------------------------------------------------

void VIBRO(){

  if(vibro_kol_vo <= 1){         // лишнее
  //Serial.print("VXOD VIBRO ");
  digitalWrite(RelayChn2,LOW);  // входящий вызов-срабатывает реле блокировки двигателя, контакты реле2 размыкаются
  delay(2000);
  analogWrite(DISCALL, -255);   // два раза жмем кнопку сброса вызова телефона
  delay(500);
  analogWrite(DISCALL, 255);
  delay(500);
  analogWrite(DISCALL, -255);
  delay(500);
  analogWrite(DISCALL, 255);
  delay(500);
  
   analogWrite(CALL, -255);        // реле2 сработало, ардуино отзванивается
   delay(500);
   analogWrite(CALL, 255);
   delay(500);
   analogWrite(CALL, -255);
   delay(500);
   analogWrite(CALL, 255);
   delay(20000);
   //Serial.print("20 sec ");
   analogWrite(DISCALL, -255);
   delay(500);
   analogWrite(DISCALL, 255);
   delay(500);
   //Serial.print("exit vibro");
   delay(500);
   vibro_kol_vo=vibro_kol_vo+1; //лишнее
  } 
flag_Vibro=0;  
 }

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Много букав. Но вообще не понятно о чем написано. Толи человек хвастается чем. Толи помощь нужна. Какой то набор слов с частым повторением слова сигнализация.

igorcds
Offline
Зарегистрирован: 03.12.2013

хвастаться здесь нечем, обычный вольтметр и все...слово сигнализация встречается два раза.

Цешкой на входе ардуино(от вибро), при срабатывании вибро наруга 2,9В(срабатывает минусом).

а вот ардуино показывает -Когда вибро нет, ардуино показывает 30В., при срабатывании вибро - показывает 16В., и когда вибро перестает срабатывать, напруга так и остается-16В. Когда перегружаешь или тлф или ардуино,нормализуется- опять 30В. На ардуино, у вольметров общий минус, у тлф общий плюс, есть ли смысл запитать отдельно тлф от ардуино? Сейчас запитано от одного источника и ардуино и тлф.

Одно ложное срабатывание(дала вызов) за 5 часов, показало, что было 12 В. более 7секунд.. В коде нет крамолы?