Here is the stand alone PWM program this works but when I add it to the program I have the above problem. Maybe there is another approach.
////////////////////////////////////
int stir_speed = 80;
int stir_ramp = 20;
int pump_speed = 250;
int pump_ramp = 4;
////////////////////////////////////
#define stir_brake 25
#define pump1_brake 27
#define pump2_brake 29
#define pump3_brake 31
#define pump1_direction 33
#define pump2_direction 35
#define pump3_direction 37
void setup() {
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, HIGH);
digitalWrite(pump2_direction,HIGH);
digitalWrite(pump2_brake, HIGH);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, HIGH);
pinMode(42, OUTPUT); //Analog pin
pinMode(44, OUTPUT); //PWM Output common to all motor drivers
pinMode(46, OUTPUT); //Analog pin
pinMode(stir_brake, OUTPUT);
pinMode(pump1_brake, OUTPUT);
pinMode(pump1_direction, OUTPUT);
pinMode(pump2_brake, OUTPUT);
pinMode(pump2_direction, OUTPUT);
pinMode(pump3_brake, OUTPUT);
pinMode(pump3_direction, OUTPUT);
int motorspeed = 0;
}
void loop() {
digitalWrite(stir_brake, LOW);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, HIGH);
digitalWrite(pump2_direction,HIGH);
digitalWrite(pump2_brake, HIGH);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, HIGH);
for ( int motorspeed ; motorspeed < stir_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(stir_ramp);
}
delay(2000);
for (int motorspeed = stir_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(stir_ramp);
}
delay(20);
/////////////////////
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, LOW);
digitalWrite(pump2_direction,HIGH);
digitalWrite(pump2_brake, HIGH);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, HIGH);
for (int motorspeed = 0; motorspeed < pump_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(2000);
for (int motorspeed = pump_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
// pause between LEDs:
delay(20);
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, LOW);
digitalWrite(pump2_direction,LOW);
digitalWrite(pump2_brake, HIGH);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, HIGH);
// iterate over the pins:
for (int motorspeed = 0; motorspeed < pump_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(2000);
for (int motorspeed = pump_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(20);
/////////////////////
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, HIGH);
digitalWrite(pump2_direction,HIGH);
digitalWrite(pump2_brake, LOW);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, HIGH);
for (int motorspeed = 0; motorspeed < pump_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(2000);
for (int motorspeed = pump_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(20);
/////////////////////
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, HIGH);
digitalWrite(pump2_direction,LOW);
digitalWrite(pump2_brake, LOW);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, HIGH);
for (int motorspeed = 0; motorspeed < pump_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(2000);
for (int motorspeed = pump_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(20);
/////////////////////
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, HIGH);
digitalWrite(pump2_direction,HIGH);
digitalWrite(pump2_brake, HIGH);
digitalWrite(pump3_direction,HIGH);
digitalWrite(pump3_brake, LOW);
for (int motorspeed = 0; motorspeed < pump_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(2000);
for (int motorspeed = pump_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(20);
/////////////////////
digitalWrite(stir_brake, HIGH);
digitalWrite(pump1_direction,HIGH);
digitalWrite(pump1_brake, HIGH);
digitalWrite(pump2_direction,HIGH);
digitalWrite(pump2_brake, HIGH);
digitalWrite(pump3_direction,LOW);
digitalWrite(pump3_brake, LOW);
for (int motorspeed = 0; motorspeed < pump_speed; motorspeed++) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(2000);
for (int motorspeed = pump_speed; motorspeed >= 0; motorspeed--) {
analogWrite(44, motorspeed);
delay(pump_ramp);
}
delay(20);
}