2017-03-09 8 views
-2

안녕하세요, 나는 서로 다른 코드를 2 개 만들었습니다. 그런 다음 작동하는 것을 확인한 후에 문제를 해결했습니다. 내 GSM 모듈을 제어하기 위해 GSM.h를 사용했고, GPS를 사용하기 위해 SoftwareSerial.h를 사용했습니다.Pin RX, SoftwareSerial Arduino없이 TX 정의

나는 이것들을 코드에 결합하려고 시도했는데,이 2 개의 라이브러리는 서로 충돌합니다.

나를 도와 줄 수 있습니까?

https://github.com/PaulStoffregen/AltSoftSerial

는 일련의 특정 핀을 사용하도록 요구되어이 라이브러리의 단점 :

내 코드

//GSM 
#include <GSM.h> 
#define PINNUMBER "3805" 
GSM gsmAccess; // include a 'true' parameter for debug enabled 
GSM_SMS sms; 
//N de telefone de envio 
char remoteNumber[20]= "914181875"; 
//Conteudo do SMS 
char txtMsg[200]="Tester"; 
int val = 0; 
//GPS 
//#include <SoftwareSerial.h> 
#include <TinyGPS.h> 
TinyGPS gps; 
SoftwareSerial ss(4, 3); 

static void print_float(float val, float invalid, int len, int prec); 

int button = 7; 

void setup() 
{ 
    // initialize serial communications 
    pinMode(button, INPUT); 
    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"); 
} 

void loop() 
{ 
val = digitalRead(button); 
if (val == HIGH){ 
    sendSMS(); 
    } 
} 

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

. [좋은 질문을하는 방법] (http://stackoverflow.com/help/how-to-ask)을보고 문제가 무엇인지, 어떤 오류가 있는지, 무엇을 기대하는지 얻을, 등등. –

답변

0

내가 대신 SoftwareSerial의 AltSoftSerial 라이브러리를 사용하려고 할 것입니다 현재 사용중인 핀과 다른 GPS 하드웨어와의 통신 :

// AltSoftSerial always uses these pins: 
// 
// Board   Transmit Receive PWM Unusable 
// -----   -------- ------- ------------ 
// Teensy 3.0 & 3.1 21  20   22 
// Teensy 2.0   9  10  (none) 
// Teensy++ 2.0  25   4  26, 27 
// Arduino Uno  9   8   10 
// Arduino Leonardo 5  13  (none) 
// Arduino Mega  46  48  44, 45 
// Wiring-S   5   6   4 
// Sanguino   13  14   12 

나는 테스트 할 수있는 하드웨어를 가지고 있지 않지만 다음 코드는 컴파일 않습니다 : 당신이 무엇을 요구 불분명

//GSM 
#include <GSM.h> 
#define PINNUMBER "3805" 
GSM gsmAccess; // include a 'true' parameter for debug enabled 
GSM_SMS sms; 
//N de telefone de envio 
char remoteNumber[20]= "914181875"; 
//Conteudo do SMS 
char txtMsg[200]="Tester"; 
int val = 0; 
//GPS 
#include <AltSoftSerial.h> 
AltSoftSerial ss; 
#include <TinyGPS.h> 
TinyGPS gps; 

static void print_float(float val, float invalid, int len, int prec); 

int button = 7; 

void setup() 
{ 
    // initialize serial communications 
    pinMode(button, INPUT); 
    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"); 
} 

void loop() 
{ 
val = digitalRead(button); 
if (val == HIGH){ 
    sendSMS(); 
    } 
} 

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

당신의 도움이 Thx, 네 컴파일하지만 하드웨어가 그들 사이의 포트 충돌을 시작하지 않습니다. 어떻게 그만합니까? –