bonjour je souhaiterais lire des SMS provenant d'un shield GSM
voici mon code:
#include <GSM.h>
#define PINNUMBER ""
GSM gsmAccess;
GSM_SMS sms;
int DIMSPin = 53; //capteur de mvts infrarouge branché au pin 53
int DIMS;
int PortePin = 4; //capteur de contacte de la porte branché au pin 4
int porte;
int detection = 1;
char senderNumber[20];
boolean etatalarme = false;
int pinordi1 =12;
void setup()
{
Serial.begin(9600);
pinMode(PortePin, INPUT);
pinMode(DIMS, INPUT);
pinMode(pinordi1, OUTPUT);
Serial.print("initialisation");
boolean notConnected = true;
while(notConnected)
{
Serial.print(".");
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
// Serial.println("Not connected");
delay(1000);
}
}
Serial.print("\n");
Serial.println("GSM initialized");
tone(6,500,1000);
}
void loop()
{
if (etatalarme == true)
{
/****************************PARTIE 1*****************************/
porte = digitalRead(PortePin);
delay(1000);
DIMS = digitalRead(DIMSPin);
if (DIMS==1 && porte==1 && detection==1)
{
Serial.println("detected");
tone(6,900,1000);
sms.beginSMS("0609732367");
sms.print("un intru est rentré dans ta chambre");
sms.endSMS();
detection=0;
}
if (porte == 0)
{
detection=1;
}
}
/****************************PARTIE 2*****************************/
char c[10];
if (sms.available())
{
tone(6,900,1000);
if(sms.peek()=='#'||sms.available()>10)
{
Serial.println("Discarded SMS");
sms.flush();
}
sms.remoteNumber(senderNumber, 20);
for (int i=1; i<=sms.available();i++) // <----- le problème se trouve ici !
{
c[i]=sms.read();
Serial.println("lecture");
}
sms.flush();
Serial.println("test");
if (strcmp(senderNumber,"+33609732367")==0)
{
Serial.println("bon numero");
Serial.println(c);
if (strcmp(c,"AA")==0)
{
Serial.println(1);
etatalarme = true;
}
else if (strcmp(c,"EA")==0)
{
Serial.println(2);
etatalarme = false;
}
else if (strcmp(c,"AP")==0)
{
Serial.println(3);
digitalWrite(pinordi1, HIGH);
delay(500);
digitalWrite(pinordi1, LOW);
}
else if (strcmp(c,"EP")==0)
{
Serial.println(4);
digitalWrite(pinordi1, HIGH);
delay(500);
digitalWrite(pinordi1, LOW);
}
}
}
}
inutile de vous intéresser à la partie 1 car elle fonctionne mon problème vient de la partie 2 à l'endroit indiqué
peu importe la taille du message seul la première lettre est lu
voici le moniteur série
j'ai par la suite remplacé le "for" par ce code
int i=0;
while (sms.available())
{
c[i++]=sms.read();
}
mais impossible de sortir de la boucle !
si quelqu'un a une idée surtout n’hésitez pas
merci d'avance