Bonjour,

Je porte progressivement mes programmes Nano vers ESP32 car Bluetooth et WiFi sont intégrés, ce qui simplifie ma partie Hardware (plus besoin de rajouter des HC06 aux Arduino).

Pour mon 1er essai, il semble que la librairie "BluetoothSerial" que j'ai déposée dans le répertoire "lib" du projet PlatformIO, me pose quelques soucis: l'instruction "BluetoothSerial SerialBT;" ne semble pas reconnue par le compilateur.
Ce qui évidemment engendre des erreurs en cascade si ma compréhension est bonne.

Voici le code:
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
#include <Arduino.h>
#include <Wire.h> 	// librairy requise pour l'écran LCD, incluse dans l'IDE Arduino et qui n'apparaitra donc pas 
						// dans le sous-dossier 'Librairies' du répertoire Arduino
            // sur platformIO on a mis manuellement la v3.3.0 dans le répertoire "lib" du projet
#include <DFRobot_LCD.h> // librairy gérant les afficheurs DFRobot 0555 et équivalents
	DFRobot_LCD lcd(16,2);  //16 characters and 2 lines of show
 
  // Ce pgm a été fait avec PlatformIO, et se trouve donc ici: C:\Users\ordic\Documents\PlatformIO\Projects\BT_ESP32_v1.001\src\main.cpp
#include <BluetoothSerial.h>  // librairy Bluetooth
BluetoothSerial SerialBT; // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo
							// et selon tutorial: https://dronebotworkshop.com/esp32-bluetooth
// On a passé le Moniteur série à 115.200 en rajoutant monitor_speed = 115200 dans Platformio.ini
 
String messageRecu; // contiendra la commande BLUETOOTH reçue complète terminée par 'Z' majuscule tel
                    // que définit dans mon appli APPINVENTOR.
                    // messageRecu accumulera tous les caractères reçues par Bluetooth
                    // jusqu'à ce que le caractère "Z" soit reçu
 
 
// put function declarations here:
// int myFunction(int, int);
void stop();
void record();
void play();
void fastforward();
void rew();
void pause();
// FIN DE LA DECLARATION DES NOMS DE FONCTIONS
 
void setup() {
  	// put your setup code here, to run once:
  	// int result = myFunction(2, 3);
  	Serial.begin(115200);	//démarre le Moniteur série à 115000 bauds.
  	SerialBT.begin("Denon_K7");	// selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo
                            	// "Denon_K7" est le nom du device qui apparaitra sur Smartphone quand on se connectera
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
  while(SerialBT.available()) // ici on met SerialBT pour coler au tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo
	{
		  delay(3);
		  char c = SerialBT.read();  // ici aussi on met Serial3.read (non Serial.read) car on a connecté le HC08 à Serial3
		  messageRecu += c;
		  if(c == 'Z') // si le caractère reçu est 'Z' cela signifie que la commande est complète (j'utilise 'Z' car je n'arrive pas à détecter '\n')
		  {
			  // Serial.println(messageRecu); // en commentaire imprime donc la commande reçue du Smartphone qui est entière, par ex.: STOPZ
			  break;  // et on sort de la boucle While puisque la commande est complète et est stockée dans messageRecu
                //et donc prête à être interprétée pour declencher des actions
		  }
	}
 
  if (messageRecu == "STOPZ")
    {
		Serial.println(F("Bluetooth: Appui sur Bouton STOP du Smartphone:"));
		Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "STOPZ"
		// on recopie mot pour mot le code correspondant au STOP reçu de la télécommande 
		stop();
		Serial.println(F("Bluetooth boucle IF stopZ: la fonction Stop a été appelée"));
		//ici ne faut-il pas réinitialiser la variable "messageRecu" puisqu'on est dans une boucle Loop ???
    } // Fin du If STOPZ pour Smartphone
 
  if (messageRecu == "RECORDZ")
    {
        Serial.println(F("Bluetooth: Appui sur Bouton RECORD du Smartphone:"));
		Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "RECZ"
		record(); // appel de la fonction factorisée "record" définie plus haut
		Serial.println(F("Bluetooth boucle IF recordZ: la fonction Record a été appelée"));
		//ici ne faut-il pas réinitialiser  la variable "messageRecu" puisqu'on est dans une boucle Loop ???
    } // Fin du IF pour la fonction RECORDZ par Smartphone
 
  if (messageRecu == "PLAYZ")
    {
        Serial.println(F("Bluetooth: Appui sur Bouton PLAY du Smartphone:"));
		Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "PLAYZ"
		play();
		Serial.println(F("Bluetooth boucle IF playZ: la fonction Play a été appelée"));
		//ici ne faut-il pas réinitialiser  la variable "messageRecu" puisqu'on est dans une boucle Loop ???
    } // Fin du IF pour la fonction PLAYZ par Smartphone
 
  if (messageRecu == "FFZ")
    {
        Serial.println(F("Appui sur Bouton FF du Smartphone:"));
		Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "FFZ"
		fastforward();
		Serial.println(F("Bluetooth boucle IF ffZ: la fonction FF a été appelée"));
		//ici ne faut-il pas réinitialiser  la variable "messageRecu" puisqu'on est dans une boucle Loop ???
    } // Fin du IF pour la fonction FFZ par Smartphone
 
  if (messageRecu == "REWINDZ")
    {
        Serial.println(F("Appui sur Bouton REWIND du Smartphone:"));
		Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "REWZ"
		rew();
		Serial.println(F("Bluetooth boucle IF rewZ: la fonction REW a été appelée"));
		//ici ne faut-il pas réinitialiser  la variable "messageRecu" puisqu'on est dans une boucle Loop ???
    } // Fin du IF pour la fonction REWZ par Smartphone
 
  if (messageRecu == "PAUSEZ")
    {
        Serial.println(F("Appui sur Bouton PAUSE du Smartphone:"));
		Serial.println(messageRecu); // devrait afficher la chaine complète reçue par Bluetooth avec le 'Z' à la fin, càd "PAUSEZ"
		pause();
		Serial.println(F("Bluetooth boucle IF pauseZ: la fonction PAUSE a été appelée"));
		//ici ne faut-il pas réinitialiser  la variable "messageRecu" puisqu'on est dans une boucle Loop ???
    }  
 
  messageRecu=""; // on remet la chaine à vide pour préparer la réception de la commande suivante
 
 
}
 
// put function definitions here:
int myFunction(int x, int y) {
  return x + y;
}
et voici ce que me dit le compilateur:
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
The terminal process "C:\Users\ordic\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 
 
 *  Executing task in folder BT_ESP32_v1.00: C:\Users\ordic\.platformio\penv\Scripts\platformio.exe run 
 
Processing esp-wrover-kit (platform: espressif32; board: esp-wrover-kit; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp-wrover-kit.html
PLATFORM: Espressif 32 (6.12.0) > Espressif ESP-WROVER-KIT
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (ftdi) On-board (ftdi) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b
 - tool-esptoolpy @ 2.40900.250804 (4.9.0)
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 36 compatible libraries
Scanning dependencies...
Dependency Graph
|-- BluetoothSerial @ 1.1.0
|-- DFRobot_LCD-master
|-- Wire @ 2.0.0
Building in release mode
Compiling .pio\build\esp-wrover-kit\src\main.cpp.o
src/main.cpp:10:17: error: no matching function for call to 'BluetoothSerial::BluetoothSerial()'
 BluetoothSerial SerialBT; // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo
                 ^~~~~~~~
In file included from src/main.cpp:9:
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:42:5: note: candidate: 'BluetoothSerial::BluetoothSerial(HardwareSerial&, bool)'       
     BluetoothSerial(HardwareSerial& serial, bool verbose = true);
     ^~~~~~~~~~~~~~~
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:42:5: note:   candidate expects 2 arguments, 0 provided
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note: candidate: 'constexpr BluetoothSerial::BluetoothSerial(const BluetoothSerial&)'
 class BluetoothSerial {
       ^~~~~~~~~~~~~~~
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note:   candidate expects 1 argument, 0 provided
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note: candidate: 'constexpr BluetoothSerial::BluetoothSerial(BluetoothSerial&&)' 
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:17:7: note:   candidate expects 1 argument, 0 provided
src/main.cpp:26:6: error: ambiguating new declaration of 'void pause()'
 void pause();
      ^~~~~
In file included from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/unistd.h:23,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\sys-include\unistd.h:4,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\sys-include\pthread.h:25,
                 from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/pthread.h:21,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\xtensa-esp32-elf\no-rtti\bits\gthr-default.h:48,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\xtensa-esp32-elf\no-rtti\bits\gthr.h:151,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\ext\atomicity.h:35,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits\basic_string.h:39,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\string:52,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\stdexcept:39,      
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\array:39,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\tuple:39,
                 from c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\functional:54,     
                 from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.h:49,
                 from C:/Users/ordic/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:196,
                 from src/main.cpp:1:
c:\users\ordic\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\sys-include\sys\unistd.h:177:9: note: old declaration 'int pause()'
 int     pause (void);
         ^~~~~
src/main.cpp: In function 'void setup()':
src/main.cpp:33:19: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
    SerialBT.begin("Denon_K7"); // selon tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo
                   ^~~~~~~~~~
In file included from src/main.cpp:9:
lib/BluetoothSerial-1.1.0/src/BluetoothSerial.h:51:20: note:   initializing argument 1 of 'void BluetoothSerial::begin(int)'
     void begin(int baudRate = 9600);
                ~~~~^~~~~~~~~~~~~~~
src/main.cpp: In function 'void loop()':
src/main.cpp:40:18: error: 'class BluetoothSerial' has no member named 'available'
   while(SerialBT.available()) // ici on met SerialBT pour coler au tutorial https://www.youtube.com/watch?v=EWxM8Ixnrqo
                  ^~~~~~~~~
src/main.cpp:43:23: error: 'class BluetoothSerial' has no member named 'read'
     char c = SerialBT.read();  // ici aussi on met Serial3.read (non Serial.read) car on a connecté le HC08 à Serial3
                       ^~~~
Compiling .pio\build\esp-wrover-kit\FrameworkArduino\esp32-hal-bt.c.o
*** [.pio\build\esp-wrover-kit\src\main.cpp.o] Error 1
===================================================== [FAILED] Took 1.31 seconds =====================================================
 
 *  The terminal process "C:\Users\ordic\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it.
Merci pour votre éclairage !