Button and arduino


I want click button (atd.forward) on app and car with arduino nano RP2040 go forward. Why this not working ?
code arduino :slight_smile: #include <ArduinoBLE.h>
#include <Servo.h>

BLEService rcCarService("19B10000-E8F2-537E-4F6C-D104768A1214");
BLECharCharacteristic cmdCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLEWrite);

#define SERVO_PIN 3
#define MOTOR_1A 7
#define MOTOR_1B 8
#define ONBOARD_LED 13 // Onboard LED pin for Arduino Nano RP2040 Connect

Servo steeringServo;

// Function prototype
void cmdWritten(BLEDevice central, BLECharacteristic characteristic);

void setup() {
Serial.begin(9600);

pinMode(SERVO_PIN, OUTPUT);
pinMode(MOTOR_1A, OUTPUT);
pinMode(MOTOR_1B, OUTPUT);
pinMode(ONBOARD_LED, OUTPUT);

steeringServo.attach(SERVO_PIN);

if (!BLE.begin()) {
    Serial.println("failed to initialize BLE!");
    while (1) {
    }
}

BLE.setLocalName("RCCar");
BLE.setAdvertisedService(rcCarService);
rcCarService.addCharacteristic(cmdCharacteristic);
BLE.addService(rcCarService);
BLE.advertise();
Serial.println("Bluetooth® device active, waiting for connections...");

// Set the event handler for the characteristic
cmdCharacteristic.setEventHandler(BLEWritten, cmdWritten);

}

void loop() {
BLEDevice central = BLE.central();

if (central) {
    Serial.print("Connected to central: ");
    Serial.println(central.address());

    while (central.connected()) {
        // Do nothing
    }

    Serial.print("Disconnected from central: ");
    Serial.println(central.address());
}

}

void cmdWritten(BLEDevice central, BLECharacteristic characteristic) {
char cmd = characteristic.value()[0];
executeCommand(cmd);
}

void executeCommand(char cmd) {
switch (cmd) {
case 'F':
digitalWrite(MOTOR_1A, HIGH);
digitalWrite(MOTOR_1B, LOW);
digitalWrite(ONBOARD_LED, HIGH); // Turn on onboard LED for forward command
break;
case 'B':
digitalWrite(MOTOR_1A, LOW);
digitalWrite(MOTOR_1B, HIGH);
digitalWrite(ONBOARD_LED, HIGH); // Turn on onboard LED for backward command
break;
case 'L':
steeringServo.write(15);
digitalWrite(ONBOARD_LED, HIGH); // Turn on onboard LED for left command
break;
case 'R':
steeringServo.write(0);
digitalWrite(ONBOARD_LED, HIGH); // Turn on onboard LED for right command
break;
case 'S':
digitalWrite(MOTOR_1A, LOW);
digitalWrite(MOTOR_1B, LOW);
digitalWrite(ONBOARD_LED, LOW); // Turn off onboard LED for stop command
break;
default:
// Unknown command, do nothing
break;
}
}