Hi!
The software in my SEEED shall be connected via BLE to a computer and when the microphone in the SEEED hears a loud sound, it shall send the letter “A” to the computer its connected to via BLE.
I have succeded to connect now, tx to you But now I have other problem… never ending story…
The code below can connect to a computer and also to my Iphone via BLE, but no “A” is sent. The Arduino IDE:s Serial monitor say its sent, but no A is written to the Iphone or the computer. So something is strange with that part of the code below:
#include <bluefruit.h>
#include <Adafruit_TinyUSB.h>
// Variabler för ljuddetektion
const int micPin = A0; // Mikrofon ansluten till analog pin A0
const int threshold = 50; // Sänkt tröskelvärde för högre känslighet
// Variabel för glidande medelvärde
int averageLevel = 0;
// Skapa BLE HID-tangentbord
BLEDis bledis; // Enhetens namn- och informationstjänst
BLEHidAdafruit blehid; // BLE HID-tjänst
void setup() {
Serial.begin(115200);
// Initiera BLE
Bluefruit.begin();
Bluefruit.setName("XIAO BLE Keyboard");
// Initiera enhetstjänster
bledis.setManufacturer("Seeed Studio");
bledis.setModel("XIAO nRF52840");
bledis.begin();
// Initiera HID-tangentbord
blehid.begin();
// Starta annonsering (gör enheten synlig för Bluetooth-parning)
Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addAppearance(BLE_APPEARANCE_HID_KEYBOARD);
Bluefruit.Advertising.addService(blehid);
Bluefruit.Advertising.start();
// Konfigurera mikrofonens ingång
pinMode(micPin, INPUT);
Serial.println("BLE HID-tangentbord redo.");
}
void loop() {
// Läs av mikrofonens ljudnivå
int soundLevel = analogRead(micPin);
// Beräkna glidande medelvärde för att hantera bakgrundsljud
averageLevel = (averageLevel * 9 + soundLevel) / 10;
// Visa aktuellt ljudnivåvärde och medelvärde i seriell monitor
Serial.print("Ljudnivå: ");
Serial.print(soundLevel);
Serial.print(" Medelvärde: ");
Serial.println(averageLevel);
// Kontrollera om ljudnivån överstiger tröskeln
if (averageLevel > threshold) {
Serial.println("Högt ljud upptäckt!");
// Kontrollera om tangentbordet är anslutet via BLE
if (Bluefruit.connected()) {
Serial.println("Enheten är ansluten som tangentbord.");
// Skicka bokstaven "A" via keyPress och keyRelease
blehid.keyPress(0x04); // KEY_A har värdet 0x04 enligt HID-specifikationen
Serial.println("Skickar bokstaven A...");
delay(500); // Vänta längre för att se om det hjälper
blehid.keyRelease(); // Släpp tangenten
Serial.println("Tangenten släppt.");
} else {
Serial.println("Tangentbord ej anslutet via BLE.");
}
// Liten paus för att undvika flera avtryck
delay(500);
}
delay(10); // Stabilitetsfördröjning
}
I have tryed: “keyPress(KEY_A)” Does not work. I have tryed: “blehid.keyPress(0x28)” does not work.
I have tryed: " blehid.keyboardWrite(‘A’);" does not work and as you se abowe: “blehid.keyPress(0x04);” does not work.
Any ideas?
Cheers Fredrik