Bonjour à tous,

Depuis le retour de vacances BOB me boude. Il ne répond plus à certaines de me demandes vocales.
Je mets le code pour plus de clarté.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
 
 
// Controle semi-autonome d'un robot
//
// Utilisation logiciel Android "ARDUINO BLUETOOTH CONTROLER" Apps Valley
// Utilisation logiciel Android MIT App Inventor
// Programmé pour MEGA 2560 avec Carte d'extension
 
#include <NewPing.h>
#include <HCSR04.h>
#include <SoftwareSerial.h> // Pour les communications séries
SoftwareSerial mySoftwareSerial(14, 15);  // RX, TX
#include <Wire.h>
#include <DFRobotDFPlayerMini.h>
#include "PitchesSW.h"
#include "Servo.h"
 
Servo servo; // création de l'objet "servo"
 
DFRobotDFPlayerMini myDFPlayer ;
 
//DEFINITION CAPTEUR BLUETOOTH
 
unsigned char c;        //définition de la valeur c
 
#define Gpwm_pin 6                 //Pin ajustement vitesse Gauche
#define Dpwm_pin 13                 //Pin ajustement vitesse Droit
 
//  To all fans of StarWars and Arduino!  Written by Marcelo Larios
//  BSD license, all text above must be included in any redistribution
 
int vson = 15;
 
String messageRecu = "";  // stockage du message venant du bluetooth
String messageRecu1 = ""; // stockage du message venant du bluetooth
 
int dist_AVGB = 0;           // distance AVant Gauche Bas
int dist_AVCGB = 0;          // distance AVant Centre Gauche Bas
int dist_AVCDB = 0;          // distance AVant Centre Droit Bas
int dist_AVDB = 0;           // distance AVant Droit Bas
int dist_AVCH = 0;           // distance AVant Centre Haut
 
int dist_AVDH = 0;           // distance AVant Droit Haut
int dist_AVGH = 0;           // distance AVant Gauche Haut
 
int dist_COL_G = 0;           // distance AVant Gauche Haut
int dist_COL_D = 0;          // distance AVant Centre Droit Haut
int dist_COL_F = 0;          // distance Col
int dist_TETE_F = 0;           // distance Tête Face
int dist_TETE_D = 0;           // distance Tête Droite
int dist_TETE_G = 0;           // distance Tête Gauche
int dist_PLAF = 0;           // distance Plafond
 
int old_dist_AVCH = 0;         // distance AVant Centre Haut
 
int DFH = dist_AVCH;
int DFB = ((dist_AVCDB + dist_AVCGB) / 2);
int DGX = ((dist_COL_G + dist_AVGB) / 2);
int DDX = ((dist_COL_D + dist_AVDB) / 2);
 
int x = 6;
 
// CAPTEUR ULTRASONIQUE HC-SR04 AVant Centre Haut AVCH
 
#define ECHO_AVCH  A7      // Broche ECHO    AVant Centre Haut AVCH
#define TRIG_AVCH  A6      // Broche TRIGGER AVant Centre Haut 
 
int TESTCAPTEURS =  0;
 
#define MAX_DISTANCE 250
 
NewPing AVCH(TRIG_AVCH, ECHO_AVCH, MAX_DISTANCE);
 
//DEFINITION CONNEXION MOTEUR
 
int pinARG = 29;                       // définition de la broche arrière gauche
int pinAVD = 31;                       // définition de la broche avant droit
int pinAVG = 30;                       // définition du broche avant gauche
int pinARD = 28;                       // définition de la broche arrière droite
/*
  #define SERVOMIN  150 // La longueur d'impulsion 'minimale' (valeur du compteur, max 4096)
  #define SERVOMAX  600 // La longueur d'impulsion 'maximale' (valeur du compteur, max 4096)
 
  // Servos Commandés - Numéro de sorties sur le breakout
  uint8_t ServoHorizontal = 7;
  int pulseLen = 0;*/
//DEFINITION VITESSE ROTATION TETE
int VROT = 20 ;
int PWM = 0;
 
//DEFINITION VITESSE MOTEUR AU DEPART
unsigned char Gpwm_val = 255;       // définition la vitesse du moteur avant gauche
unsigned char Dpwm_val = 255;       // définition la vitesse du moteur avant droit
 
//DEFINITION ETAT ROBOT
String Bob_state = "";
 
void M_Control_IO_config(void)
{
  pinMode(pinARG, OUTPUT);   // définition de la broche arrière gauche en sortie
  pinMode(pinAVG, OUTPUT);   // définition de la broche avant gauche en sortie
  pinMode(pinARD, OUTPUT);   // définition de la broche arrière droite en sortie
  pinMode(pinAVD, OUTPUT);   // définition de la broche avant droit en sortie
  pinMode(Gpwm_pin, OUTPUT); // pin  6            (PWM)
  pinMode(Dpwm_pin, OUTPUT); // pin 13 (PWM)
}
void Set_Speed(unsigned char Left, unsigned char Right)
{
  analogWrite(Gpwm_pin, Left);
  analogWrite(Dpwm_pin, Right);
}
 
void Qest_capt_B()
{ Wire.requestFrom(0x01, 4);  // Demande a esclave Capteurs , 4 octets
  if (4 <= Wire.available()) { // si huit octets disponibles
    dist_AVGB = Wire.read();  // lire valeur de l'octet
    dist_AVCGB = Wire.read();  // lire valeur de l'octet
    dist_AVDB = Wire.read();  // lire valeur de l'octet
    dist_AVCDB = Wire.read();  // lire valeur de l'octet
 
    Serial.print("dist_AVGB :  "); Serial.println(dist_AVGB);
    Serial.print("dist_AVCGB:  "); Serial.println(dist_AVCGB);
    Serial.print("dist_AVCDB:  "); Serial.println(dist_AVCDB);
    Serial.print("dist_AVDB :  "); Serial.println(dist_AVDB);
  }
}
void Qest_capt_H()
{
  Wire.requestFrom(0x02, 5);  // Demande a esclave Capteurs , 5 octets
  if (5 <= Wire.available()) {  // si cinq octets disponibles
    dist_PLAF = Wire.read();  // lire valeur de l'octet
    dist_TETE_F = Wire.read();  // lire valeur de l'octet
    dist_COL_D = Wire.read();  // lire valeur de l'octet
    dist_COL_G = Wire.read();  // lire valeur de l'octet
    dist_COL_F = Wire.read();  // lire valeur de l'octet
 
    Serial.print("dist_COL_G:  "); Serial.println(dist_COL_G);
    Serial.print("dist_COL_D:  "); Serial.println(dist_COL_D);
    Serial.print("dist_COL_F:   "); Serial.println(dist_COL_F);
    Serial.print("dist_TETE_F:  "); Serial.println(dist_TETE_F);
    Serial.print("dist_PLAF : "); Serial.println(dist_PLAF);
  }
}
void avance()          // Avance
{
  // Transmission etat LED
  Wire.beginTransmission(0x02); // Envoyer vers device #Led
  Wire.write(3); // Envoi un 3
  Wire.endTransmission(0x02); // Arreter la transmission
 
  Set_Speed(Gpwm_val, Dpwm_val); //reglage de la vitesse initialisee
  digitalWrite(pinARD, LOW);
  digitalWrite(pinAVD, HIGH); // faire avancer le moteur AV droit
  digitalWrite(pinARG, LOW);
  digitalWrite(pinAVG, HIGH); // faire avancer le moteur AV gauche
  Bob_state = "Avance"; Serial.println("Bob_state : Avance");
}
void recul()     //  recule
{
  // Transmission etat LED
  Wire.beginTransmission(0x02); // Envoyer vers device #Led
  Wire.write(2); // Envoi un 2
  Wire.endTransmission(0x02); // Arreter la transmission
 
  Set_Speed(Gpwm_val, Dpwm_val); //reglage de la vitesse initialisee
  digitalWrite(pinARD, HIGH); // faire avancer le moteur de l'arrière droit HIGH
  digitalWrite(pinAVD, LOW);  // faire avancer le moteur de l'avant droit
  digitalWrite(pinARG, HIGH); // faire avancer le moteur de l'arrière gauche HIGH
  digitalWrite(pinAVG, LOW);  // faire avancer le moteur de l'avant  gauche
  delay(2);
  Bob_state = "Recule"; Serial.println("Bob_state : Recule");
}
void turnD()        // Tourner à Droite
{
  // Transmission etat LED Bleu
  Wire.beginTransmission(0x02); // Envoyer vers device #Led
  Wire.write(1); // Envoi un 1
  Wire.endTransmission(0x02); // Arreter la transmission
 
  for (PWM = 255; PWM >= 175; PWM--) {
    Set_Speed(PWM, Dpwm_val); //reglage de la vitesse initialisee
    digitalWrite(pinARD, LOW);  // faire reculer le moteur AR droit
    digitalWrite(pinAVD, HIGH); // faire avancer le moteur AV droit
    digitalWrite(pinARG, HIGH); // faire avancer le moteur AR gauche
    digitalWrite(pinAVG, LOW);  // faire reculer le moteur AV gauche
    delay(4);
  }
  Bob_state = "A Droite"; Serial.println("Bob_state : A droite");
}
void turnG()        // Tourner à Gauche
{
  // Transmission etat LED Bleu
  Wire.beginTransmission(0x02); // Envoyer vers device #Led
  Wire.write(1); // Envoi un 1
  Wire.endTransmission(0x02); // Arreter la transmission
 
  for (PWM = 255; PWM >= 175; PWM--) {
    Set_Speed(Gpwm_val, PWM); //reglage de la vitesse initialisee
    digitalWrite(pinARD, HIGH);  // faire avancer le moteur AV droit
    digitalWrite(pinAVD, LOW );  // faire avancer le moteur de l'avant droit
    digitalWrite(pinARG, LOW);   // faire avancer le moteur de l'arrière gauche
    digitalWrite(pinAVG, HIGH);  // faire avancer le moteur AV gauche
    delay(4);
  }
  Bob_state = "A Gauche"; Serial.println("Bob_state : A Gauche");
}
void stopp()         //stop
{
  // Transmission etat LED Eteint
  Wire.beginTransmission(0x02); // Envoyer vers device #Led
  Wire.write(0); // Envoi un 0
  Wire.endTransmission(0x02); // Arreter la transmission
 
  for (PWM = 255; PWM >= 175; PWM--) {
    digitalWrite(pinARD, LOW);
    digitalWrite(pinAVD, LOW);
    digitalWrite(pinARG, LOW);
    digitalWrite(pinAVG, LOW);
    delay(2);
  }
  Bob_state = "Stop"; Serial.println("Bob_state : Stop");
}
void VRAVC()    // Vision Rapide Avant Centre
{
  servo.write(90); // demande au servo de se déplacer en Face
  Serial.println("Servo Horizontal à 90 degrés, Vision Rapide en Face");
}
void VRAVD()    // Vision Rapide Avant Droite
{
  servo.write(2); // demande au servo de se déplacer en Face
  Serial.println("Servo Horizontal à 10 degrés, Vision Rapide Avant Droite");
}
void VRAVG()    // Vision Rapide Avant Gauche
{
  servo.write(178); // demande au servo de se déplacer en Face
  Serial.println("Servo Horizontal à 168 degrés, Vision Rapide Avant Gauche");
}
//**************************************************
//*  Rotation Lente TETE - 10 11 TETE              *
//**************************************************
void VLDVAVC() // Vision Lente Droite Vers Avant Centre
{
  //--- Controle du Servo (Horizontal) ---
  for (int i = 2; i <= 90; i++) {
    servo.write(i);
    delay(VROT);
  }
  Serial.println("Servo Horizontal à 10 degrés, Vision Lente Droite Vers Avant Centre");
}
 
void VLCVAVD() // Vision Lente Centre Vers Avant Droite
{
  //--- Controle du Servo (Horizontal) ---
  for (int i = 90; i <= 2; i--) {
    servo.write(i);
    delay(VROT);
  }
  Serial.println("Servo Horizontal à 10 degrés, Vision Lente Centre Vers Avant Droite");
}
 
void VLCVAVG()// Vision Lente Centre Vers Avant Gauche
{ //--- Controle du Servo (Horizontal) ---
  for (int i = 90; i <= 178; i++) {
    servo.write(i);
    delay(VROT);
  }
  Serial.println("Servo Horizontal à 85 degrés, Vision Lente Centre Vers Avant Gauche");
}
 
void VLGVAVC()// Vision Lente Avant Gauche Vers Centre
{ //--- Controle du Servo (Horizontal) ---
  for (int i = 178; i >= 90; i--) {
    servo.write(i);
    delay(VROT);
  }
  Serial.println("Servo Horizontal à 158 degrés, Vision Lente Avant Gauche Vers Centre");
}
//*************************************************
//*  Vision Rapide Avant Centre Haut - A7 A6 AVCH *
//*************************************************
void AVCHX()
{
  dist_AVCH = (AVCH.ping() / US_ROUNDTRIP_CM) ;/* delay(60);*/
 
 
  if (dist_AVCH <= 0)
  {
    dist_AVCH = old_dist_AVCH;
  }
  else
  {
    old_dist_AVCH = dist_AVCH;
  }
}
 
//********************************************************
//*                                                      *
//*  CODE PRINCIPAL                                      *
//*                                                      *
//********************************************************
 
void onyva()
{
  Serial.print(" Requete - baseCapteur SOL"); Serial.println();
  Qest_capt_B();
 
  Serial.print(" Requete - baseCapteur TETE LED"); Serial.println();
 
  Qest_capt_H();
 
  AVCHX();    // Distance AVant Centre Haut
  Serial.print("dist_AVCH : "); Serial.println(dist_AVCH);
 
  if (
    (dist_COL_F < 20) && (dist_TETE_F < 20))
  {
    stopp(); myDFPlayer.playMp3Folder(0023); // StarWars
  }
 
 
  if (((dist_AVCGB < 20) || (dist_AVGB < 20)))
  {
    /* stopp(); delay(50); recul(); delay(150);*/ turnD(); delay(50);
  }
 
  if (((dist_AVCDB < 20) || (dist_AVDB < 20)))
 
  {
    /* stopp(); delay(50); recul(); delay(150);*/ turnG(); delay(50);
  }
  Qest_capt_H();
  if ((dist_AVCH < 20) || (dist_COL_F < 20) || (dist_TETE_F < 20))
  {
    stopp(); delay(50); recul(); delay(1000); stopp(); delay(1000);
 
    Qest_capt_B();
    VRAVD(); delay(1000);
    Qest_capt_H(); dist_TETE_D = dist_TETE_F;
    VRAVG(); delay(1000);
    Qest_capt_H(); dist_TETE_G = dist_TETE_F;
    VRAVC(); delay(1000);
    Qest_capt_H();
 
    if (dist_TETE_G > dist_TETE_D)
    {
      turnG(); delay(50);
    }
    if (dist_TETE_D > dist_TETE_G)
    {
      turnD(); delay(50);
    }
  }
 
  if ((dist_AVDB < 20) && (dist_AVGB < 20) && (dist_AVDH < 20) && (dist_AVGH < 20) && ((DFH < 47) || (DFB < 42)))
  {
    stopp(); delay(50); recul(); delay(300); stopp(); delay(1000);
  }
  else
  {
    if ((dist_AVGB < 10) && ((DFH < 10) || (DFB < 10) ))
    {
      stopp(); delay(50); recul(); delay(300); turnD(); delay(5);
    }
    if ((dist_AVDB < 10)  && ((DFH < 10) || (DFB < 10) ))
    {
      stopp(); delay(50); recul(); delay(300); turnG(); delay(5);
    }
    else
    {
      if ((DFH < 50) || (DFB < 50))
      {
        Qest_capt_B(); Qest_capt_H();
 
        DFH = dist_AVCH;  Serial.print(" Vision Face Haut : "); Serial.println(DFH);
        DFB = ((dist_AVCDB + dist_AVCGB) / 2);  Serial.print(" Vision Face Bas : "); Serial.println(DFB);
        DGX = ((dist_AVGH + dist_AVGB) / 2);  Serial.print(" Vision Gauche "); Serial.println(DGX);
        DDX = ((dist_AVDH + dist_AVDB) / 2);  Serial.print(" Vision Droite "); Serial.println(DDX);
 
        if (DGX >= DDX)
        {
          turnG(); delay(10);
        }
        if (DGX <= DDX)
        {
          turnD(); delay(10);
        }
        if ((DGX < 20) || (DDX < 20))
        {
          recul(); delay(300); stopp(); delay(500);
        }
      }
    }
  }
  avance();
}
//***********************************************
//*               LOOPING                       *
//***********************************************
 
void loop()
 
{
  myDFPlayer.setTimeOut(500);
  while (Serial.available())
  {
    char c = Serial.read();
    messageRecu += c;
    delay (3); // lecture car par car
  }
  if (messageRecu.length() > 0)
  {
    Serial.print("Message Recu :"); Serial.print( messageRecu);
    if ((messageRecu.indexOf("recule") != -1)) { // marche arrière
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": recule");
      stopp(); recul(); delay(1000); stopp();
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("bâbord") != -1)) { // moteur stop
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": quart-de-tour à gauche");
      turnG(); delay(600); stopp();
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("tribord") != -1)) { // moteur stop
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": quart-de-tour à droite");
      turnD(); delay(600); stopp();
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("gauche") != -1)) { // tourne à gauche brièvement
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println (  ": a gauche");
      turnG(); delay(100); stopp();
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("droite") != -1)) { //tourne à droite brièvement
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": a droite");
      turnD(); delay(100); stopp();
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("stoppe") != -1)) || ((messageRecu.indexOf("top") != -1)) || ((messageRecu.indexOf("arrête") != -1))) { // moteur stop
      Serial.print("Message Recu :"); Serial.print(messageRecu); Serial.println(  ": stop"); stopp();
      messageRecu = "";
      // Transmission etat LED Rouge
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(2); // Envoi un 2
      Wire.endTransmission(0x02); // Arreter la transmission
      delay(1000);
      // Transmission etat LED Eteint
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(0); // Envoi un 0
      Wire.endTransmission(0x02); // Arreter la transmission
 
    }
    else if (((messageRecu.indexOf("demi-tour gauche") != -1))) { // moteur stop
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": demi-tour gauche");
      turnG(); delay(2600);
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("demi-tour droite") != -1))) { // moteur stop
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": demi-tour droite");
      turnD(); delay(2600);
      messageRecu = "";
    }
 
    else if ((messageRecu.indexOf("repos") != -1)) { // marche avant
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(  ": repos");
      Qest_capt_B(); stopp();
 
      myDFPlayer.volume(10) ; // fixe le volume
      myDFPlayer.playMp3Folder(14); // ok Ready
 
 
      // Transmission etat LED Eteint
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(0); // Envoi un 0
      Wire.endTransmission(0x02); // Arreter la transmission
 
      delay(5000); //les instructions à répéter tant que la condition est vérifiée
      messageRecu = "";
    }
    //******************
    //*  Test DIALOGUE *
    //******************
 
    else if (((messageRecu.indexOf("comment tu t'appelle") != -1))) {
      Serial.print("Message Recu :"); Serial.print( messageRecu);
      myDFPlayer.volume(18) ; // fixe le volume
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(3); // Envoi un 3
      Wire.endTransmission(0x02); // Arreter la transmission
      myDFPlayer.playMp3Folder(1); // Je m'appelle Bob
      /*delay(3000); //pause de 5 secondes*/
      // Transmission etat LED Eteint
      Wire.beginTransmission(0x02);
      // Envoyer vers device #Led
      Wire.write(0); // Envoi un 0
      Wire.endTransmission(0x02);
      // Arreter la transmission
      messageRecu = "";
 
    }
    else if (((messageRecu.indexOf("comment je m'appelle") != -1)) || ((messageRecu.indexOf("quel est mon nom") != -1))) {
      myDFPlayer.volume(18) ; // fixe le volume
      myDFPlayer.playMp3Folder(2); // tu t'appelle Gerard
      /*delay(1000); //pause de 5 secondes*/
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à Catherine") != -1)) {
      myDFPlayer.volume(18) ; // fixe le volume
      myDFPlayer.playMp3Folder(5); // Bonjour Catherine
      /*delay(1000); //pause de 5 secondes*/
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("dis bonjour au portail") != -1))  || ((messageRecu.indexOf("dis bonjour les porta") != -1))) {
      myDFPlayer.volume(vson) ; // fixe le volume
      myDFPlayer.playMp3Folder(0006); // Bonjour les Portha
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à Eva") != -1)) {
 
      myDFPlayer.volume(vson) ; // fixe le volume
      myDFPlayer.playMp3Folder(0007); // Bonjour EVA
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à Aymeric") != -1)) {
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(4); // Envoi un 4
      Wire.endTransmission(0x02); // Arreter la transmission
      myDFPlayer.volume(vson) ; // fixe le son à 8 (maximum 30)
      myDFPlayer.playMp3Folder(0016); // Bonjour Emeric
      delay(3000); //pause de 5 secondes
      // Transmission etat LED Eteint
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(0); // Envoi un 0
      Wire.endTransmission(0x02); // Arreter la transmission
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à Neo line") != -1)) {
      myDFPlayer.volume(vson) ; // fixe le son à 8 (maximum 30)
      myDFPlayer.playMp3Folder(0017); // Bonjour Neoline
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à Pierrette") != -1)) {
      myDFPlayer.volume(vson) ; // fixe le son à 8 (maximum 30)
      myDFPlayer.playMp3Folder(0025); // Bonjour pierrette
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("lumière") != -1)) {
      myDFPlayer.volume(vson) ; // fixe le son à 8 (maximum 30)
      myDFPlayer.playMp3Folder(18); // ok google allume le salon
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à Madame") != -1)) {
 
      myDFPlayer.volume(18) ; // fixe le volume à 18 (maximum 30)
      myDFPlayer.playMp3Folder(0027); // Bonjour madame
      delay(1000); //pause de 5 secondes
      messageRecu = "";
 
    }
 
    else if ((messageRecu.indexOf("dis bonjour à Monsieur") != -1)) {
 
      myDFPlayer.volume(vson) ; // fixe le son à 8 (maximum 30)
      myDFPlayer.playMp3Folder(0030); // Bonjour monsieur
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour à tous") != -1)) {
 
      myDFPlayer.volume(vson) ; // fixe le son
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(3); // Envoi un 3
      Wire.endTransmission(0x02);
      // Arreter la transmission
      myDFPlayer.playMp3Folder(0031); // Bonjour à tout le monde
      delay(3000); //pause de 5 secondes
      // Transmission etat LED Eteint
      Wire.beginTransmission(0x02);
      // Envoyer vers device #Led
      Wire.write(3); // Envoi un 3
      Wire.endTransmission(0x02); // Arreter la transmission
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis bonjour aux enfants") != -1)) {
      myDFPlayer.volume(vson) ; // fixe le son
      myDFPlayer.playMp3Folder(0032); // Bonjour au enfants
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("augmente le volume") != -1))) {
      vson = vson + 4;
      myDFPlayer.volume(vson) ; // fixe le son
      myDFPlayer.playMp3Folder(0021); // ok Ready
      Serial.println("OK READY ");
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("baisse le volume") != -1))) {
      vson = vson - 4;
      myDFPlayer.volume(vson) ; // fixe le son
      myDFPlayer.playMp3Folder(0021); // ok Ready
      Serial.println("OK READY ");
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("mets le volume à 18") != -1))) {
      vson = 18;
      myDFPlayer.volume(vson) ; // fixe le son
      myDFPlayer.playMp3Folder(0021); // ok Ready
      Serial.println("OK READY ");
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(3); // Envoi un 3
      Wire.endTransmission(0x02); // Arreter la transmission
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("mets le volume à 12") != -1))) {
 
      vson = 12;
      myDFPlayer.volume(vson) ; // fixe le son
      myDFPlayer.playMp3Folder(0021); // ok Ready
      Serial.println("OK READY ");
      // Transmission etat LED Verte
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(3); // Envoi un 3
      Wire.endTransmission(0x02); // Arreter la transmission
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("coupe le son") != -1)) {
      vson = 0;
      delay(1000); //pause de 5 secondes
      messageRecu = "";
    }
    else if ((messageRecu.indexOf("dis non") != -1)) {
      for (int i = 0; i <= 0; i++) {
        VRAVC(); delay(500);
        VRAVG(); delay(500);
        VRAVD(); delay(500);
      }
      VRAVC();
      // Transmission etat LED Rouge
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(2); // Envoi un 2
      Wire.endTransmission(0x02); // Arreter la transmission delay(500);
      // Transmission etat LED Eteint
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(0); // Envoi un 0
      Wire.endTransmission(0x02); // Arreter la transmission
      myDFPlayer.playMp3Folder(0033); delay(1000); // non
      messageRecu = "";
    }
 
    else if ((messageRecu.indexOf(" ") != -1)) {
      // Transmission etat LED Rouge
      Wire.beginTransmission(0x02); // Envoyer vers device #Led
      Wire.write(2); // Envoi un 2
      Wire.endTransmission(0x02); // Arreter la transmission
      myDFPlayer.volume(vson) ; // fixe le son
      myDFPlayer.playMp3Folder(0003); delay(1000); // je ne comprends pas
      messageRecu = "";
    }
    else if (((messageRecu.indexOf("avance") != -1))) {
      Serial.print("Message Recu :"); Serial.print( messageRecu); Serial.println(": avance");
      onyva();  //les instructions à répéter tant que la condition est vérifiée
 
    }
    //***********************
    //*   FIN Test DIALOGUE *
    //***********************
  }
 
  /*messageRecu = "";*/
}
 
void setup()
{
  Wire.begin(); // Rejoindre le bus I2C (Pas besoin d adresse pour le maitre)
  Serial.begin(9600); // Demarrer la liaison serie avec le PC
 
  servo.attach(37); // attache le servo au pin spécifié
 
  Serial.println(F("------------ Je suis le Maitre"));
  delay(3000);
  Set_Speed(Gpwm_val, Dpwm_val); //reglage de la vitesse initialisee
 
  M_Control_IO_config();
  Serial.println("TEST DEPLACEMENT ");
  avance(); delay(500); stopp(); delay(1000);
  recul(); delay(500); stopp(); delay(1000);
  turnG(); delay(500); stopp(); delay(1000);
  turnD(); delay(500); stopp(); delay(1000); 
 
  Serial.println("TEST CAPTEURS HAUT ");
  Qest_capt_H();
  Serial.println("FIN TEST CAPTEURS HAUT ");
  Serial.println("TEST CAPTEURS BAS ");
  Qest_capt_B();
  Serial.println(" FIN TEST CAPTEURS BAS ");
  Serial.println("TEST SERVO TETE ");
  VRAVC(); delay(500);
  VLCVAVD();
  VLDVAVC();
  VLCVAVG();
  VLGVAVC(); delay(500);
  Serial.println("FIN TEST SERVO TETE ");
  Serial.println("INITIALISATION BROCHE AVCH ");
  // Initialisation des broches AVant Centre Haut AVCH //
  pinMode(TRIG_AVCH, INPUT);    // Broche TRIGGER AVant Centre Haut
  digitalWrite(TRIG_AVCH, LOW); // Broche TRIGGER AVant Centre Haut
  pinMode(ECHO_AVCH, INPUT);    // Broche ECHO    AVant Centre Haut
 
  Serial.println("TEST SON");
  mySoftwareSerial.begin(9600) ;
  myDFPlayer.begin(mySoftwareSerial) ;
  myDFPlayer.setTimeOut(500);
  myDFPlayer.volume(10) ; // fixe le volume
  myDFPlayer.playMp3Folder(14); // ok Ready
  Serial.println("OK READY ");
 
}

Exemple: Dans le SETUP il y a une fonction qui teste le son. Dans ce cas, BOB me répond "OK READY" et cela fonctionne.

Dans le code je lui demande par exemple "Comment tu t'appelles" Il devrait me répondre "Je m'appelle BOB"
Hé ben non, muet comme une carpe. Toutes le commandes sous TEST DIALOGUE ne fonctionne plus.

Cela fait 2 mois que je teste sans trouver de solutions. Je soumets le problème à votre sagacité pour éventuellement me donner une idée du problème.
J'utilise mon mobile pour lui donner des ordres. "Avance, recul" etc... Ça marche... J'ai aussi remplacé "OK READY" par d'autre réponses enregistrées sur ma carte SD c'est ok aussi.

Vous remercie d'avance pour votre aide.