Помогите слепить скетч из двух .

SerJPol
Offline
Зарегистрирован: 26.08.2022

Есть основной текст программы :

 

https://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

 
 
хотелось бы добавить кусок от этой программы :
 
 
 
 
 
 
чтоб на каждое действие в основной программе отправлялось подтверждение в виде SMS прописанное во второй программе . Заранее благодарен .
Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Для начала прочитайте как правильно лепить код на форум !!!

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

Если код не вставишь как надо, тема будет удалена через час

SerJPol
Offline
Зарегистрирован: 26.08.2022

DetSimen пишет:

Если код не вставишь как надо, тема будет удалена через час

Пытаюсь редактировать.

Вот туплю что-то , не найду кнопку редактировать !

SerJPol
Offline
Зарегистрирован: 26.08.2022

Приветствую !!!

Есть основной текст программы :

#include<LiquidCrystal.h>
LiquidCrystal lcd(6,7,8,9,10,11);
#define Fan 3
#define Light 4
#define TV 5
int temp=0,i=0;
int led=13;
char str[15];
void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
   pinMode(Fan, OUTPUT);
    pinMode(Light, OUTPUT);
     pinMode(TV, OUTPUT);
  
  lcd.setCursor(0,0);
  lcd.print("GSM Control Home");
  lcd.setCursor(0,1);
  lcd.print("   Automaton    ");
  delay(2000);
  lcd.clear();
  lcd.print("Circuit Digest");
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print("System Ready");
  Serial.println("AT+CNMI=2,2,0,0,0");
  delay(500);
  Serial.println("AT+CMGF=1");
  delay(1000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Fan   Light  TV ");
  lcd.setCursor(0,1);
  lcd.print("OFF    OFF   OFF "); 
}
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Fan   Light  TV");
  if(temp==1)
  {
    check();
    temp=0;
    i=0;
    delay(1000);
  }
}
 void serialEvent() 
 {
  while(Serial.available()) 
  {
    if(Serial.find("#A."))
    {
      digitalWrite(led, HIGH);
      delay(1000);
      digitalWrite(led, LOW);
      while (Serial.available()) 
      {
      char inChar=Serial.read();
      str[i++]=inChar;
      if(inChar=='*')
      {
        temp=1;
        return;
      } 
      } 
    }
   }
 }
void check()
{
   if(!(strncmp(str,"tv on",5)))
    {
      digitalWrite(TV, HIGH);
      lcd.setCursor(13,1); 
      lcd.print("ON    ");
      delay(200);
    }  
   
   else if(!(strncmp(str,"tv off",6)))
    {
      digitalWrite(TV, LOW);
      lcd.setCursor(13,1); 
      lcd.print("OFF    ");
      delay(200);
    }
  
    else if(!(strncmp(str,"fan on",5)))
    {
      digitalWrite(Fan, HIGH);
      lcd.setCursor(0,1); 
      lcd.print("ON   ");
      delay(200);
    }
 
    else if(!(strncmp(str,"fan off",7)))
    {
      digitalWrite(Fan, LOW);
      lcd.setCursor(0,1); 
      lcd.print("OFF    ");
      delay(200);
    }
 
    else if(!(strncmp(str,"light on",8)))
    {
      digitalWrite(Light, HIGH);
      lcd.setCursor(7,1); 
      lcd.print("ON    ");
      delay(200);
    }
 
    else if(!(strncmp(str,"light off",9)))
    {
      digitalWrite(Light, LOW);
      lcd.setCursor(7,1); 
      lcd.print("OFF    ");
      delay(200);
    } 
    
    else if(!(strncmp(str,"all on",6)))
    {
      digitalWrite(Light, HIGH);
      digitalWrite(Fan, HIGH);
      digitalWrite(TV, HIGH);
      lcd.setCursor(0,1); 
      lcd.print("ON     ON    ON  ");
      delay(200);
    }
 
    else if(!(strncmp(str,"all off",7)))
    {
      digitalWrite(Light, LOW);
      digitalWrite(Fan, LOW);
      digitalWrite(TV, LOW);
      lcd.setCursor(0,1); 
      lcd.print("OFF   OFF    OFF  ");
      delay(200);
    }     
}
 
хотелось бы добавить кусок от этой программы :
#include<LiquidCrystal.h>
LiquidCrystal lcd(6,7,8,9,10,11);
int led=13;
int flag=0;
String str="";
#define motor 2
#define sensor 12
void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(motor, OUTPUT);
  pinMode(sensor, INPUT_PULLUP);
  lcd.print("Water Irrigaton");
  lcd.setCursor(4,1);
  delay(2000);
  lcd.clear();
  lcd.print("Circuit Digest");
  lcd.setCursor(0,1);
  lcd.print("Welcomes You");
  delay(2000);
  gsmInit();
  lcd.clear();
  lcd.print("System Ready");
}
void loop()
{
    lcd.setCursor(0,0);
    lcd.print("Automatic Mode    ");
    if(digitalRead(sensor)==1 && flag==0)
    {
      delay(1000);
      if(digitalRead(sensor)==1)
      {
        digitalWrite(led, HIGH);
        sendSMS("Low Soil Moisture detected. Motor turned ON");
        lcd.begin(16,2);
        lcd.setCursor(0,1);
        lcd.print("Motor ON    ");
        digitalWrite(motor, HIGH);
        delay(2000);
        flag=1;
      }
    }
    else if(digitalRead(sensor)==0 && flag==1)
    {
      delay(1000);
      if(digitalRead(sensor)==0)
      {
        digitalWrite(led, LOW);
        sendSMS("Soil Moisture is Normal. Motor turned OFF");
        digitalWrite(motor, LOW);
        lcd.begin(16,2);
        lcd.print("Motor OFF");
        lcd.setCursor(0,1);
        lcd.print("Motor OFF");
        delay(2000);
        flag=0;
      }
    }
}
 
void sendSMS(String msg)
{
  lcd.clear();
  lcd.print("Sending SMS");
  Serial.println("AT+CMGF=1");
  delay(500);
  Serial.print("AT+CMGS=");
  Serial.print('"');
  Serial.print("+79039818499");    // number
  Serial.print('"');
  Serial.println();
  delay(500);
  Serial.println(msg);
  delay(500);
  Serial.write(26);
  delay(1000);
  lcd.clear();
  lcd.print("SMS Sent");
  delay(1000);
  lcd.begin(16,2);
}
void gsmInit()
{
  lcd.clear();
  lcd.print("Finding Module..");
  boolean at_flag=1;
  while(at_flag)
  {
    Serial.println("AT");
    while(Serial.available()>0)
    {
      if(Serial.find("OK"))
      at_flag=0;
    }
    delay(1000);
  }
  Serial.println("ATE0");
  lcd.clear();
  lcd.print("Finding Network..");
  boolean net_flag=1;
  while(net_flag)
  {
    Serial.println("AT+CPIN?");
    while(Serial.available()>0)
    {
      if(Serial.find("READY"))
      net_flag=0;
      break;
    }
    delay(1000);
  }
   Serial.println("AT+CNMI=2,2,0,0,0");
   delay(1000);
   Serial.println("AT+CMGF=1");
   delay(1000);
   Serial.println("AT+CSMP=17,167,0,0");
   lcd.clear();
   Serial.flush();
}

чтоб на каждое действие в основной программе отправлялось подтверждение в виде SMS прописанное во второй программе . Заранее благодарен .

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Serial.println("AT+CSMP=17,167,0,0"); добавьте в инициализацию модема

sendSMS перенесите и отправляйте через нее то что надо.

SerJPol
Offline
Зарегистрирован: 26.08.2022

Komandir пишет:

Serial.println("AT+CSMP=17,167,0,0"); добавьте в инициализацию модема

sendSMS перенесите и отправляйте через нее то что надо.

Чисто теоретически я это понимаю , что добавить нужно . А вот какие именно строки и в какое место именно для меня пока дебри !

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Мозг включать иногда полезно !!!

Если вы ходите готовый код - вам в платный раздел !