Code pour controler moteur DC

bonjour,
déjà que vient faire cette ligne?

         if (touche=='S'|| touche=='Q' || touche=='D'|| touche=='W')

le mieux serait d'utiliser switch case
ca te permettrait peut être de voir que ton

if (Serial.available() > 0) // On detecte un appui sur une touche
  {

s'arrête avant

    if (touche == 'S')

donc normal que tu ne sorte pas de ta boucle, vu que les autres possibilités ne sont pas reconnues.