Boa noite a todos...
Tenho aqui um projecto em que estou com algumas dificuldades...
Tenho um arduino UNO com uma shield GSM e uma Shield Bluetooth.
Já consigo "falar" com uma GPS bluetooth e obter dados válidos, pretendia enviar uma sms após conseguir um fix no GPS, ambas as shields usam SoftwareSerial, haverá algum problema ao definir 2 "devices" em pinos diferentes?
o código para o bluetooth é o seguinte:
#include <SoftwareSerial.h>
#include <nmea.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);
SoftwareSerial nmeaSourceA(5, 4);
NMEA nmeaDecoder(ALL);
void setup()
{
Serial.begin(9600);
//Inicio do LCD
lcd.begin(20, 4);
lcd.setCursor(5,0);
lcd.print("GPS/LCD/GSM");
//Fim do LCD
//Inicio do Bluetooth
nmeaSourceA.begin(38400);
nmeaSourceA.println("AT+ORGL");
delay(1000);
nmeaSourceA.println("AT+RMAAD");
delay(1000);
nmeaSourceA.println("AT+ROLE=1");
delay(1000);
nmeaSourceA.println("AT+RESET");
delay(1000);
nmeaSourceA.println("AT+PSWD=6268");
delay(1000);
nmeaSourceA.println("AT+INIT");
delay(1000);
nmeaSourceA.println("AT+PAIR=8,1B,B8094,10");
delay(1000);
nmeaSourceA.println("AT+BIND=8,1B,B8094");
delay(1000);
nmeaSourceA.println("AT+CMODE=0");
delay(1000);
nmeaSourceA.println("AT+LINK=8,1B,B8094");
delay(1000);
}
void loop()
{
while (nmeaSourceA.available())
{
if (nmeaDecoder.decode(nmeaSourceA.read()))
{
Serial.print("Latitude = ");
lcd.setCursor(0,1);
lcd.print("Latitude: ");
lcd.print(nmeaDecoder.gprmc_latitude());
Serial.println(nmeaDecoder.gprmc_latitude());
Serial.print("Longitude = ");
lcd.setCursor(0,2);
lcd.print("Longitude: ");
lcd.print(nmeaDecoder.gprmc_longitude());
Serial.println(nmeaDecoder.gprmc_longitude());
Serial.print(" Status = ");
Serial.println(nmeaDecoder.gprmc_status());
lcd.setCursor(0,3);
lcd.print("Status: ");
lcd.print(nmeaDecoder.gprmc_status());
if (nmeaDecoder.gprmc_status() == 'A')
{
Serial.println("Enviou mensagem -> A");
}
if (nmeaDecoder.gprmc_status() == 'V')
{
Serial.println("Enviou mensagem -> V");
}
}
}
}
(a biblioteca nmea é usada para fazer o parse dos dados do gps.)
Resumindo, a minha dúvida é saber se posso fazer algo do género:
SoftwareSerial Sim900Serial(2, 3);