Ткните носом братцы. в кодинге не соображаю, пишу по примерам. Не могу реализовать отправку температуры само значение и текст в одном смс. помогите пожалста Код (C++): #include "SIM900.h" #include <SoftwareSerial.h> #include "sms.h" #include "call.h" SMSGSM sms; CallGSM call; #define B 3950 // B-коэффициент #define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм #define THERMISTOR_R 10000 // номинальное сопротивления термистора, 10 кОм #define NOMINAL_T 25 // номинальная температура (при которой TR = 10 кОм) //=================Пины 2 и 3 для Подключения GSM модуля const byte tempPin = A0; //пин температуры int flag=0; boolean started=false; char smsbuffer[160]; char n[20]; String n1 = "+7136396089"; //номер для отправки СМС String input_string = ""; String smsContent = ""; char smsstart[] ="WEBASTO START!"; //массив с командой char smsstop[] ="WEBASTO STOP!"; //массив с командой char smsstatus[] ="STATUS OK!"; //массив с командой char pos; char sendsms[160]; void setup() { pinMode(7, OUTPUT); //pin реле digitalWrite(7,HIGH); //назначение 7 pin по умолчанию выключено Serial.begin(115200); //скорость обмена uart pinMode( tempPin, INPUT ); //температура if (gsm.begin(4800)) { Serial.println("\nstatus=READY"); started=true; } else Serial.println("\nstatus=IDLE"); } void loop() { //БЛОК ИЗМЕРЕНИЯ ПОКАЗАНИЙ ДАТЧИКА А0 int t = analogRead( tempPin ); float tr = 1023.0 / t - 1; tr = SERIAL_R / tr; Serial.print("Temperature - "); //вывод названия float steinhart; steinhart = tr / THERMISTOR_R; steinhart = log(steinhart); steinhart /= B; steinhart += 1.0 / (NOMINAL_T + 273.15); steinhart = 1.0 / steinhart; steinhart -= 273.15; Serial.print(steinhart); //вывод самого значения Serial.println("°C"); //вывод знака температуры delay(100); char temp[20]; //создаем массив под значение температуры dtostrf(steinhart,5, 1, temp); //конвертируем массив float в char String temper="Temperature:" + String(temp) + "C"; Serial.println(temper); pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС if (pos) { // Если непрочитанные СМС есть, то... getsms(); // получаем непрочитанную СМС if (input_string=="START"){Serial.println("Komanda START!"); //если текст START, пишем в порт БЛОК START sms.SendSMS(n, smsstart); //отправляем смс sms.DeleteSMS(1); //удаляем смс memset(n,0,20); input_string=""; char smsbuffer[160]=""; digitalWrite(7,LOW); //включаем реле delay(1000); //ждем digitalWrite(7,HIGH);//выключаем реле sms.DeleteSMS(pos); // удаляем СМС из симки } } if (input_string=="STOP"){Serial.println("Komanda STOP!");//если текст STOP, пишем в порт БЛОК STOP sms.SendSMS(n, smsstop); //отправляем смс sms.DeleteSMS(1); //удаляем смс memset(n,0,20); input_string=""; char smsbuffer[160]=""; digitalWrite(7,LOW);//включаем реле delay(1000);//ждем digitalWrite(7,HIGH);//выключаем реле sms.DeleteSMS(pos); // удаляем СМС из симки } if (input_string=="STATUS"){Serial.println("Komanda STATUS!");//если текст STATUS, пишем в порт БЛОК STATUS sms.SendSMS(n,smsstatus ); //отправляем смс sms.DeleteSMS(1);//удаляем смс memset(n,0,20); input_string=""; char smsbuffer[160]=""; sms.DeleteSMS(pos); // удаляем СМС из симки } if (input_string=="TEMP"){Serial.println("Komanda TEMP!");//если текст TEMP, пишем в порт БЛОК TEMP //sms.SendSMS(n,"Temperature:" + char(temp) + "C"); sms.DeleteSMS(1);//удаляем смс memset(n,0,20); input_string=""; char smsbuffer[160]=""; sms.DeleteSMS(pos); // удаляем СМС из симки } } void getsms() { sms.GetSMS(pos,n,20,smsbuffer,160); input_string =String(smsbuffer); }
а где вы это хотя бы пытаетесь сделать в коде? - не вижу. Сам код содержит просто кучу ошибок и примерно два-три десятка совершенно бессмысленных операторов, которые совершенно спокойно можно выбросить. И вообще, я где-то это код уже видел.... в каком-то видео. Зря вы этот код взяли за основу. автор мало понимает в программировании.
Видимо здесь Код (C++): sms.SendSMS(n, smsstart); //отправляем смс Раскоментируйте строку Код (C++): //sms.SendSMS(n,"Temperature:" + char(temp) + "C"); и попробуйте.
Модная тенденция заключается вот в чем: берется ЛЮБОЙ код, выдается за "я старался как умел" и на эту хрень ловятся доброхоты. Подход прост. Опытный человек, пытаясь разобраться, сразу видит бред и думает: "да проще свой написать, чем эту фигню разбирать" и выдает жулику решение. Все просто и красиво.
я не программист. поэтому и взял за основу код чужой и начал его дополнять и изменять.что смог то сделал для чего сразу писать такие вещи мол не бери и не делай чужое, не бери и не делай раз не понимаешь.
В этом форуме есть ветка на эту тему. Рабочий пример и рекомендации по запуску даются буквально на первой странице. Просто добавь свой номер.
Так он работает?Пробовали сделать как я сказал-раскоментировать строку?Что получилось?Код и правда жуткий особенно измерение температуры.