Mobile 当按下按钮时,如何让Arduino GSM屏蔽发送测试?

Mobile 当按下按钮时,如何让Arduino GSM屏蔽发送测试?,mobile,while-loop,sms,arduino,gsm,Mobile,While Loop,Sms,Arduino,Gsm,这是我目前正在尝试使用的代码。系统将发送所需的测试,但不附带按钮代码。我已经将按钮的命令放在while循环中,但我不确定这是否正确。我希望系统启动GSM屏蔽,并保持在一个循环中,等待释放(按钮)通知它发送文本。任何意见都会帮助我。我可能完全错了,所以请让我知道。我宁愿不使用AT命令。我使用的是Arduino UNO和spark fun GSM屏蔽SM5100B #include <GSM.h> #define PINNUMBER "" int ledPin = 13; int in

这是我目前正在尝试使用的代码。系统将发送所需的测试,但不附带按钮代码。我已经将按钮的命令放在while循环中,但我不确定这是否正确。我希望系统启动GSM屏蔽,并保持在一个循环中,等待释放(按钮)通知它发送文本。任何意见都会帮助我。我可能完全错了,所以请让我知道。我宁愿不使用AT命令。我使用的是Arduino UNO和spark fun GSM屏蔽SM5100B

#include <GSM.h>

#define PINNUMBER ""
int ledPin = 13;
int inPin = 7;  
int val = 0; 

// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSM_SMS sms;

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to
char remoteNumber[20]= "xxxxxxxxxxxx";  

// char array of the message
char txtMsg[200]="Test";

void setup()
{
  pinMode(ledPin, OUTPUT); 
  pinMode(inPin, INPUT); 
  // initialize serial communications
  Serial.begin(9600);

  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("GSM initialized");
  val = digitalRead(inPin);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    digitalWrite(ledPin, LOW);  // turn LED OFF
  } else {
    digitalWrite(ledPin, HIGH); 
    sendSMS(); 
  }
}

void loop()
{
// nothing to see here
}

void sendSMS(){

  Serial.print("Message to mobile number: ");
  Serial.println(remoteNumber);

  // sms text
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");  
}
#包括
#定义PINNUMBER“”
int-ledPin=13;
int-inPin=7;
int-val=0;
//初始化库实例
GSM gsmAccess;//为已启用调试包含“true”参数
手机短信;
//发送SMS的电话号码的字符数组
//将数字1-212-555-1212更改为数字
//您可以访问
字符remoteNumber[20]=“XXXXXXXXXXXXX”;
//消息的字符数组
char txtMsg[200]=“测试”;
无效设置()
{
引脚模式(LED引脚,输出);
pinMode(inPin,输入);
//初始化串行通信
Serial.begin(9600);
Serial.println(“短信发送者”);
//连接状态
布尔notConnected=true;
//启动GSM屏蔽
//如果您的SIM卡有PIN码,请将其作为begin()的参数以引号形式传递
while(未连接)
{
如果(gsmAccess.begin(PINNUMBER)=GSM\u READY)
notConnected=false;
其他的
{
Serial.println(“未连接”);
延迟(1000);
}
}
Serial.println(“GSM初始化”);
val=digitalRead(inPin);//读取输入值
如果(val==高){//检查输入是否高(按钮释放)
数码写入(LED引脚,低);//关闭LED
}否则{
数字写入(ledPin,高电平);
sendSMS();
}
}
void循环()
{
//这里没什么可看的
}
void sendSMS(){
串口打印(“短信到手机号码:”);
Serial.println(远程编号);
//短信文本
Serial.println(“发送”);
Serial.println();
Serial.println(“消息:”);
Serial.println(txtMsg);
//发送消息
sms.beginSMS(远程号码);
短信打印(txtMsg);
endSMS();
Serial.println(“\n完成!\n”);
}

很可能是错误的,您只需在初始化后检查按钮是否按下。 您应该始终检查按钮按下情况,因此您必须在循环()期间进行检查,还需要一些去盎司代码,因为点击按钮可能会导致许多快速的高-低状态,请参阅

请注意设置正确的PINNUMBER,否则您的卡将被阻止(而不是一段时间,请尝试一次)

也许来自的库可以帮助您吗?:)

开始格式(pinnumber、restart、sync)。其中重新启动和同步默认为true。 所以做一些改变。通过false代替重新启动,以便gsm模块不会重新启动并按原样同步。 试试看,因为它在我的情况下起作用了。。。 开始(pinnumber,false)