I can't get my arduino to execute the commands I send via bluetooth

I can’t get my arduino to execute the commands I send via bluetooth

Any help is appreciated!
This is the code I have:

#include <SoftwareSerial.h>

#define RxD 2
#define TxD 3 // idk what these mean but everyone uses them

SoftwareSerial btserial(RxD, TxD);

#define A1 4
#define B1 5
#define P1 9

#define A2 7
#define B2 8
#define P2 10

#define EN 6

#define an0 14
#define an1 15
#define an2 16
#define an3 17

typedef struct
{
int N1;
int N2;
int P;
} motor;

typedef struct
{
int on;
int off;
} solenoid;

motor left;
motor right;

solenoid grabber;
solenoid lifter;

void setup()
{
pinMode(LED_BUILTIN, OUTPUT);

digitalWrite(LED_BUILTIN, LOW);

Serial.begin(9600);

pinMode(A1, OUTPUT);
pinMode(B1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(B2, OUTPUT);
pinMode(P1, OUTPUT);
pinMode(P2, OUTPUT);
pinMode(an0, OUTPUT);
pinMode(an1, OUTPUT);
pinMode(an2, OUTPUT);
pinMode(an3, OUTPUT);

left.N1 = A1;
left.N2 = B1;
left.P = P1;

right.N1 = A2;
right.N2 = B2;
right.P = P2;

grabber.on = an0;
grabber.off = an1;

lifter.on = an2;
lifter.off = an3;

motors_start(left, right);
solenoid_reset(grabber);
solenoid_reset(lifter);

setup_bt();

digitalWrite(LED_BUILTIN, HIGH);
}

void loop()
{
if (btserial.available() > 0)
{

char c = btserial.read();
if (c == ‘w’)
motors_fwd(left, right);
else if (c == ‘s’)
motors_bwd(left, right);
else if (c == ‘a’)
motors_left(left, right);
else if (c == ‘d’)
motors_right(left, right);
else if (c == ‘x’)
motors_stop(left, right);
else if (c == ‘t’)
blink_led(5, 25);
}
}

void solenoid_on(solenoid s)
{
digitalWrite(s.on, HIGH);
digitalWrite(s.off, LOW);
}

void solenoid_off(solenoid s)
{
digitalWrite(s.on, LOW);
digitalWrite(s.off, HIGH);
}

void solenoid_reset(solenoid s)
{
digitalWrite(s.on, LOW);
digitalWrite(s.off, LOW);
}

void motors_fwd(motor l, motor r)
{
motor_clockwise(l);
motor_clockwise(r);
}

void motors_bwd(motor l, motor r)
{
motor_counterclockwise(l);
motor_counterclockwise(r);
}

void motors_left(motor l, motor r)
{
motor_counterclockwise(l);
motor_clockwise(r);
}

void motors_right(motor l, motor r)
{
motor_counterclockwise(r);
motor_clockwise(l);
}

void motors_stop(motor l, motor r)
{
motor_reset(l);
motor_reset(r);
digitalWrite(l.P, LOW);
digitalWrite(r.P, LOW);
}

void motors_start(motor l, motor r)
{
motor_reset(l);
motor_reset(r);
digitalWrite(l.P, HIGH);
digitalWrite(r.P, HIGH);
}

void motor_reset(motor m)
{
digitalWrite(m.N1, LOW);
digitalWrite(m.N2, LOW);
}

void motor_clockwise(motor m)
{
digitalWrite(m.N1, LOW);
digitalWrite(m.N2, HIGH);
}

void motor_counterclockwise(motor m)
{
digitalWrite(m.N2, LOW);
digitalWrite(m.N1, HIGH);
}

void blink_led(int t, int ms)
{
for (int i = 0; i < t; ++i)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(ms);
digitalWrite(LED_BUILTIN, LOW);
if (i != t - 1)
delay(ms);
}
}

void setup_bt()
{
btserial.begin(9600);
btserial.print(“AT”);
delay(400);
btserial.print(“AT+DEFAULT”); // Restore all setup value to factory setup
delay(2000);
btserial.print(“AT+NAMENSS-Control”); // set the bluetooth name, the length of bluetooth name must less than 12 characters.
delay(400);
btserial.print(“AT+AUTH1”);
delay(400);
btserial.flush();
}

First thing is to use Serial.print() to see what you are receiving from the bluetooth, if anything.

And you probably want a final "else" clause to do something if it gets a command it does not understand, like blink the on-board led a certain way.

#define RxD 2
#define TxD 3 // idk what these mean but everyone uses them

Never a good idea to use code you don't understand. I would work on figuring out what that is first before going any further.

Do you know what #define does? It's kind of like find and replace in a text editor.

Where else in the code do you see those identifiers (RxD and TxD) used? What does that function normally want for arguments? Look that up if you don't know. Then you will know what those two lines do.