/*

pin assignments:

10   - base of npn transistor #1 2n2222 (either one)

11  - base of npn transistor #2 2n2222 (the other one…)

*/


int t1 = 10;


int t2 = 11;


int speedValue;


void setup(){

pinMode(t1, OUTPUT);

pinMode(t2, OUTPUT);

off();

delay(5000);

}


void loop(){

forward();

delay(3000);

reverse();

delay(3000);

off();

delay(3000);

}



void forward() {

digitalWrite(t1, LOW);


  // ramp in from min to max in increments of 5 points:

  for(int speedValue = 0 ; speedValue <= 255; speedValue +=5) { 

    // sets the value (range from 0 to 255):

    analogWrite(t2, speedValue);         

    // wait for 30 milliseconds to see the effect    

    delay(30);                            

  } 


  // ramp out from max to min in increments of 5 points:

  for(int speedValue = 255 ; speedValue >= 0; speedValue -=5) { 

    // sets the value (range from 0 to 255):

    analogWrite(t2, speedValue);         

    // wait for 30 milliseconds to see the effect    

    delay(30);                            

  } 



}


void reverse(){

digitalWrite(t2, LOW);


  // ramp in from min to max in increments of 5 points:

  for(int speedValue = 0 ; speedValue <= 255; speedValue +=5) { 

    // sets the value (range from 0 to 255):

    analogWrite(t1, speedValue);         

    // wait for 30 milliseconds to see the effect    

    delay(30);                            

  } 


  // ramp out from max to min in increments of 5 points:

  for(int speedValue = 255 ; speedValue >= 0; speedValue -=5) { 

    // sets the value (range from 0 to 255):

    analogWrite(t1, speedValue);         

    // wait for 30 milliseconds to see the effect    

    delay(30);                            

  } 


}


void off() {

analogWrite(t1, 0);

digitalWrite(t2, HIGH);

}