// Solar Panel Cleaner Robot
#include <Servo.h>
Servo servo1; //servo object 1
Servo servo2; // servo object 2
int servo1_pin = 9; // servo 1 signal pin to arduino D9
int servo2_pin = 10; // servo 2 signal pin to arduino D10
int sprayer_pin = 5; // sprayer control pin to arduino D5
int sensor_pin = 6; // sensor pin to arduino D6
int wipe_time = 5000; // time for each servo to run in milliseconds
int servo1_min = 0; // minimum angle for servo 1
int servo1_max = 180; // maximum angle for servo 1
int servo2_min = 0; // minimum angle for servo 2
int servo2_max = 180; // maximum angle for servo 2
int servo1_pos = 0; // variable to store servo 1 position
int servo2_pos = 0; // variable to store servo 2 position
int servo1_stepdelay = wipe_time/(servo1_max-servo1_min); // time delay for servo 1 step
int servo2_stepdelay = wipe_time/(servo2_max-servo2_min); // time delay for servo 2 step
void setup(){
servo1.attach(servo1_pin);
servo2.attach(servo2_pin);
servo1.write(servo1_min);
servo2.write(servo2_min);
pinMode(sprayer_pin, OUTPUT);
pinMode(sensor_pin, INPUT);
}
void loop(){
if(digitalRead(sensor_pin) == 0){
digitalWrite(sprayer_pin, HIGH); // turn on the sprayer
//move servo1 forward
for(servo1_pos = servo1_min; servo1_pos <= servo1_max; servo1_pos +=1){
servo1.write(servo1_pos);
delay(servo1_stepdelay);
}
// move servo1 backward
for(servo1_pos = servo1_max; servo1_pos >= servo1_min; servo1_pos -=1){
servo1.write(servo1_pos);
delay(servo1_stepdelay);
}
delay(300); // time delay before moving servo2
//move servo2 forward
for(servo2_pos = servo2_min; servo2_pos <= servo2_max; servo2_pos +=1){
servo2.write(servo2_pos);
delay(servo2_stepdelay);
}
// move servo2 backward
for(servo2_pos = servo2_max; servo2_pos >= servo2_min; servo2_pos -=1){
servo2.write(servo2_pos);
delay(servo2_stepdelay);
}
delay(300); // time delay before moving servo 1;
}
else{
digitalWrite(sprayer_pin, LOW); // turn off the sprayer
}
}