Включение фена дизельного. нужна помощь
- Войдите на сайт для отправки комментариев
Привет! помогите обьединить два куска скетча. Задача сей задумки следующая. При появлении 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));
}
}
5000р