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