Closed
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.