// define pin numbers:
#define redbutton 12
#define greenbutton 13
#define IN1 6
#define IN2 9
#define IN3 10
#define IN4 11
#define ldrEast 7
#define ldrWest 8
#define ldrUp 4
#define ldrDown 5
int ldrEastState = 0; //variable for reading east LDR status
int ldrWestState = 0; //variable for reading west LDR status
int ldrUpState = 0; //variable for reading Up LDR status
int ldrDownState = 0; //variable for reading Down LDR status
void setup() {
pinMode(IN1, OUTPUT);//make two output pins
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);//make two output pins
pinMode(IN4, OUTPUT);
pinMode(ldrEast, INPUT); //make LDR input pin
pinMode(ldrWest, INPUT); //make LDR input pin
pinMode(ldrUp, INPUT); //make LDR input pin
pinMode(ldrDown, INPUT); //make LDR input pin
pinMode(redbutton, INPUT); //make red button input pin
digitalWrite (redbutton, HIGH);
pinMode(greenbutton, INPUT); //make green button input pin
digitalWrite (greenbutton, HIGH);
}
void loop() {
//check east-west orientation first
ldrEastState = digitalRead(ldrEast); //read east ldr
ldrWestState = digitalRead(ldrWest); //read west ldr
digitalWrite(IN1,LOW); //set signal to motor driver board to low
digitalWrite(IN2,LOW); //set signal to motor driver board to low
digitalWrite(IN3,LOW); //set signal to motor driver board to low
digitalWrite(IN4,LOW); //set signal to motor driver board to low
//manual overwrite to orientate panel to west
if (digitalRead (greenbutton) == LOW) {
analogWrite (IN2,150); //turn motor CCW to go towards west
} else {
digitalWrite (IN2,LOW);
}
//manual overwrite to orientate panel to east
if (digitalRead (redbutton) == LOW) {
analogWrite (IN1, 150); //turn motor CW to go towards east
} else {
digitalWrite (IN1, LOW);
}
if (ldrWestState == HIGH) {
if (ldrEastState == LOW) {
analogWrite (IN2,150); //turn motor CCW to go towards west
} else {
}
}
if (ldrWestState == LOW) {
if (ldrEastState == HIGH) {
analogWrite (IN1, 150); //turn motor CW to go towards east
} else {
}
}
delay (500); //wait 0.5 second
//check up-down orientation after eas-west orientation has been adjusted
ldrUpState = digitalRead(ldrUp); //read up ldr
ldrDownState = digitalRead(ldrDown); //read down ldr
digitalWrite(IN1,LOW); //set signal to motor driver board to low
digitalWrite(IN2,LOW); //set signal to motor driver board to low
digitalWrite(IN3,LOW); //set signal to motor driver board to low
digitalWrite(IN4,LOW); //set signal to motor driver board to low
if (ldrUpState == HIGH) {
if (ldrDownState == LOW) {
analogWrite (IN3,150); //ON tilt motor to rotate up
} else {
}
}
if (ldrUpState == LOW) {
if (ldrDownState == HIGH) {
analogWrite (IN4, 150); //ON tilt motor to rotate down
} else {
}
}
delay (500); //wait 0.5 second
}
Comments