Bonjour.
Je suis en train de concevoir un scketch pour une alarme avec un envoi SMS via une carte SIM900.
Le scketch fonctionne, j'envoi le message SMS mais celui-ci est envoyé en boucle, non-stop, comment éviter ça ???
Merci.
// *****************************************
if (digitalRead(IMA) == LOW) // COMMANDE M/A
{
// MESSAGE GSM MISE EN MARCHE ALARME
mySerial.println("AT+CMGS=\"+33xxxxxxxxx\""); mySerial.println("MISE EN MARCHE ALARME"); mySerial.write(26);
if ( LEDState == HIGH )
{
LEDState == HIGH;
if ( (millis() - rememberTime) >= onDuration)
{
LEDState = LOW;
rememberTime = millis();
}
}
else
{
if ( (millis() - rememberTime) >= offDuration)
{
LEDState = HIGH;
rememberTime = millis();
}
}
digitalWrite(LEDpin, LEDState);
// **************************************** GESTION DES ALARMES
// MULTIPLEXEUR 74HC165
for ( byte i = 1; i < NUM_OF_74HC165 ; i++ )
{
if ( previous[i] != received[i] )
{
previous[i] = received[i];
lcd.setCursor(0, 0); lcd.print(i, DEC); lcd.print(" "); lcd.print(received[i], DEC); lcd.print(" ");
if (received[i] == 1)
{
mySerial.println("AT+CMGS=\"+33xxxxxxxxx\""); mySerial.println("ALARME ZONE 1"); mySerial.write(26);
}
// et la suite jusqu'à ce que received[i] == 7
}
}
// ********************
}
else
{
lcd.setCursor(0, 0); lcd.print(" ");
mySerial.println("AT+CMGS=\"+33xxxxxxxxx\""); mySerial.println("MISE A L'ARRET ALARME"); mySerial.write(26);
}
// FIN M/A
Les indices des tableaux vont de 0 à n-1 si n est la taille du tableau. Vous ne débordez pas parce que vous avez utilisé < mais vous ne traitez pas le 0
La gestion des activations ne contient pas de traitement anti rebond ni d’attente de fin d’appui. Qu’est-ce qui est connecté au bout des 74HC165?
Merci pour tout, je pense que je vais changer de fonctionnement, comme je n'ai que 6 détections + 2 autoprotections, je pense que je vais m'orienter vers une détection directe sur le UNO avec 6 détections et une seule autoprotection regroupant l'ensemble des 6 entrées ainsi que celle du coffret.
Encore Merci.