Исправить код программы GSM + термопара max6675

Нет ответов
strannik20
Offline
Зарегистрирован: 09.02.2020

Здравствуйте! Ищу человека который исправит или заново напишет код. Вот мой код: в нем не работает термопара. Точнее работает но часто выдает ерунду.

#include "max6675.h"
#include "SIM900.h"
//#include <SoftwareSerial.h>
#include "sms.h"
#include "call.h"

//Термопара
int thermoDO = 8;  //он же SO
int thermoCS = 9;
int thermoCLK = 4;  //он же SCK

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

//int vccPin = 5;  //пин для питания
//int gndPin = 6;  //пин для земли

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

int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
char nn[20];
char v[10];
String n1 = "";   
//String n1 = "";                                 // Мой Номер 
//String n2 = "";                                 // Номер Жены
String n2 = "";                                 // Test
String v1 = "";
int s1;
String input_string = "";
String smsContent = "";
char trevoga[] = "Vnimanie! Kriticheskaya temperatura! C = ";
char pos;
char sendsms[160];



void setup() {
   Serial.begin(9600);
  //активируем питание и землю
//  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
//  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  Serial.println("MAX6675 test");
  
  delay(1800);                                            //ждем стабилизации чипа MAX

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


void loop() {
  delay(1800);                                            //ждем стабилизации чипа MAX
  int s1 = int(thermocouple.readCelsius());
  Serial.print("С = ");
  Serial.println(s1);
  
// ===========================СМС
if (s1 >= 80 &&  flag1 <= 0) {
  
  Serial.print("Превышен температурный предел! С = ");
  Serial.println(s1);

//   String s1 = String(thermocouple.readCelsius(), 1);
    String v1 = trevoga + s1;
    v1.toCharArray(v,20);
    
    n1.toCharArray(n,20);
    sms.SendSMS(n, v);                                       // Посылаем СМС о том, что привышена температура
    sms.DeleteSMS(1);memset(n,0,20);
    
    n2.toCharArray(nn,20);
    sms.SendSMS(nn, v);                                       // Посылаем СМС о том, что привышена температура
    sms.DeleteSMS(1);memset(nn,0,20);
    
    char smsbuffer[160]="";
    flag1++;
    delay(10000); }

else if (s1 >= 80 && flag1 > 0 && flag1 < 30000) {            // 5 минут на чтение смс

      
  pos = sms.IsSMSPresent(SMS_UNREAD);                                   // смотрим непрочитанные СМС
       if (pos) {                                                     // Если непрочитанные СМС есть, то...     
  getsms();                                                           // получаем непрочитанную СМС
  if (input_string=="0"){                                             // Команда "0" - отправить СМС 
       Serial.print("Prislo SMS!");
       n1.toCharArray(n,20);                                          //  Номер телефона


//       String s1 = String(thermocouple.readCelsius(), 1);
       String v1 = int(s1) + String(" Gradusov");
       v1.toCharArray(v,20);

       
       sms.SendSMS(n, v);
       sms.DeleteSMS(1); 
       memset(n,0,20); 
       input_string="";
       char smsbuffer[160]="";}
//     flag1=0;
       sms.DeleteSMS(pos);                                           // удаляем СМС  из симки
      }
    flag1++;  
    delay(10000);}  

else if (s1 >= 80 && flag1 >= 30000) {
  
  Serial.print("Превышен температурный предел! С = ");
  Serial.println(s1);

 //   String s1 = String(thermocouple.readCelsius(), 1);
    String v1 = String(trevoga + s1);
    v1.toCharArray(v,20);

    n1.toCharArray(n,20);
    sms.SendSMS(n, v);                                       // Посылаем СМС о том, что привышена температура
    sms.DeleteSMS(1);memset(n,0,20);
    
    n2.toCharArray(nn,20);
    sms.SendSMS(nn, v);                                       // Посылаем СМС о том, что привышена температура
    sms.DeleteSMS(1);memset(nn,0,20);
    
    char smsbuffer[160]="";
    flag1++;
    delay(180000000); }                                             //Задержка 3 минуты
  
else if (s1 < 80) {
    Serial.print("Температура в норме! С =  ");
    Serial.println(s1);
    flag1=0;
    delay(10000);}  


  pos = sms.IsSMSPresent(SMS_UNREAD);                                // смотрим непрочитанные СМС
    if (pos) {                                                       // Если непрочитанные СМС есть, то...     
  getsms();                                                          // получаем непрочитанную СМС
    if (input_string=="0"){                                          // Команда "0" - отправить СМС 
       Serial.println("Prislo SMS!");
       n1.toCharArray(n,20);                                          //  Номер телефона

//      String s1 = String(thermocouple.readCelsius(), 1);
       String v1 = String(s1 + " Gradusov");

       v1.toCharArray(v,20);
       sms.SendSMS(n, v);
       sms.DeleteSMS(1); 
       memset(n,0,20); 
       input_string="";
       char smsbuffer[160]="";}
//     flag1=0;
       sms.DeleteSMS(pos);                                           // удаляем СМС  из симки
      }

}
void getsms()
{
   sms.GetSMS(1,n,20,smsbuffer,160);
   input_string =String(smsbuffer);
          }

Если закоментить вот этот кусок кода:

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

То начинает работать... Помогите с исправлением. Жду предложения в личку и на форуме.