int El_Command = A0; // Elevation Command from Joystick
int Tr_Command = A2; // Traversing Command from Joystick
const int Break_Releasing_Switch = 36; // Break Releasing from Joystick
const int El_Up_Limit_Switch = 53; // Elevation Up Limit Switch
const int El_Down_Limit_Switch = 49; // Elevation Down Limit Switch
const int Tr_Limit_Left_Switch = 45; // Traversing Left Limit Switch
const int Tr_Limit_Right_Switch = 41; // Traversing Right Limit Switch
int El_Motor_Up = 4; // Elevation Motor Up Pin
int El_Motor_Down = 2; // Elevation Motor Down Pin
int Tr_Motor_Left = 6; // Traversing Motor Left Pin
int Tr_Motor_Right = 8; // Traversing Motor Right Pin
const int El_Break_Releasing_Command = 23; // Elevation Break Releasing Pin
const int Tr_Break_Releasing_Command = 27; // Traversing Break Releasing Pin
void setup()
{
// Defining IP & OP Pins
pinMode(El_Command, INPUT);
pinMode(Tr_Command, INPUT);
pinMode(Break_Releasing_Switch, INPUT);
pinMode(El_Up_Limit_Switch, INPUT);
pinMode(El_Down_Limit_Switch, INPUT);
pinMode(Tr_Limit_Left_Switch, INPUT);
pinMode(Tr_Limit_Right_Switch, INPUT);
pinMode(El_Motor_Up, OUTPUT);
pinMode(El_Motor_Down, OUTPUT);
pinMode(Tr_Motor_Left, OUTPUT);
pinMode(Tr_Motor_Right, OUTPUT);
pinMode(El_Break_Releasing_Command, OUTPUT);
pinMode(Tr_Break_Releasing_Command, OUTPUT);
//Initializing Serial Communications
Serial.begin(9600);
}
void loop()
{
int El_Command_Val = analogRead(El_Command); //Reading Elevation Value
int Tr_Command_Val = analogRead(Tr_Command); //Reading Traversing Value
int Break_Releasing_Switch_Val = digitalRead(Break_Releasing_Switch); // Reading Break Releasing Pin Value
int El_Up_Limit_Switch_Val = digitalRead(El_Up_Limit_Switch); // Reading Elevation Up Limit Pin Value
int El_Down_Limit_Switch_Val = digitalRead(El_Down_Limit_Switch); // Reading Elevation Down Limit Pin Value
int Tr_Limit_Left_Switch_Val = digitalRead(Tr_Limit_Left_Switch); // Reading Traversing Left Limit Pin Value
int Tr_Limit_Right_Switch_Val = digitalRead(Tr_Limit_Right_Switch); // Reading Traversing Right Limit Pin Value
if(Break_Releasing_Switch_Val == HIGH)
{
if(El_Command_Val > 514 && El_Command_Val <= 769) // El Motor Up - Slow Speed
{
digitalWrite(El_Break_Releasing_Command,HIGH);
analogWrite(El_Motor_Up, 200);
}
else if(El_Command_Val > 770 && El_Command_Val <= 1024) // El Motor Up - High Speed
{
digitalWrite(El_Break_Releasing_Command,HIGH);
analogWrite(El_Motor_Up, 250);
}
else if(El_Command_Val > 255 && El_Command_Val <= 510) // El Motor Down - Slow Speed
{
digitalWrite(El_Break_Releasing_Command,HIGH);
analogWrite(El_Motor_Down, 200);
}
else if(El_Command_Val > 0 && El_Command_Val <= 254) // El Motor Down - High Speed
{
digitalWrite(El_Break_Releasing_Command,HIGH);
analogWrite(El_Motor_Down, 250);
}
}
else
{
digitalWrite(El_Break_Releasing_Command,LOW);
analogWrite(El_Motor_Up, 0);
analogWrite(El_Motor_Down, 0);
}
if(Break_Releasing_Switch_Val == HIGH)
{
if(Tr_Command_Val > 514 && Tr_Command_Val <= 769) // Tr Motor Left - Slow Speed
{
digitalWrite(Tr_Break_Releasing_Command,HIGH);
analogWrite(Tr_Motor_Left, 200);
}
else if(Tr_Command_Val > 770 && Tr_Command_Val <= 1024) // Tr Motor Left - High Speed
{
digitalWrite(Tr_Break_Releasing_Command,HIGH);
analogWrite(Tr_Motor_Left, 250);
}
else if(Tr_Command_Val > 255 && Tr_Command_Val <= 510) // Tr Motor Right - Slow Speed
{
digitalWrite(Tr_Break_Releasing_Command,HIGH);
analogWrite(Tr_Motor_Right, 200);
}
else if(Tr_Command_Val > 0 && Tr_Command_Val <= 254) // Tr Motor Right - High Speed
{
digitalWrite(Tr_Break_Releasing_Command,HIGH);
analogWrite(Tr_Motor_Right, 250);
}
}
else
{
digitalWrite(Tr_Break_Releasing_Command,LOW);
analogWrite(Tr_Motor_Left, 0);
analogWrite(Tr_Motor_Right, 0);
}
//Serial.println(El_Command_Val); // Print El Command value
//Serial.println(Tr_Command_Val); // Print Tr Command value
//delay(1); // Delay between readings
}