Отправка СМС GSM Shield

nif___naf
Offline
Зарегистрирован: 08.05.2016

Помогите пожалуйста, при достижении датчиком определенного значения отправляеться СМС поповещение о тревоге, как сделать так что бы смс отправлялось единожды ???

int sensorPin = 0; // Пин, на котором у нас висит сенсор газа аналоговый вход 0
int redled = 2;    // Пин с красным светодиодом цифровой выход 2
int yelowled = 3;  // Пин с желтым светодиодом  цифровой выход 3
int greenled = 4;  // Пин с зеленым светодиодом цифровой выход 4
int gas = 0;       // Переменная для хранения значения газового сенсора
int rele = 5;      // Пин для реле клапана


void setup() {
  Serial.begin(9600); // Инициализируем серийный порт будем слать в него данные измерения
  Serial.println("AT+CMGF=1\r"); // устанавливает текстовый режим смс-сообщения
  pinMode(greenled, OUTPUT); // Объявляем 2,3,4 и 5 пины, как выходы
  pinMode(yelowled, OUTPUT);
  pinMode(redled, OUTPUT);
  pinMode(rele, OUTPUT);

  gas = analogRead(sensorPin);

  digitalWrite(greenled, HIGH);
  digitalWrite(yelowled, LOW);
  digitalWrite(redled, LOW);
  delay (2000);

  digitalWrite(greenled, LOW);
  digitalWrite(yelowled, HIGH);
  digitalWrite(redled, LOW);
  delay (2000);

  digitalWrite(greenled, LOW);
  digitalWrite(yelowled, LOW);
  digitalWrite(redled, HIGH);
  delay (2000);


  tone(10, 900, 200);
}
void loop() {
  gas = analogRead(sensorPin); // Получаем значения от датчика газа

  if (gas <= 550)
  {
    digitalWrite(greenled, HIGH);
    digitalWrite(yelowled, LOW);
    digitalWrite(redled, LOW);
    
  }

  else if (gas > 550, gas <= 600)
  {
    tone(10, 900, 200);
    digitalWrite(greenled, LOW);
    digitalWrite(yelowled, HIGH);
    digitalWrite(redled, LOW);
    
  }

  else if (gas >= 600)
  {
    tone(10, 740, 200);
    digitalWrite(rele, HIGH);
    digitalWrite(greenled, LOW);
    digitalWrite(yelowled, LOW);
    digitalWrite(redled, HIGH);
     
    Serial.println("AT + CMGS = \"+375336873525\""); // номер абонента
    delay(100);
    Serial.println("ALLARM");
    delay(100);
    Serial.println((char)26);
    delay(100);
    Serial.println();
    
  }
 
 Serial.print("Pokazaniya datchika MQ-9 = ");
    Serial.println(gas);



  delay(1000);
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

Единожды :

Строка 7 - boolean SMSsent = false;

Строка 57 - else if ((gas >= 600) && (!SMSsent))

Строка 72 - SMSsent = true;

Периодически :

Строка 7 - unsigned long SMSlastsenttime = 0;

Строка 57 - else if ( (gas >= 600) && ( millis() - SMSlastsenttime > 600000 || SMSlastsenttime == 0 ) ) // 600000 миллисекунд = 10 минут, то есть посылаем сообщения не чаще, чем раз в десять минут.

Строка 72 - SMSlastsenttime = millis();

 
nif___naf
Offline
Зарегистрирован: 08.05.2016

Спасибо большое, очень выручили !!!