/* .................Sketch d'un transmetteur d'alarme avec afficheur 16X2 et clavier 4X4............................. allumer le transmetteur une fois pret appuyez sur la touche E cela affiche le menu. le choix de ""voir"" ou ""configurer"" les numeros se fait avec la touche G ou D (gauche droite) validation ce fait avec la touche E puis la demande du mode de transmition est faite une fois le numero entré choix 1 pour vocal, choix 0 pour SMS une fois valider il est demandé d'entrer le numero du 2em utilisateur si pas d'autre utilisateur annuler avec la touche Q qui sort du menu et met le transmetteur en attente pret a servir. 4 commandes d'entrée déclenchent un appel téléphonique, lorsque la communication est établie on active le fichier mp3 correspondant a l'entrée activée. CRÉE PAR MATTH122 */ #define DEBUG #include #include #include #include #include //bus SPI #include //SD card #include //SD card tools #include //shield library SFEMP3Shield MP3player; //player SdFat sd; //card LiquidCrystal lcd(41, 39, 37 , 35, 33, 31); bool inMenu = false; //*********** creation symbole fleche vers le bas***************** byte bas[8] = { // déclaration d’un tableau de 8 octets B00100, // définition de chaque octet au format binaire B00100, // 1 pour pixel affiché – 0 pour pixel éteint B00100, // les 3 bits de poids forts ne sont pas écrits car inutiles B00100, B10101, B01010, B00100, }; int fleche =0; //================================================================== //*****************DECLARATION DES VARIABLES************************ const int volume = 40;// VOLUME DE LECTURE PLUS LE CHIFFRE EST HAUT MOINS LE SOND EST FORT const int Bouton1 = A0; // utilisez les entrées de votre choix, si vous en ajouter modifier aussi le void loop // const int Bouton2 = A1; // const int Bouton3 = A2; // const int Bouton4 = A3; boolean etatBouton1 = 0; // boolean etatBouton2 = 0; // boolean etatBouton3 = 0; // boolean etatBouton4 = 0; int appel = 1; char key; int i; //********* enregistrement des N° de telephone*********** char numero1[12]; char numero2[12]; char numero3[12]; char numero4[12]; //======================================================= //*********** VALIDATION DU MODE VOCAL ****************** int vocal1 = 0; int vocal2 = 0; int vocal3 = 0; int vocal4 = 0; //===================================================== //************* VALIDATION DU MODE SMS********************* int SMS1 = 0; int SMS2 = 0; int SMS3 = 0; int SMS4 = 0; //===================================================== //*************DECLARATION DU CLAVIER************** const byte ROWS = 4; //four rows const byte COLS = 4; //three columns char keys[ROWS][COLS] = { {'1', '2', '3', 'Q'}, {'4', '5', '6', 'H'}, {'7', '8', '9', 'B'}, {'0', 'G', 'D', 'E'} }; byte rowPins[ROWS] = {30, 32, 34, 36}; byte colPins[COLS] = {28, 26, 24, 22}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //================================================= //*********** ETIQUETTE DU MENU ******************* MenuBackend menu = MenuBackend(menuUseEvent, menuChangeEvent); MenuItem Voir = MenuItem("VOIR UTILISATEUR", 1); MenuItem User1 = MenuItem("UTILISATEUR 1", 2); MenuItem User2 = MenuItem("UTILISATEUR 2", 2); MenuItem User3 = MenuItem("UTILISATEUR 3", 2); MenuItem User4 = MenuItem("UTILISATEUR 4", 2); MenuItem Config = MenuItem("CONFIGURATION", 1); MenuItem ConfigUser1 = MenuItem("Utilisateur 1", 3); MenuItem Mode1 = MenuItem("CHOIX DU MODE n1", 4); MenuItem ConfigUser2= MenuItem("Utilisateur 2", 3); MenuItem Mode2 = MenuItem("CHOIX DU MODE n2", 4); MenuItem ConfigUser3 = MenuItem("Utilisateur 3", 3); MenuItem Mode3 = MenuItem("CHOIX DU MODE n3", 4); MenuItem ConfigUser4 = MenuItem("Utilisateur 4", 3); MenuItem Mode4 = MenuItem("CHOIX DU MODE n4", 4); //=============================================== // *********** STRUCTURE DU MENU ***************** //Cette fonction cree le menu et connect les differents items enssemble void menuSetup() { menu.getRoot().add(Voir); // Set the root menu, Voir.add (User1); User1.add (User2); User1.addLeft (Voir); User2.add (User3); User2.addLeft (Voir); User3.add (User4); User3.addLeft (Voir); User4.addLeft (Voir); User4.add (User1); Voir.addRight (Config); Config.add (ConfigUser1); ConfigUser1.addLeft (Mode1); Mode1.addLeft (ConfigUser1); Mode1.add (Mode1); ConfigUser1.addLeft (Config); ConfigUser1.add (ConfigUser2); ConfigUser2.addRight (Mode2); Mode2.addLeft (ConfigUser2); Mode2.add (Mode2); ConfigUser2.addLeft (Config); ConfigUser2.add (ConfigUser3); ConfigUser3.addRight (ConfigUser3); Mode3.addLeft (ConfigUser3); Mode3.add (Mode3); ConfigUser3.addLeft (Config); ConfigUser3.add (ConfigUser4); ConfigUser4.addRight (ConfigUser3); Mode4.addLeft (ConfigUser4); Mode4.add (Mode4); ConfigUser4.add(ConfigUser1); User4.addLeft (Config); User4.add (User1); Config.addRight (Voir); } //==================================================== //********* EVENEMENT DU MENU ***touche validation **** void menuUseEvent(MenuUseEvent used) { inMenu = !inMenu; if (inMenu) { lcd.clear(); if(menu.getCurrent().getName() =="MenuRoot") { menu.moveDown(); } lcd.print(menu.getCurrent().getName()); } if (used.item.getName() == "VOIR UTILISATEUR") { lcd.clear(); menu.moveDown(); } if (used.item.getName() == "CONFIGURATION") { menu.moveDown(); } //********** ACTION DU MENU VOIR ****************** if (used.item.getName() == "UTILISATEUR 1") { lcd.clear(); lcd.print(numero1); //Affichage sur 1ere ligne du numero enregistrer lcd.setCursor(0, 1); lcd.print("VOCAL= SMS= " ); // affichage text des modes lcd.setCursor(7, 1); // decalage du curseur pour etre accolé au text "VOCAL=" lcd.print(vocal1); // Affichage de l'int Vocal1 lcd.setCursor(14, 1); // decalage du curseur lcd.print(SMS1); // affichage de l'int SMS1 } //==============UTILISATEUR 2============== if (used.item.getName() == "UTILISATEUR 2") { lcd.clear(); lcd.print(numero2); lcd.setCursor(0, 1); lcd.print("VOCAL= SMS= " ); lcd.setCursor(7, 1); lcd.print(vocal2); lcd.setCursor(14, 1); lcd.print(SMS2); } //==============UTILISATEUR 3================== if (used.item.getName() == "UTILISATEUR 3") { lcd.clear(); lcd.print(numero3); lcd.setCursor(0, 1); lcd.print("VOCAL= SMS= " ); lcd.setCursor(7, 1); lcd.print(vocal3); lcd.setCursor(14, 1); lcd.print(SMS3); } //============= UTILISATEUR 4 =================== if (used.item.getName() == "UTILISATEUR 4") { lcd.clear(); lcd.print(numero4); lcd.setCursor(0, 1); lcd.print("VOCAL= SMS= " ); lcd.setCursor(7, 1); lcd.print(vocal4); lcd.setCursor(14, 1); lcd.print(SMS4); } //======================================================= /*********** ACTION DU MENU CONFIGURATION ************** ======================================================= A la selection de l'utilisateur un appuis sur entrée valide le choix il est ensuite demmandé d'entrer le numero de telephone de l'utilisateur valider par entrer, il est ensuite demandé de choisir le mode d'appel, vocal choix 1 ou par SMS choix 0 par defaut les deux sont a 0 si aucun choix les appel ne seront pas effectués ************ CONFIGURATION UTILISATEUR N3**************** */ if (used.item.getName() == "Utilisateur 1") // action si item "Utilisateur 1" choisi { lcd.clear(); lcd.print("ENTRER NUMERO"); // Affichage lcd.setCursor(0, 1); delay(1000); getNumero1(); // mise en memoire du numero entrée lcd.setCursor(0, 0); lcd.print("ENREGISTREMENT "); // affichage lcd.setCursor(0, 1); lcd.print(numero1); //affichage de confirmation de l'enregistrement du numero delay(500); lcd.clear(); menu.moveRight(); // decalage du menu sur item suivant "choix du mode d'appel" } if (used.item.getName() == "CHOIX DU MODE n1") // action pour le choix du "mode d'appel" { lcd.setCursor(0, 0); lcd.print("APPEL VOCAL==> 1"); lcd.setCursor(0, 1); lcd.print("ENVOI DE SMS=> 0"); vocal1 = setVocal1(); // enregistrement du choix du mode vocal lcd.clear(); if (vocal1 == 1) { // si le mode vocal est choisi on ne met pas le mode SMS SMS1 = 0; } else { SMS1 = 1; // si le mode vocal n'est pas choisi on met en mode SMS } menu.moveLeft(); menu.moveDown(); //deplacement dans le menu pour allez a l'utilisateur suivant } //==================================================== //***** CONFIGURATION UTILISATEUR N°2 ***************** if (used.item.getName() == "Utilisateur 2") { lcd.clear(); lcd.print("ENTRER NUMERO"); lcd.setCursor(0, 1); delay(1000); getNumero2(); lcd.setCursor(0, 0); lcd.print("ENREGISTREMENT "); lcd.setCursor(0, 1); lcd.print(numero2); delay(500); lcd.clear(); menu.moveRight(); } if (used.item.getName() == "CHOIX DU MODE n2") { lcd.setCursor(0, 0); lcd.print("APPEL VOCAL==> 1"); lcd.setCursor(0, 1); lcd.print("ENVOI DE SMS=> 0"); vocal2 = setVocal2(); lcd.clear(); if (vocal2 == 1) { SMS2 = 0; } else { SMS2 = 1; } menu.moveLeft(); menu.moveDown(); } //================================================= //*** CONFIGURATION UTILISATEUR N3***************** if (used.item.getName() == "Utilisateur 3") { lcd.clear(); lcd.print("ENTRER NUMERO"); lcd.setCursor(0, 1); delay(1000); getNumero3(); lcd.setCursor(0, 0); lcd.print("ENREGISTREMENT "); lcd.setCursor(0, 1); lcd.print(numero3); delay(500); lcd.clear(); menu.moveRight(); } if (used.item.getName() == "CHOIX DU MODE n3") { lcd.setCursor(0, 0); lcd.print("APPEL VOCAL==> 1"); lcd.setCursor(0, 1); lcd.print("ENVOI DE SMS=> 0"); vocal3 = setVocal3(); lcd.clear(); if (vocal3 == 1) { SMS3 = 0; } else { SMS3 = 1; } menu.moveLeft(); menu.moveDown(); } //===================================================== //*** CONFIGURATION UTILISATEUR N4********************* if (used.item.getName() == "Utilisateur 4") { lcd.clear(); lcd.print("ENTRER NUMERO"); lcd.setCursor(0, 1); delay(1000); getNumero4(); lcd.setCursor(0, 0); lcd.print("ENREGISTREMENT "); lcd.setCursor(0, 1); lcd.print(numero4); delay(500); lcd.clear(); menu.moveRight(); } if (used.item.getName() == "CHOIX DU MODE n4") { lcd.setCursor(0, 0); lcd.print("APPEL VOCAL==> 1"); lcd.setCursor(0, 1); lcd.print("ENVOI DE SMS=> 0"); vocal4 = setVocal4(); lcd.clear(); if (vocal4 == 1) { SMS4 = 0; } else { SMS4 = 1; } menu.toRoot(); lcd.clear(); lcdTransmetteur(); } } //====================================================== // ******AFFICHAGE ATTENTE "TRANSMETTEUR PRET" ******* void lcdTransmetteur() { lcd.clear(); lcd.print("< TRANSMETTEUR >"); lcd.setCursor(0, 1); lcd.print(" > PRET < "); } //======================================================= //***Affichage evenement au changement de page du menu**** void menuChangeEvent(MenuChangeEvent changed) { if (changed.to.getName() == "VOIR UTILISATEUR") { lcd.setCursor(0,1); lcd.print("E=OK,=config"); } if (changed.to.getName() == "CONFIGURATION") { lcd.setCursor(0,1); lcd.print("E=OK,=Retour"); } if (changed.to.getName() == "UTILISATEUR 1") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "UTILISATEUR 2") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "UTILISATEUR 3") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "UTILISATEUR 4") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "Utilisateur 1") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "Utilisateur 2") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "Utilisateur 3") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "Utilisateur 4") { lcd.setCursor(0,1); lcd.print("suivant touche"); lcd.setCursor(15,1); lcd.write(fleche); } if (changed.to.getName() == "CHOIX DU MODE n1") { lcd.setCursor(0,1); lcd.print("E= suivant"); } if (changed.to.getName() == "CHOIX DU MODE n2") { lcd.setCursor(0,1); lcd.print("E= suivant"); } if (changed.to.getName() == "CHOIX DU MODE n3") { lcd.setCursor(0,1); lcd.print("E= suivant"); } if (changed.to.getName() == "CHOIX DU MODE n4") { lcd.setCursor(0,1); lcd.print("E= suivant"); } lcd.setCursor(0, 0); lcd.print(changed.to.getName()); } //========================================================== //******************* SETUP ******************************** void setup() { lcd.createChar(fleche,bas); lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("DEMARRAGE SYSTEM"); Serial2.begin(19200); delay(3000); pinMode(Bouton1, INPUT); SIM900power(); delay(1000); // ligne enlevé pour test sans la carte gsm //while ((envoyer_Commande_AT("AT+CREG?", "+CREG: 0,5", 5000) || envoyer_Commande_AT("AT+CREG?", "+CREG: 1,5", 5000)) == 0 ); // ENVOIE DE LA COMMANDE AT TANT QUE 0,5 OU 1,5 N'EST PAS RECU delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("=>GSM CONNECTE<="); delay(1000); // ligne enlevé pour tester sans la carte mp3 //sd.begin(SD_SEL, SPI_HALF_SPEED); //start carte mp3 //MP3player.begin(); //start player //MP3player.setVolume(volume, volume); menuSetup(); menu.toRoot(); lcdTransmetteur(); } // ============================================================= //************COMMANDE ALLUMAGE SHIELD GSM ********************* void SIM900power() { digitalWrite(A4, HIGH); lcd.clear(); lcd.setCursor(0, 0); lcd.print("ALLUMAGE MODULE"); lcd.setCursor(0, 1); lcd.print(" GSM EN COURS "); delay(2000); digitalWrite(A4, LOW); } ////////////LECTURE MP3 SUIVANT APPUIS BOUTON//////////////////// void PLAYMP3() { if (etatBouton1 == 1) { MP3player.playTrack(1); lcd.clear(); lcd.print("LECTURE MESSAGE1"); // LIGNE DE CONTROLE delay(9000); // ATTEND 9 SECONDES Serial2.println("ATH"); // MET FIN A LA COMMUNICATON delay(500); lcd.clear(); lcd.print(" COMMUNICATION "); // LIGNE DE CONTROLE lcd.setCursor(0, 1); lcd.print(" TERMINEE "); appel ++ ; // INCREMENTE DE 1 LA VALEUR DE -APPEL- POUR PASSER AU NUMERO SUIVANT delay(500); } /* *********RAJOUTER LES LIGNES EN FONCTION DU NOMBRE D'ENTREE************** if (etatBouton2 == 1) { MP3player.playTrack(2); lcd.clear(); lcd.print("LECTURE MESSAGE2"); // LIGNE DE CONTROLE delay(9000); // ATTEND 9 SECONDES Serial2.println("ATH"); // MET FIN A LA COMMUNICATON delay(500); lcd.clear(); lcd.print("COMMUNICATION "); // LIGNE DE CONTROLE lcd.setCursor(0, 1); lcd.print(" TERMINEE"); appel ++ ; // INCREMENTE DE 1 LA VALEUR DE -APPEL- POUR PASSER AU NUMERO SUIVANT delay(500); } // *********RAJOUTER LES LIGNES EN FONCTION DU NOMBRE D'ENTREE************** /* if (etatBouton3 == 1) { MP3player.playTrack(3); lcd.clear(); lcd.print("LECTURE MESSAGE3"); // LIGNE DE CONTROLE delay(9000); // ATTEND 9 SECONDES Serial2.println("ATH"); // MET FIN A LA COMMUNICATON delay(500); lcd.clear(); lcd.print("COMMUNICATION "); // LIGNE DE CONTROLE lcd.setCursor(0, 1); lcd.print(" TERMINEE"); appel ++ ; // INCREMENTE DE 1 LA VALEUR DE -APPEL- POUR PASSER AU NUMERO SUIVANT delay(500); } //*********RAJOUTER LES LIGNES EN FONCTION DU NOMBRE D'ENTREE************** /* if (etatBouton4 == 1) { MP3player.playTrack(4); lcd.clear(); lcd.print("LECTURE MESSAGE4"); // LIGNE DE CONTROLE delay(9000); // ATTEND 9 SECONDES Serial2.println("ATH"); // MET FIN A LA COMMUNICATON delay(500); lcd.clear(); lcd.print("COMMUNICATION "); // LIGNE DE CONTROLE lcd.setCursor(0, 1); lcd.print(" TERMINEE"); appel ++ ; // INCREMENTE DE 1 LA VALEUR DE -APPEL- POUR PASSER AU NUMERO SUIVANT delay(500); } */ } //=========================================================== //*********SAVOIR SI LE TELEPHONE A ETE DECROCHE ************** void decroche() { while (envoyer_Commande_AT("AT+CLCC?", "+CLCC: 1,0,0,0,0", 5000) == 0) lcd.print("APPEL EN COURS"); delay(500); lcd.clear(); if (envoyer_Commande_AT("AT+CLCC?", "OK", 1000) == 1) { lcd.clear(); lcd.print("TELEPHONE ACTIF "); PLAYMP3(); } } //=========================================================== //************ EFFECTUER LES APPEL ************************** void affiche(int valeur_recue) { if ((valeur_recue = 1) && (vocal1 == 1)) // appel vocal numero 1 si activé { lcd.clear(); lcd.print("APPEL EN COURS"); lcd.setCursor(0, 1); // LIGNE DE CONTROLE lcd.print("UTILISATEUR 1"); delay(1000); lcd.clear(); Serial2.print(F("ATD")); Serial2.print(numero1); Serial2.println(F(";")); delay(2000); decroche(); lcdTransmetteur(); } if ((valeur_recue = 2) && (vocal2 == 1)) { lcd.clear(); lcd.print("APPEL EN COURS"); lcd.setCursor(0, 1); lcd.print("UTILISATEUR 2"); Serial2.print(F("ATD")); Serial2.print(numero2); Serial2.println(F(";")); delay(2000); decroche(); } if ((valeur_recue = 3) && (vocal3 == 1)) { lcd.clear(); lcd.print("APPEL EN COURS "); lcd.setCursor(0, 1); lcd.print("UTILISATEUR 3"); Serial2.print(F("ATD")); Serial2.print(numero3); Serial2.println(F(";")); delay(2000); decroche(); } if ((valeur_recue = 4) && (vocal4 == 1)) { lcd.clear(); lcd.print("UTILISATEUR 4"); lcd.setCursor(0, 1); lcd.print("APPEL EN COURS"); Serial2.print(F("ATD")); Serial2.print(numero3); Serial2.println(F(";")); delay(2000); decroche(); appel = 1; // REINITIALISE APPEL A 1 } SEND_SMS(); } //=========================================================== //************* ENVOIE DE SMS******************************* void SEND_SMS() { if (SMS1 == 1) { // si mode SMS activé Serial2.println("AT+CMGF=1"); // Activation du mode SMS delay(100); Serial2.print("AT+CMGS=\"+33"); // Envoi du numéro de téléphone Serial2.print(numero1); Serial2.println("\""); delay(100); lcd.clear(); lcd.print("ENVOIE DU SMS AU"); lcd.setCursor(0, 1); lcd.print(numero1); Serial2.println("ALARME EN COURS"); // Corps du message delay(100); Serial2.println((char)26); // CTR+Z delay(100); Serial2.println(); delay(1000); lcd.clear(); lcdTransmetteur(); } if (SMS2 == 1) { Serial2.println("AT+CMGF=1"); // Activation du mode SMS delay(100); Serial2.print("AT+CMGS=\"+33"); // Envoi du numéro de téléphone Serial2.print(numero2); Serial2.println("\""); delay(100); lcd.clear(); lcd.print("ENVOIE DU SMS AU"); lcd.setCursor(0, 1); lcd.print(numero2); Serial2.println("ALARME EN COURS "); // Corps du message delay(100); Serial2.println((char)26); // CTR+Z delay(1000); lcd.clear(); lcdTransmetteur(); } if (SMS3 == 1) { Serial2.println("AT+CMGF=1"); // Activation du mode SMS delay(100); Serial2.print("AT+CMGS=\"+33"); // Envoi du numéro de téléphone Serial2.print(numero3); Serial2.println("\""); delay(100); lcd.clear(); lcd.print("ENVOIE DU SMS AU"); lcd.setCursor(0, 1); lcd.print(numero3); Serial2.println("ALARME EN COURS"); // Corps du message delay(100); Serial.println("CTR+Z"); Serial2.println((char)26); // CTR+Z delay(100); Serial2.println(); delay(1000); lcd.clear(); lcdTransmetteur(); } if (SMS4 == 1) { Serial2.println("AT+CMGF=1"); // Activation du mode SMS delay(100); Serial2.print("AT+CMGS=\"+33"); // Envoi du numéro de téléphone Serial2.print(numero4); Serial2.println("\""); lcd.clear(); lcd.print("ENVOIE DU SMS AU"); lcd.setCursor(0, 1); lcd.print(numero4); delay(100); Serial2.println("ALARME EN COURS"); // Corps du message delay(100); Serial.println("CTR+Z"); Serial2.println((char)26); // CTR+Z delay(100); Serial2.println(); delay(1000); lcd.clear(); lcdTransmetteur(); } } //====================================================== //********************** boucle ************************* void loop() { navigateMenu(); etatBouton1 = digitalRead(Bouton1); // etatBouton2 = digitalRead(Bouton2); // ajouter ici des entrées supplemtaire si besoin // etatBouton3 = digitalRead(Bouton3); // etatBouton4 = digitalRead(Bouton4); if (etatBouton1 == 1) // || etatBouton2 == 1 || etatBouton3 == 1 || etatBouton4 == 1) { lcd.clear(); lcd.print("BOUTON APPUYE"); //LIGNE DE CONTROLE affiche(appel); // EFFECTUE LE PREMIER APPEL SELON LE COMPTEUR delay(500); } } //===================================================================== //*************** MISE EN MEMOIRE COMMANDE AT************************** uint8_t envoyer_Commande_AT(char* commande_AT, char* reponse_Esperee, unsigned int timeout) { uint8_t x = 0, answer = 0; char reponse[100]; unsigned long previous; // Initialisation de la chaine de caractère (string). memset(reponse, '\0', 100); delay(100); // Initialisation du tampon d'entrée (input buffer). while ( Serial2.available() > 0) { Serial2.read(); } // Envoi de la commande AT. Serial2.println(commande_AT); // Réponse du SIM900. // Cette boucle vérifie s'il y a des données disponibles dans le tampon. // Ces données sont comparées avec la réponse attendue. x = 0; previous = millis(); do { if (Serial2.available() != 0) { reponse[x] = Serial2.read(); x++; // Comparaison des données if (strstr(reponse, reponse_Esperee) != NULL) { answer = 1; } } } while ((answer == 0) && ((millis() - previous) < timeout)); #ifdef DEBUG Serial.println(reponse); #endif return answer; } //======================================================= //******enregistre le Numero 1 dans le char numero******** void getNumero1() { i = 0; numero1[0] = '\0'; while ( i < sizeof(numero1) - 1) { key = getChar1(); if (key == 'E') { break; } else if ( key != NO_KEY) { lcd.setCursor(0, 1); numero1[i] = key; i++; numero1[i] = '\0'; lcd.print(numero1); } } } char getChar1() { char key = keypad.getKey(); if (key != NO_KEY) { return key; } else { return NO_KEY; } } //======================================================= //*** enregistre le Numero 2 dans le char numero2******** void getNumero2() { i = 0; numero2[0] = '\0'; while ( i < sizeof(numero2) - 1) { key = getChar2(); if (key == 'E') { break; } else if ( key != NO_KEY) { lcd.setCursor(0, 1); numero2[i] = key; i++; numero2[i] = '\0'; lcd.print(numero2); } } } char getChar2() { char key = keypad.getKey(); if (key != NO_KEY) { return key; } else { return NO_KEY; } } //===================================================== //*** enregistre le Numero 3 dans le char numero3 ***** void getNumero3() { i = 0; numero3[0] = '\0'; while ( i < sizeof(numero3) - 1) { key = getChar3(); if (key == 'E') { break; } else if ( key != NO_KEY) { lcd.setCursor(0, 1); //lcd.print(" "); numero3[i] = key; i++; numero3[i] = '\0'; lcd.print(numero3); } } } char getChar3() { char key = keypad.getKey(); if (key != NO_KEY) { return key; } else { return NO_KEY; } } //================================================== //**enregistre le Numero 4 dans le char numero4 **** void getNumero4() { i = 0; numero4[0] = '\0'; while ( i < sizeof(numero4) - 1) { key = getChar4(); if (key == 'E') { break; } else if ( key != NO_KEY) { lcd.setCursor(0, 1); //lcd.print(" "); numero4[i] = key; i++; numero1[i] = '\0'; lcd.print(numero4); } } } char getChar4() { char key = keypad.getKey(); if (key != NO_KEY) { return key; } else { return NO_KEY; } } //=============================================== //******** ACTIVATION MODE VOCAL ***************** //***************UTILISATEUR 1******************** int setVocal1() { char key = keypad.getKey(); while (key != 'E') { switch (key) { case '1': vocal1 = 1; ModeVocal(); break; case '0' : vocal1 = 0; ModeSms(); break; } key = keypad.getKey(); } return vocal1; } //=============================================== //****************UTILISATEUR 2******************* int setVocal2() { char key = keypad.getKey(); while (key != 'E') { switch (key) { case '1': vocal2 = 1; ModeVocal(); break; case '0' : vocal2 = 0; ModeSms(); break; } key = keypad.getKey(); } return vocal2; } //============================================== //*********** UTILISATEUR 3********************* int setVocal3() { char key = keypad.getKey(); while (key != 'E') { switch (key) { case '1': vocal3 = 1; ModeVocal(); break; case '0' : vocal3 = 0; ModeSms(); break; } key = keypad.getKey(); } return vocal3; } //======================================= //********** UTILISATEUR 4*************** int setVocal4() { char key = keypad.getKey(); while (key != 'E') { switch (key) { case '1': vocal4 = 1; ModeVocal(); break; case '0' : vocal4 = 0; ModeSms(); break; } key = keypad.getKey(); } return vocal4; } //============================================= //***** AFFICHAGE CHOIX DU MODE VOCAL********** void ModeVocal() { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" > MODE VOCAL < "); lcd.setCursor(0, 1); lcd.print(" VALIDER AVEC E"); delay(100); } //============================================ //***** AFFICHAGE CHOIX MODE SMS************** void ModeSms() { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" > MODE SMS < "); lcd.setCursor(0, 1); lcd.print(" VALIDER AVEC E"); delay(100); } //============================================ //*****Touche de navigation pour le menu***** void navigateMenu() { char key = keypad.getKey(); if (key != NO_KEY) { switch (key) { case 'H': lcd.clear(); menu.moveUp(); break; case 'B': lcd.clear(); menu.moveDown(); break; case 'D': lcd.clear(); menu.moveRight(); break; case 'G': lcd.clear(); menu.moveLeft(); break; case 'E': lcd.clear(); menu.use(); break; case 'Q': menu.toRoot(); lcd.clear(); lcdTransmetteur(); break; } } } //==================END========================