Bueno, ya he conseguido hacer algo.
Como pensaba, no me ha hecho falta usar una librería para emplear el puerto de comunicación UART2.
Al venir definido, basta con habilitarlo en código para que funcione.
Ya me parecía, ya que es una constumbre bastante empleada en la programación de Arduino, al copiar un código realizado para un Arduino UNO y pegarlo para usarlo en un MEGA.
Cuando realmente el MEGA, ya los tiene definidos de fábrica.
Al grano.
He realizado este código para hacer una llamada con una SIM900 y de momento funciona.
Lo cuelgo para el que le sirva de desarrollo:
#define RXD2 16
#define TXD2 17
int On=2;
void setup ( )
{
Serial.begin(115200);
//Serial2.begin(19200);
Serial2.begin(19200,SERIAL_8N1,RXD2,TXD2); //SERIAL_8N1 8-bit No parity 1 Stop bit
pinMode(On,OUTPUT);
SIM900power(); //Apagar el módulo
delay(20000); // Dar tiempo para iniciar y conseguir RED.
// No hay un modo mas inteligente de hacerlo?
}
void SIM900power ( )
// Software equivalente a presionar en el escudo GSM el botón "Power"
{
digitalWrite(On,HIGH);
delay(2000);
digitalWrite(On,LOW);
delay(5000);
}
void callSomeone ( )
{
Serial.println("Comenzando la llamada");
Serial2.println("ATD + +número telefono;") ; // Número de telefono. Formato Internacional
Serial.println("Marcando Numero");
delay(100);
Serial.println("llamando");
Serial2.println();
delay(30000 ) ; // Esperar 30 segundos...
Serial2.println("ATH") ; // Colgar
Serial.println("Llamada Realizada");
}
void loop ( )
{
callSomeone ( ); // Llama
SIM900power( ); // Apaga el telefon
while (1); // Hazlo
}
De todas formas, si alguien me puede indicar, el porque existe una librería, la cual emplean para definir los pines 16 y 17, por HardWare, se lo agradezco.
Me da que pensar, que a mi me funcione, de manera simple, y alguien s ha parado a desarrollar una librería, la cual emplea mucha gente para definir los puertos que viene ya predefinidos de serie.
Igual evito interferencias.
![]()