我正在做一個項目,我將一個GPS模塊,數字羅盤和一個ZigBee(XBee調制解調器)連接到Arduino。順便說一下,我正在使用Eclipse IDE來完成這個項目,所以我把我的代碼分解成了幾個庫。如何在Arduino的庫中使用多個軟件序列?
XBee目前使用硬件UART,它工作正常。 GPS模塊和數字羅盤都使用Software Serial。
我的問題是,如果我實例化兩個軟件連續劇,只有最新的一個將工作。
以下是我的示例代碼。
void CSensor::initSensors()
{
//For GPS
this->gpsSerial = new SoftwareSerial(2, 3);
this->gpsSerial->begin(9600);
//For digital compass
this->compassSerial = new SoftwareSerial(6, 7);
this->compassSerial->begin(9600);
}
gpsSerial
被聲明爲CSensor
類的指針構件。 - >SoftwareSerial* gpsSerial
; compassSerial
也被宣佈爲相同 - >SoftwareSerial* compassSerial;
在上面的示例代碼中,只有數字羅盤才能工作,GPS將不起作用。但是,如果我交換代碼的位置,使其看起來像這樣:
void CSensor::initSensors()
{
//For digital compass
this->compassSerial = new SoftwareSerial(6, 7);
this->compassSerial->begin(9600);
//For GPS
this->gpsSerial = new SoftwareSerial(2, 3);
this->gpsSerial->begin(9600);
}
GPS現在可以工作,但數字羅盤不會。我認爲軟件串行有問題。解決辦法是什麼?
我發現我的UART是在引腳0,1而不是2,3,正如該站點所說的那樣。只是說可能會在這裏降落的人。 – kechapito