Отправка СМС 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();
Спасибо большое, очень выручили !!!