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