Hacer funcionar un ventilador y un servo a la vez

Hola muy buenas quisiera saber si alguien me podria ayudar con este problema, paso a explicaros que es lo que estoy haciendo. Lo quiero hacer es enviar un caracter en este caso, y que mi ventilador se mueva a distintas velocidades tal que asi: envio por el monitor de serie el carater “!” que seria “33” el ventilador se, luego mando el siguiente caracter y aumenta la velocidad hasta que llega a la velocidad max que seria el caracter “,” que seria “44” hasta ahora no he tenido problemas con esto el problema surge cuando quiero enviar el caracter “%” se mueva el ventilador a la velocidad que le corresponde que seria “37” y a la vez que el sevo se quede en la posicion 90º hasta que cambien de caracter, el problema que me surge es que al enviar el caracter “%” el servo se mueve a los 90º sin embargo el ventilador no se mueve a la venlocidad que debería y lo hace al max. Aqui os dejo lo que hasta ahora he hecho.

#include<Servo.h>
#include <Sensirion.h>

const uint8_t dataPin = 2; //Declaracion patillas arduino
const uint8_t clockPin = 3;
int motor = 9;
int a;
const uint8_t servopin=12;
float temperature; //Declaracion variables
float humidity;
float dewpoint;
int pwmc;


Servo myservo1;
Sensirion tempSensor = Sensirion(dataPin, clockPin); //Declaracion objeto sensor
void setup()
{
Serial.begin(9600); //Declaracion puerto serie
myservo1.attach(servopin);
pinMode(9, OUTPUT);

}
void loop() {
  tempSensor.measure(&temperature, &humidity,&dewpoint);
  Serial.println(temperature*100);
  Serial.println(humidity*100);
  delay (200);
  
while (Serial.available()>0){ 

a = Serial.read();

if (a>='!' && a<=','){
 int pwmc = map(a,'!',',',255,0);
analogWrite(motor,pwmc);
if (a=='%'){ int a=90; myservo1.write(a);}
}

}

}

Muchas gracias de antemano.