Skip to content

Cant compile #11138

Closed
Closed
@niekie813

Description

@niekie813

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 versionArea: BLEIssues related to BLE

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions