Cadastrar números de telefones p/ execução de comando

Olá Pessoal,
Estou desenvolvendo um projeto com arduino duemilanove e shield sim900D.É o acionamento de um portão elétrico via sms e o protótipo manda outro sms com a confirmação do comando.
Já está quase tudo pronto no projeto, porém gostaria de obter ajuda quanto à seguinte questão:
Necessito cadastrar alguns números de telefone para que apenas esses números executem os comandos, e caso o nº não esteja cadastrado informar o acesso negado no monitor.
Segue abaixo o código que estou utilizando:

#include <GSM.h>

#define PINNUMBER “”

GSM gsmAccess;
GSM_SMS sms;

int powerkey = 5;
int statuspin = 6;
int pinState = 0;

String inputString = “”;
char senderNumber[20];
int led1 = 13;
int led2 = 12;
char c;
boolean notConnected = true;

void setup()
{
inputString.reserve(200);
pinMode(powerkey, OUTPUT);
pinMode(statuspin, INPUT);
pinMode(pinState, INPUT);

Serial.begin(9600);
Serial.println(“Serial Conectada”);
pinState = digitalRead(statuspin);

if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
}
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER,false)==GSM_READY)
{
notConnected = false;
Serial.println(“rede localizada”);
}
else
{
Serial.println(“Não conectado”);
delay(100);
//pinState = LOW;
}
}
pinMode(led1, OUTPUT);
digitalWrite(led1, LOW);
pinMode(led2, OUTPUT);
digitalWrite(led2, LOW);

Serial.println(“Aguardando novas mensagens”);
}

void loop()
{

pinState = digitalRead(statuspin);

if(pinState==LOW){
digitalWrite(powerkey, HIGH); // set the LED on
delay(2000);
digitalWrite(powerkey, LOW);
}

// If there are any SMSs available()
if (sms.available())
{
Serial.println(“Mensagem recebida de:”);
sms.remoteNumber(senderNumber, 20);
Serial.println(senderNumber);
if(sms.peek()==‘A’)
{
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
Serial.println(“Portao Aberto”);
if(digitalRead(led2)==LOW&&(led1)==HIGH);
{
Serial.println(“Confirma Portao aberto”);
sms.beginSMS(senderNumber);
sms.print(“Portao Aberto”);
sms.endSMS();
}

}
else if (sms.peek()==‘F’)
{
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
Serial.println(“Portao fechado”);

if(digitalRead(led1)==LOW&&(led2)==HIGH);

{
Serial.println(“Confirma portao fechado”);
sms.beginSMS(senderNumber);
sms.print(“portao fechado”);
sms.endSMS();
}
}
// Read message bytes and print them
while(c=sms.read())
Serial.print(c);

Serial.println("\nFIM DA MENSAGEM");
sms.flush();
Serial.println(“MENSAGEM APAGADA”);
Serial.println("\nCOMPLETO!\n");
sms.flush();
} //Fim da verificação de mensagens
delay(100);

}

Se alguém puder dar alguma dica, ficarei muito agradecido.
Abraço

Alencar

Não vi um único ponto de exclamacão no teu post... qual é a tua dúvida em concreto?

Olá, Na verdade o código da maneira que está já funciona. Só que eu gostaria de acrescentar alguns números como permitidos para executar os comandos e não sei como fazer.

Nesta parte o programa verifica se tem sms e imprime no monitor if (sms.available()) { Serial.println("Mensagem recebida de:"); sms.remoteNumber(senderNumber, 20); Serial.println(senderNumber); //talvez seja possível criar uma outra condição neste ponto para verificar se o número que enviou o sms tem permissão para executar os comandos que estão a seguir. Só que antes disso acredito que tenho que colocar o(s) Número(s) que eu quero que tenha permissão, mas também não sei como fazer isso.

Até +

Crias uma variável com os numeros... e comparas. Se o numero recebido for uma string, usas a strcmp().

if(senderNumber == 933456789) {
            Serial.print("numero autorizado");
            // faz o resto...
            }

A uns meses atraz tambem fiz um projecto que faz de alarme e controlador GSM com reles Eu fazia assim

char authorizedNumber[] = {"+351966666666"};
...
if (strcmp(*messageBody, "Alarme1")  == 0 && strcmp(*senderID, authorizedNumber) == 0) 
    {
     writeAlarmStatus(1);
     lcd.setCursor(1,3);
     lcd.print("Alarme Activado");
     digitalWrite(alarmLED,HIGH);
    }

Olhando assim de repente para o teu codigo uma coisa que nao gosto de ver é usares Strings.