перечитал все помогите разобратся со следующей ситуацией,проверяются датчики 1-wire,в мониторе все пишется как надо,нужно что бы по определенному(в данном случае "#") символу во входящей смс,отреагировал ответным смс с температурами.в моем случае,запускается,ждем 20сек,начинают циклировать данные в мониторе,и через 5 сек после этого мне приходит смс "-127.00"
и как считывать\разбирать пришедшее смс,как лучше?Код:#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 3 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress domC = { 0x28, 0xF7, 0x72, 0x46, 0x05, 0x00, 0x00, 0xDB }; DeviceAddress ulicaC = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 }; DeviceAddress kotelC = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F }; char inchar; float tempC; void setup(void) { Serial.begin(9600); Serial1.begin(9600); Serial1.print("AT+CMGF=1\r"); delay(1000); Serial1.println("AT+CNMI=3,0,0,0\r"); delay(1000); sensors.begin(); sensors.setResolution(domC, 10); sensors.setResolution(ulicaC, 10); sensors.setResolution(kotelC, 10); } void printTemperature(DeviceAddress deviceAddress) { tempC = sensors.getTempC(deviceAddress); if (tempC == -127.00) { Serial.print("Error getting temperature"); } else { Serial.print("C: "); Serial.print(tempC); Serial.print(" F: "); Serial.print(DallasTemperature::toFahrenheit(tempC)); } } void loop(void) { delay(20000); Serial.print("Getting temperatures...\n\r"); sensors.requestTemperatures(); Serial.print("Doma: "); printTemperature(domC); Serial.print("\n\r"); Serial.print("Ha ylice: "); printTemperature(ulicaC); Serial.print("\n\r"); Serial.print("Kotel: "); printTemperature(kotelC); Serial.print("\n\r\n\r"); if(Serial1.available() >0) // насколько я понял считывает смс,возможно в этом проблема { inchar=Serial1.read(); if (inchar=='#') { sendSMS(); } } } void sendSMS() { Serial1.println("AT+CMGS=\"+380660830000\"\r"); delay(1000); Serial1.println(tempC); delay(1000); Serial1.println((char)26); delay(1000); Serial1.println("AT+CMGD=1,4\r"); Serial1.flush(); }




Ответить с цитированием