Отправка СМС GSM Shield
- Войдите на сайт для отправки комментариев
Вс, 08/05/2016 - 14:25
Помогите пожалуйста, при достижении датчиком определенного значения отправляеться СМС поповещение о тревоге, как сделать так что бы смс отправлялось единожды ???
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);
}
Единожды :
Строка 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();
Спасибо большое, очень выручили !!!