problems with 3 12V DC fans and PWM

I'm working on a laser spirograph and so I need to drive 3 12V DC fans and control the speed using PWM. I'm using a TIP120 to drive each fan and have a diode connected in parallel with each fan. Everything works fine if I only have one fan on at a time but once I try to turn on another fan it wont turn on until I turn the other ones off, so only one fan can be on at a time. The fans draw 0.16A at 12V each and I'm powering them with an AC adapter that can give .5A at 12V. I'm pretty sure my AC adapter should be able to supply enough power to all fans at once so I can't figure out why I cant have more than one on at a time. Here is the arduino code I'm using:

int firstByte;
int numericSerialNumber;

int pinA = 10;
int pinB = 9;
int pinC = 11;

int dataValueA = 0;
int dataValueB = 0;
int dataValueC = 0;

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

void readIn()
{
  if (Serial.available() > 0)
  {
    firstByte = Serial.read();
    
    
    if (firstByte == 'a' && Serial.available() == 3)
    {
      dataValueA = Serial.parseInt();
      Serial.println("a");
    }
    
    if (firstByte == 'b' && Serial.available() ==3)
    {
       dataValueB = Serial.parseInt();
       Serial.println("b");
    }
    
    if (firstByte == 'c' && Serial.available() ==3)
    {
       dataValueC = Serial.parseInt();
       Serial.println("c");
    }
    
    if (firstByte == 'o' && Serial.available() == 0)
    {
      dataValueA = 0;
      dataValueB = 0;
      dataValueC = 0;
    }
  }
}

void loop()
{
  readIn();
  analogWrite(pinA, dataValueA);
  analogWrite(pinB, dataValueB);
  analogWrite(pinC, dataValueC);
}

The incoming serial data is formatted as "a120", this sets pinA to 120 using analogWrite().

Any ideas/suggestions?

I'm surprised it works at all. Consider what happens when the Arduino has received 'a' but has not yet received all of the 3 following digits. Function readIn will read the 'a' but find it does not have 3 characters left, so will do nothing. Meanwhile it has consumed the 'a', so when the 3 digits do come in, it will do nothing with them other than consume them. You need to rewrite Serial.read as a state machine.