2014-02-18 3 views
1

Arduino + Sparkfun SM5100B + Cellular Shield 사용.Arduino의 SMS 보내기/받기 루프

이동 전화 번호 집합을 약 1 분 지연하여 다음 코드를 반복해야합니다. Arduino가 긍정/'예'메시지를 받으면 루프를 깨고 종료해야합니다. '아니오'또는 부정적인 메시지를 받으면 루프를 계속해야합니다.

지금 당장 컴파일이 성공적으로 완료되었지만 루프에서 올바르게 지연되고 직렬 모니터에 올바른 메시지가 인쇄되는 동안 실제로 보내지는 AT 명령과 함께 첫 번째 번호로만 테스트 메시지가 전송됩니다 이 코드에서 다음 숫자 (첫 번째 숫자로 수신 된 텍스트 메시지에서)는 아직 수신 메시지 코드가 포함되어 있습니다. 먼저 루프를 작동시키고 싶습니다.

//THis code is sending both messages to first number 
#include <GSM.h> 

#define PINNUMBER "" 
const int buttonPin = 4; 
const int ledPin1 = 13; 
const int ledPin2 = 12; 
int buttonState = 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 
const char* number1 = "xxxxxxxxxxxxx"; // enter any two mobile numbers here in international format 
const char* number2 = "xxxxxxxxxxxxx"; 

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

// connection state 
boolean notConnected = true; 

void setup() 
{ 
    pinMode(ledPin1, OUTPUT); 
    pinMode(ledPin2, OUTPUT); 
    pinMode(buttonPin, INPUT); 
    // initialize serial communications 
    Serial.begin(9600); 

    Serial.println("SMS Messages Sender"); 

    // 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"); 
    } 

void loop() 
{ 
buttonState = digitalRead(buttonPin); 
{ 
    sendSMS(); 
} 
} 


void sendSMS() 
{ 
digitalWrite(ledPin1, HIGH); 
digitalWrite(ledPin2, LOW); 
if(buttonState == HIGH) { 
    buttonState = 1; 
}; 
if (buttonState == 1) { 

    digitalWrite(ledPin2, HIGH); 
    delay(1000); 

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

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

    // send the message 
    sms.beginSMS(number1); 
    sms.print(txtMsg); 
    Serial.println("\nFirst Message Sent\n"); 
    digitalWrite(ledPin2, LOW); 

    delay (60000); 

    digitalWrite(ledPin2, HIGH); 
    delay(1000); 

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

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

    // send the message 
    sms.beginSMS(number2); 
    sms.print(txtMsg); 
    sms.endSMS(); 
    Serial.println("\nSecond Message Sent\n"); 
    digitalWrite(ledPin2, LOW); 
} 
} 

답변

1

변경 GSM_sms;

GSM_smsone에

;
GSM_smstwo;

사용

smsone.beginSMS (번호 1);
smsone.print (txtMsg);
smsone.endSMS();

smstwo.beginSMS (number2);
smstwo.print (txtMsg);
smstwo.endSMS();

SMS를 보내는 경우.

#include <GSM.h> 

#define PINNUMBER "" 
const int buttonPin = 4; 
const int ledPin1 = 13; 
const int ledPin2 = 12; 
int buttonState = 0; 

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

// char array of the telephone number to send SMS 
const char* number1 = "xxxxxxxxxxxxx"; // enter any two mobile numbers here in international format 
const char* number2 = "xxxxxxxxxxxxx"; 

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

// connection state 
boolean notConnected = true; 

void setup() 
{ 
pinMode(ledPin1, OUTPUT); 
pinMode(ledPin2, OUTPUT); 
pinMode(buttonPin, INPUT); 
// initialize serial communications 
Serial.begin(9600); 

Serial.println("SMS Messages Sender"); 

// 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"); 
} 

void loop(){ 

buttonState = digitalRead(buttonPin); 
{ 
    sendSMS(); 
} 
} 

void sendSMS() 
{ 
    digitalWrite(ledPin1, HIGH); 
    digitalWrite(ledPin2, LOW); 
    if (buttonState == HIGH) { 
    buttonState = 1; 
    }; 

    if (buttonState == 1) { 
    digitalWrite(ledPin2, HIGH); 
    delay(1000); 
    Serial.print("Message to mobile number: "); 
    Serial.println(number1); 
    // sms text 
    Serial.println("SENDING"); 
    Serial.println(); 
    Serial.println("Message:"); 
    Serial.println(txtMsg); 
    // send the first message 
    smsone.beginSMS(number1); 
    smsone.print(txtMsg); 
    smsone.endSMS(); 
    Serial.println("\nFirst Message Sent\n"); 
    digitalWrite(ledPin2, LOW); 

    delay (60000); 

    digitalWrite(ledPin2, HIGH); 
    delay(1000); 
    Serial.print("Message to mobile number: "); 
    Serial.println(number2); 
    // sms text 
    Serial.println("SENDING"); 
    Serial.println(); 
    Serial.println("Message:"); 
    Serial.println(txtMsg); 
    // send the second message 
    smstwo.beginSMS(number2); 
    smstwo.print(txtMsg); 
    smstwo.endSMS(); 
    Serial.println("\nSecond Message Sent\n"); 
    digitalWrite(ledPin2, LOW); 
    } 
}