GMS отправляет текстовые сообщения SMS много раз

GSM отправляет много текстовых SMS-сообщений и не останавливается. Как отправить только одно SMS? Это мой код:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
char msg;
int vibr_pin = 7;

void setup() {
  mySerial.begin(9600);   // Установка скорости передачи GSM-модуля
  Serial.begin(9600);   // Установка скорости передачи Serial Monitor (Arduino)
  pinMode(vibr_pin, INPUT);
  delay(100);
}

void loop() {
  int a;
  a = digitalRead(vibr_pin);
  if (a == 0) {
    mySerial.println("AT+CMGF=1");    // Устанавливает модуль GSM в текстовый режим
    delay(1000);  // Задержка 1000 миллисекунд или 1 секунда
    mySerial.println("AT+CMGS=\"+60125456758\"\r"); // Заменить x на номер мобильного телефона
    delay(1000);
    mySerial.println("test 1,2,3"); // Текст SMS, который вы хотите отправить
    delay(100);
    mySerial.println((char) 26); // ASCII-код CTRL+Z
    delay(1000);
  }
}

ИЗМЕНИТЬ:
После того, как я изменил if (a==0) на if(a!=0), он отправляет сообщение только при движении датчика вибрации. Как отправить смс, если датчик не двигается?

, 👍-1

Обсуждение

мой датчик вибрации sw-420, @abubakarradzi

используйте переменную flag, чтобы запомнить, если вы отправили сообщение, @jsotola


1 ответ


0
int a;
a = digitalRead(vibr_pin);
if (a == 0) {

Это отправляет текстовое SMS-сообщение каждый раз, когда a равно 0. Я не уверен, что делает vibr_pin, но, возможно, вы хотите проверить только наличие триггера (от a != 0 до а == 0).

В этом случае используйте логическое значение, чтобы проверить, было ли отправлено текстовое SMS-сообщение, и сбросьте логическое значение, когда a изменится с !=0 на 0.

,

после того, как я изменю if (a == 0) на if (a! = 0), он отправляет сообщение только при движении датчика вибрации. как отправить смс если датчик не двигается, @abubakarradzi

Используйте логическое значение (проверьте, когда датчик переходит от неподвижного к движущемуся или наоборот). Когда это логическое значение установлено (или сброшено), отправьте SMS и измените логическое значение., @Michel Keijzers