-
Notifications
You must be signed in to change notification settings - Fork 7.7k
Closed
Labels
3.0 migrationIssue relates to migration from 2.X to 3.X versionIssue relates to migration from 2.X to 3.X versionArea: BLEIssues related to BLEIssues related to BLE
Description
Board
ESP32
Device Description
Breadboard
Hardware Configuration
GPIO 18 = button
GPIO 19 = button
GPIO 5 = buzzer
Version
latest master (checkout manually)
IDE Name
Arduino IDE
Operating System
Windows 11
Flash frequency
40MHZ
PSRAM enabled
yes
Upload speed
115200
Description
I cant compile.
Sketch
#include <BleKeyboard.h>
#define DOT_PIN 18
#define DASH_PIN 19
#define BUZZER_PIN 5
BleKeyboard bleKeyboard; // Maak een instance van de BleKeyboard
String morseInput = "";
unsigned long lastInputTime = 0;
const unsigned long morseTimeout = 1000; // Pauze na het invoeren van morsecode
// Morsecode vertalingen
const char* morseAlphabet[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};
const char morseLetters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void setup() {
Serial.begin(115200);
pinMode(DOT_PIN, INPUT_PULLUP);
pinMode(DASH_PIN, INPUT_PULLUP);
pinMode(BUZZER_PIN, OUTPUT);
// Initialiseer het Bluetooth toetsenbord
bleKeyboard.begin();
Serial.println("Morse keyboard started.");
}
void loop() {
if (digitalRead(DOT_PIN) == LOW) {
morseInput += ".";
beep(100);
Serial.print(".");
delay(300); // Anti-bounce
lastInputTime = millis(); // Reset pauze-timer
}
if (digitalRead(DASH_PIN) == LOW) {
morseInput += "-";
beep(300);
Serial.print("-");
delay(300); // Anti-bounce
lastInputTime = millis(); // Reset pauze-timer
}
// Verwerking van morsecode en versturen naar het toetsenbord
if (morseInput.length() > 0 && millis() - lastInputTime > morseTimeout) {
char translated = translateMorse(morseInput); // Vertaal morse naar letter
Serial.println(" -> " + String(translated)); // Print de vertaling
sendKey(translated); // Stuur naar Bluetooth toetsenbord
morseInput = ""; // Reset de invoer
}
}
// Beep de buzzer voor een bepaalde tijd
void beep(int duration) {
digitalWrite(BUZZER_PIN, HIGH);
delay(duration);
digitalWrite(BUZZER_PIN, LOW);
}
// Vertaal morse naar een letter
char translateMorse(String morse) {
for (int i = 0; i < 26; i++) {
if (morse == morseAlphabet[i]) {
return morseLetters[i];
}
}
return '?'; // Onbekend teken
}
// Stuur de letter naar het Bluetooth-toetsenbord
void sendKey(char key) {
if (key != '?') {
if (bleKeyboard.isConnected()) {
bleKeyboard.print(key); // Stuur het teken via Bluetooth
} else {
Serial.println("No Bluetooth connection");
}
}
}
Debug Message
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:98:25: error: expected constructor, destructor, or type conversion before '(' token
98 | BleKeyboard::BleKeyboard(string deviceName, string deviceManufacturer, uint8_t batteryLevel)
| ^
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp: In member function 'void BleKeyboard::begin()':
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:106:36: error: no matching function for call to 'String::String(std::string&)'
106 | BLEDevice::init(String(deviceName));
| ^
In file included from C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLEUUID.h:11,
from C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:17,
from C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLEHIDDevice.h:17,
from c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.h:24,
from c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:1:
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:77:12: note: candidate: 'String::String(long long unsigned int, unsigned char)'
77 | explicit String(unsigned long long, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:77:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'long long unsigned int'
77 | explicit String(unsigned long long, unsigned char base = 10);
| ^~~~~~~~~~~~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:76:12: note: candidate: 'String::String(long long int, unsigned char)'
76 | explicit String(long long, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:76:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'long long int'
76 | explicit String(long long, unsigned char base = 10);
| ^~~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:75:12: note: candidate: 'String::String(double, unsigned int)'
75 | explicit String(double, unsigned int decimalPlaces = 2);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:75:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'double'
75 | explicit String(double, unsigned int decimalPlaces = 2);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:74:12: note: candidate: 'String::String(float, unsigned int)'
74 | explicit String(float, unsigned int decimalPlaces = 2);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:74:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'float'
74 | explicit String(float, unsigned int decimalPlaces = 2);
| ^~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:73:12: note: candidate: 'String::String(long unsigned int, unsigned char)'
73 | explicit String(unsigned long, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:73:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'long unsigned int'
73 | explicit String(unsigned long, unsigned char base = 10);
| ^~~~~~~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:72:12: note: candidate: 'String::String(long int, unsigned char)'
72 | explicit String(long, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:72:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'long int'
72 | explicit String(long, unsigned char base = 10);
| ^~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:71:12: note: candidate: 'String::String(unsigned int, unsigned char)'
71 | explicit String(unsigned int, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:71:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'unsigned int'
71 | explicit String(unsigned int, unsigned char base = 10);
| ^~~~~~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:70:12: note: candidate: 'String::String(int, unsigned char)'
70 | explicit String(int, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:70:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'int'
70 | explicit String(int, unsigned char base = 10);
| ^~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:69:12: note: candidate: 'String::String(unsigned char, unsigned char)'
69 | explicit String(unsigned char, unsigned char base = 10);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:69:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'unsigned char'
69 | explicit String(unsigned char, unsigned char base = 10);
| ^~~~~~~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:68:12: note: candidate: 'String::String(char)'
68 | explicit String(char c);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:68:24: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'char'
68 | explicit String(char c);
| ~~~~~^
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:66:3: note: candidate: 'String::String(StringSumHelper&&)'
66 | String(StringSumHelper &&rval);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:66:28: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'StringSumHelper&&'
66 | String(StringSumHelper &&rval);
| ~~~~~~~~~~~~~~~~~~^~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:65:3: note: candidate: 'String::String(String&&)'
65 | String(String &&rval);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:65:19: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'String&&'
65 | String(String &&rval);
| ~~~~~~~~~^~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:63:3: note: candidate: 'String::String(const __FlashStringHelper*)'
63 | String(const __FlashStringHelper *str) : String(reinterpret_cast<const char *>(str)) {}
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:63:37: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const __FlashStringHelper*'
63 | String(const __FlashStringHelper *str) : String(reinterpret_cast<const char *>(str)) {}
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:62:3: note: candidate: 'String::String(const String&)'
62 | String(const String &str);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:62:24: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const String&'
62 | String(const String &str);
| ~~~~~~~~~~~~~~^~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:60:3: note: candidate: 'String::String(const uint8_t*, unsigned int)'
60 | String(const uint8_t *cstr, unsigned int length) : String(reinterpret_cast<const char *>(cstr), length) {}
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:60:3: note: candidate expects 2 arguments, 1 provided
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:58:3: note: candidate: 'String::String(const char*, unsigned int)'
58 | String(const char *cstr, unsigned int length);
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:58:3: note: candidate expects 2 arguments, 1 provided
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:57:3: note: candidate: 'String::String(const char*)'
57 | String(const char *cstr = "");
| ^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\cores\esp32/WString.h:57:22: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const char*'
57 | String(const char *cstr = "");
| ~~~~~~~~~~~~^~~~~~~~~
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:117:32: error: no matching function for call to 'BLECharacteristic::setValue(std::string&)'
117 | hid->manufacturer()->setValue(deviceManufacturer);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:83:8: note: candidate: 'void BLECharacteristic::setValue(double&)'
83 | void setValue(double &data64);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:83:25: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'double&'
83 | void setValue(double &data64);
| ~~~~~~~~^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:82:8: note: candidate: 'void BLECharacteristic::setValue(float&)'
82 | void setValue(float &data32);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:82:24: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'float&'
82 | void setValue(float &data32);
| ~~~~~~~^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:81:8: note: candidate: 'void BLECharacteristic::setValue(int&)'
81 | void setValue(int &data32);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:81:22: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'int&'
81 | void setValue(int &data32);
| ~~~~~^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:80:8: note: candidate: 'void BLECharacteristic::setValue(uint32_t&)'
80 | void setValue(uint32_t &data32);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:80:27: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'uint32_t&' {aka 'long unsigned int&'}
80 | void setValue(uint32_t &data32);
| ~~~~~~~~~~^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:79:8: note: candidate: 'void BLECharacteristic::setValue(uint16_t&)'
79 | void setValue(uint16_t &data16);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:79:27: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'uint16_t&' {aka 'short unsigned int&'}
79 | void setValue(uint16_t &data16);
| ~~~~~~~~~~^~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:77:8: note: candidate: 'void BLECharacteristic::setValue(uint8_t*, size_t)'
77 | void setValue(uint8_t *data, size_t size);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:77:8: note: candidate expects 2 arguments, 1 provided
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:78:8: note: candidate: 'void BLECharacteristic::setValue(String)'
78 | void setValue(String value);
| ^~~~~~~~
C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:78:24: note: no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'String'
78 | void setValue(String value);
| ~~~~~~~^~~~~
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp: At global scope:
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:164:6: error: variable or field 'setName' declared void
164 | void BleKeyboard::setName(string deviceName) {
| ^~~~~~~~~~~
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:164:27: error: 'string' was not declared in this scope
164 | void BleKeyboard::setName(string deviceName) {
| ^~~~~~
c:\Users\niek\OneDrive\Documenten\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:164:27: note: suggested alternatives:
In file included from C:/Users/niek/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2405/xtensa-esp-elf/include/c++/13.2.0/string:41,
from C:\Users\niek\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3\libraries\BLE\src/BLECharacteristic.h:15:
C:/Users/niek/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2405/xtensa-esp-elf/include/c++/13.2.0/bits/stringfwd.h:77:33: note: 'std::string'
77 | typedef basic_string<char> string;
| ^~~~~~
C:/Users/niek/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2405/xtensa-esp-elf/include/c++/13.2.0/string:66:11: note: 'std::pmr::string'
66 | using string = basic_string<char>;
| ^~~~~~
exit status 1
Compilation error: exit status 1
Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide
- I confirm I have checked existing issues, online documentation and Troubleshooting guide.
Metadata
Metadata
Assignees
Labels
3.0 migrationIssue relates to migration from 2.X to 3.X versionIssue relates to migration from 2.X to 3.X versionArea: BLEIssues related to BLEIssues related to BLE