Включение фена дизельного. нужна помощь

Barada1987
Offline
Зарегистрирован: 16.09.2020

Привет! помогите обьединить два куска скетча. Задача сей задумки следующая. При появлении 5в на оптопаре. реле замыкается на 3 сек. при пропадании снова замыкается на 3 сек. требуется все связать с модулем sim800l.со смартфона отправкой смс требуется так же включать на 3 сек реле. с отправкой каждой 1 должно сработать реле на 3 сек.Еще важный момент . если я включю реле через смс то при появлении питания на оптопаре сработка не должна произойти. стоять будет все в автомобиле для запуска дизельного фена.обратная связь не нужна .выключил машину фен выключился. включил машину фен включился. ушел на всем выключенном . отправил смс . фен включитлся. пишел сел в машину включил ее. фен не должен выключиться . только при пропадании питания на оптопаре должен сработать блок .

#include "SIM900.h"
#include <SoftwareSerial.h>

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

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


int flag=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+799150XXXXX";
String input_string = "";
String smsContent = "";

#char smsDv[] ="Komanda Vipolnena!";
#char pos;
#char sendsms[160];

void setup() {

 pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
Serial.begin(9600);


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

}
void loop() {

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

if (input_string=="1"){Serial.print("YES!");
//n1.toCharArray(n,20);
sms.SendSMS(n, smsDv);
sms.DeleteSMS(1);
memset(n,0,20); // Команда "1" - действие
input_string=""; 
char smsbuffer[160]="";
digitalWrite(6,LOW);
delay(3000);
digitalWrite(6,HIGH);
}
sms.DeleteSMS(pos); // удаляем СМС  из симки
      }
}
void getsms()
{
sms.GetSMS(pos,n,20,smsbuffer,160);
input_string =String(smsbuffer);
          }

 

кусок 2 который для оптопары

bool _tim3I = 0;
bool _tim3O = 0;
unsigned long _tim3P = 0UL;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
void setup()
{
    pinMode(4, INPUT_PULLUP);
    pinMode(6, OUTPUT);
    digitalWrite(6, 0);
}
void loop()
{
    //Плата:1
    if (!((digitalRead (4))))
    {
         if (_tim1I) 
        {
             if (_isTimer(_tim1P, 3000)) 
            {
                _tim1O = 1;
            }
        }
         else 
        {
            _tim1I =1;
            _tim1P = millis();
        }
    }
     else 
    {
        _tim1O = 0;
        _tim1I = 0;
    }
    if ((digitalRead (4)))
    {
         if (_tim3I) 
        {
             if (_isTimer(_tim3P, 3000)) 
            {
                _tim3O = 1;
            }
        }
         else 
        {
            _tim3I =1;
            _tim3P = millis();
        }
    }
     else 
    {
        _tim3O = 0;
        _tim3I = 0;
    }
    digitalWrite(6, ((_tim3O) || (_tim1O)));
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) 
    {
        return (currentTime>=(startTime + period));
    }
     else 
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

5000р