Показано с 1 по 10 из 435

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #25
    Новичок
    Регистрация
    08.01.2014
    Сообщений
    6
    Вес репутации
    144

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    перечитал все помогите разобратся со следующей ситуацией,проверяются датчики 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();
    }
    и как считывать\разбирать пришедшее смс,как лучше?
    Последний раз редактировалось revolt; 08.01.2014 в 20:27.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •