ARDUINO LEONARDO Y MODULO GSM SIM900

AYUDA POR FAVOR...!!!! no puedo terminar mi proyecto :frowning: no se que parte del codigo pudiera estar mal, el pin 6 que es el que desenergiza todo al energizar al arduino y el modulo desernergiza inmediatamente, que tendria que hacer o agregarle para que no suceda y poder enviar y recibir sms del modulo, estoy algo enrredado en la parte de guardar la clave :S aqui el codigo :

#include <SoftwareSerial.h>
#include <EEPROM.h>
SoftwareSerial SIM900(7,8);

char a,m,n,p,q,r;
int i,i2,i3;
int b,c,memo;
void setup()
{
a=0;
pinMode(5, INPUT); // LEE EL ESTADO DE LA BOYA
pinMode(4, OUTPUT); // ENCENDER/ APAGAR MOTOR
pinMode(3, OUTPUT); // IDENTIFICADOR DE SENSADO
pinMode(6, OUTPUT); // APAGAR TOTAL EL SISTEMA ( corte de energia)
pinMode(9, OUTPUT); // ENCENDER LA TARJETA GSM
Serial.begin(19200);
SIM900.begin(19200);
SIM900power(); //ENCENDER LA TARJETA GSM
delay(15000); //TIEMPO PARA COGER LA SEÑAL

SIM900.print("AT+CMGF=1\r"); //MODO MENSAJES
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r"); //LA TARJETA ENVIA TODOS LOS MENSAJES AL ARDUINO VIA SERIAL

delay(100);
}

void SIM900power() //ENCENDER LA TARJETA
{
digitalWrite(9, HIGH);
delay(10000);
digitalWrite(9, LOW);
delay(7000);
memo=EEPROM.read(0);
///////
if(memo==1) // HAY UNA CLAVE GUARDADA
{
m=EEPROM.read(1);
delay(20);
n=EEPROM.read(2);
delay(20);
p=EEPROM.read(3);
delay(20);
q=EEPROM.read(4);
delay(20);
r=EEPROM.read(5);
delay(20);
}
else //NO HAY CLAVE GUARDADA
{
EEPROM.write(0,1); //INDICADOR QUE SE GUARDO UNA CLAVE
EEPROM.write(1,'a');
EEPROM.write(2,'b');
EEPROM.write(3,'c');
EEPROM.write(4,'d');
EEPROM.write(5,'e');
}
/////
}
/////

void llamar()
{
for(i3=1;i3<=2;i3++) //LLAMAR 2 VECES
{
SIM900.println("ATD + +526672657848;"); //D=Dial = llamar al numero del usuario
delay(100);
SIM900.println();
delay(15000);
SIM900.println("ATH"); //H=Hang up = colgar
delay(3000);
}
}
/////////

void loop()
{
digitalWrite(3,HIGH); // LED INDICADOR DE SENSADO

if(SIM900.available()>0)
{
a=SIM900.read(); //obtenemos los caracteres del GSM
///////// DESCONECTAR
if(a==m)
{
delay(10);
a=SIM900.read();
if(a==n)
{
delay(10);
a=SIM900.read();
if(a==p)
{
delay(10);
a=SIM900.read();
if(a==q)
{
delay(10);
a=SIM900.read();
if(a==r)
{
delay(10);
SIM900.print("AT+CMGF=1\r"); ///MODO MENSAJE
delay(100);
SIM900.print("AT + CMGS = "+526672657848""); //NUMERO DE USUARIO
delay(100);
SIM900.println("SISTEMA DESCONECTADO"); //MENSAJE HA ENVIAR
delay(100);
SIM900.println((char)26); /// TERMINO LA COMUNICACION
delay(100);
SIM900.println();
delay(100);
SIM900.flush ();

digitalWrite(6,HIGH); //APAGAMOS TODO EL SISTEMA
delay(80000);
}
}
}
}
}
else
{
//////// cambio de clave
if(a=='@')
{
a=SIM900.read();
if(a==m)
{
delay(10);
a=SIM900.read();
if(a==n)
{
delay(10);
a=SIM900.read();
if(a==p)
{
delay(10);
a=SIM900.read();
if(a==q)
{
delay(10);
a=SIM900.read();
if(a==r)
{
delay(10);
a=SIM900.read();
if(a=='*')
{
delay(10);
a=SIM900.read();
delay(10);
EEPROM.write(1,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(2,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(3,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(4,a);
delay(20);
a=SIM900.read();
delay(10);
EEPROM.write(5,a);
delay(20);

SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = "+526672657848"");
delay(100);
SIM900.println("CLAVE NUEVA GUARDADA");
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
SIM900.flush();
////////
m=EEPROM.read(1);
delay(20);
n=EEPROM.read(2);
delay(20);
p=EEPROM.read(3);
delay(20);
q=EEPROM.read(4);
delay(20);
r=EEPROM.read(5);
delay(20);
/////////
}
}
}
}
}
}
}
else
{
/////CONSULTA
if(a=='#')
{
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = "+ 526672657848"");
delay(100);
if(digitalRead(5)== LOW)
{
SIM900.println("MOTOR APAGADO");
}
else
{
if(digitalRead(5)== HIGH)
{
SIM900.println("MOTOR ENCENDIDO");
}
}
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
SIM900.flush();
}
}
}
}
////////////////////////////////
if(digitalRead(5)== HIGH) //sensor
{
b=1;
c=1;
digitalWrite(4,HIGH); // ENCENDIDO DE MOTOR
while(b==1)
{

llamar();
delay(100);
SIM900.print("AT+CMGF=1\r"); // set SMS mode to text
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
SIM900.flush();
delay(10000);
SIM900.flush();
for(i=1;i<=254;i++)
{
delay(290);
////////////////
if(SIM900.available() >0)
{
if(c==1)
{
c=2;
for(i2=1;i2<=45;i2++) /// numero de caracteres "basura"
{
a=SIM900.read();
}
}
a=SIM900.read();
if(a==m)
{
delay(10);
a=SIM900.read();
if(a==n)
{
delay(10);
a=SIM900.read();
if(a==p)
{
delay(10);
a=SIM900.read();
if(a==q)
{
delay(10);
a=SIM900.read();
if(a==r)
{
SIM900.flush();
delay(10);
digitalWrite(4,LOW); //APAGAR EL MOTOR
b=2;
i=255;
////////////
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT + CMGS = "+526672657848"");
delay(100);
SIM900.println("MECATRONICA UNT :)");
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
SIM900.flush();
///////////////
}
}
}
}
}
}
//////////////
}
}
}
}