Du kannst nur etwas von der Seriellen Schnittstelleempfangen, wenn auch etwas da ist! Dazu empfiehlt es sich, vor dem Lesen mit if (Serial.available() > 0) zu überprüfen, ob tatsächlich etwas gesendet wurde.
Serial.read() gibt dir den ASCII Code des empfangenen Zeichens zurück. Da du hier Dezimalzahlen in Integer umwandeln willst, bietet sich stattdessen die Funktion Serial.parseInt() an. Die gibt dir eine Ganzzahl zurück.
Ein Delay während der Eingabe ist äußerst ungünstig, wenn deine Steuerung schnell reagieren soll. Raus damit!
"speedA" ist nicht als Variable deklariert, stattdessen nur "speed". Du musst immer dieselben Bezeichnungen verwenden.
ungetester korrigierter Code:
const int direction =12;
const int speed = 3;
void setup(){
pinMode(direction,OUTPUT);
pinMode(speed,OUTPUT);
digitalWrite(direction,HIGH);
Serial.begin(9600);
Serial.println("Motorgeschwindigkeit eingeben");
}
void loop(){
if (Serial.available() > 0){
int v = Serial.parseInt();
analogWrite(speed,v);
}
}