so im using some 3 way toggle switches to control a motor. ive got the switch wired so that the pins on the end go to digital 9 and 10 with the common going to gnd. it runs to motor forward in position one nd stops in positions 2 put has no response to what should make it run in reverse . any ideas?
below is my code:
int m1 = 6; // motor 1 enable
int in1 = 8; // motor 1 input 1
int in2 = 7; // motor 1 input 2
int m2 = 3; // motor 2 enable
int in3 = 5; // motor 2 input 1
int in4 = 4; // motor 2 input 2
int pot = A1; // pot for speed control
int pos1 = 9; // forward position
int pos2 = 10; // rear position
void setup() {
pinMode(m1, OUTPUT); // set pin as output
pinMode(in1, OUTPUT); // set pin as output
pinMode(in2, OUTPUT); // set as output
pinMode(m2, OUTPUT); // set as output
pinMode(in3, OUTPUT); // set as output
pinMode(in4, OUTPUT); // SET AS output
pinMode(pos1, INPUT_PULLUP); // set button to inpput w/ pullup resisstor
pinMode(pos2, INPUT_PULLUP);
}
void loop() {
int spd = analogRead(pot); // read pot positi on
spd = map(spd, 0, 1023, 70, 254); // map pot range to pwm range
byte state1 = digitalRead(pos1); // set btn state
byte state2 = digitalRead(pos2); // set btn state
if (state1 == LOW) { // if swith in forward postion run motor forward a set speed
digitalRead(spd);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(m1, spd); // set motor 1
}
if (state2 == LOW) { // if switch in rear position run motor backwards at set speed
digitalRead(spd);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(m1, spd);
}
else { // motor off, mid position
analogWrite(m1, 0);
analogWrite(m2, 0);
}
}