Hello All,
I am fairly new to this programming world and have a few questions, please don't make too much fun of me. Below is my code I am having an issue with. I am controlling two DC motors with a relay shield and a three position latching switch. I can get position B and off to work just fine, but cannot get any response with position A. I am to the point where I'm pretty sure it's something with my code as I've set up a serial monitor and tried swapping inputs and switches. Down the road I would like to add a trimming, for more adjustment, but that will be after I get the three position working first.
Thanks for the help!!
Casey
#define POS_A_ON digitalWrite(POS_A_PIN, HIGH)
#define POS_A_OFF digitalWrite(POS_A_PIN, LOW)
#define POS_B_ON digitalWrite(POS_B_PIN, HIGH)
#define POS_B_OFF digitalWrite(POS_B_PIN, LOW)
#define SWITCH_POSITION_A_PIN 12
#define SWITCH_POSITION_B_PIN 5
#define READ_SWITCH_POSITION_A digitalRead(SWITCH_POSITION_A_PIN)
#define READ_SWITCH_POSITION_B digitalRead(SWITCH_POSITION_B_PIN)
// variables
byte switchState = 0; // to store switch reading 0 = off 1 = posA 2 = posB
byte lastSwitchState = 0; // to check for change
int relay0 = 8; // Relay 0 connected to pin 8 (left out)
int relay1 = 7; // Relay 1 connected to pin 7 (left in)
int relay2 = 2; // Relay 2 connected to pin 2 (right out)
int relay3 = 4; // Relay 3 connected to pin 4 (right in)
int switchPin1 = 6; // Trim switch in
int switchPin2 = 9; // Trim switch out
void setup() {
Serial.begin(9600);
pinMode(SWITCH_POSITION_A_PIN, INPUT);
pinMode(SWITCH_POSITION_B_PIN, INPUT);
pinMode(relay0, OUTPUT); // sets the digital pin as output
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(switchPin1, INPUT);
pinMode(switchPin2, INPUT);
}
void loop(){
// Read the switch and put the result is switchState
if (READ_SWITCH_POSITION_A == HIGH) switchState = 1;
if (READ_SWITCH_POSITION_B == HIGH) switchState = 2;
else switchState = 0;
// Only do anything if the state has changed
if (switchState != lastSwitchState){
lastSwitchState = switchState;
switch(switchState){
case 1:
digitalWrite(relay0, HIGH); // sets relay 0 on (left out)
delay(5000); // waits for 5 second
digitalWrite(relay0, LOW); // sets relay 0 off
Serial.println("A");
break;
case 2:
digitalWrite(relay2, HIGH); // sets relay 2 on (right out)
delay(5000); // waits for 5 second
digitalWrite(relay2, LOW); // sets relay 0 off
Serial.println("B");
break;
case 0:
digitalWrite(relay1, HIGH); // sets relay 1 on (left in)
digitalWrite(relay3, HIGH); // sets relay 3 on (right in)
delay(5000); // waits for 5 second
digitalWrite(relay1, LOW); // sets relay 1 off
digitalWrite(relay3, LOW); // sets relay 3 off
Serial.println("Switch Off");
break;
}
}
}