Created
October 17, 2017 21:20
-
-
Save giljr/1eb65cd2ef14470dfe953dc16947f13d to your computer and use it in GitHub Desktop.
J3 Solar Tracker Turret V1.0 / Visit : https://goo.gl/MtRcYe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Servo.h> // include Servo library | |
Servo horizontal; // horizontal servo | |
int servoh = 90; // stand horizontal servo | |
Servo vertical; // vertical servo | |
int servov = 90; // stand vertical servo | |
// LDR pin connections | |
// name = analogpin; | |
int ldrlt = 0; //LDR top left | |
int ldrrt = 1; //LDR top rigt | |
int ldrld = 2; //LDR down left | |
int ldrrd = 3; //ldr down rigt | |
void setup() | |
{ | |
Serial.begin(9600); | |
// servo connections | |
// name.attach(pin); | |
horizontal.attach(9); | |
vertical.attach(10); | |
} | |
void loop() | |
{ | |
int lt = analogRead(ldrlt); // top left | |
int rt = analogRead(ldrrt); // top right | |
int ld = analogRead(ldrld); // down left | |
int rd = analogRead(ldrrd); // down rigt | |
int dtime = analogRead(4) / 20; // read potentiometers | |
int tol = analogRead(5) / 4; | |
int avt = (lt + rt) / 2; // average value top | |
int avd = (ld + rd) / 2; // average value down | |
int avl = (lt + ld) / 2; // average value left | |
int avr = (rt + rd) / 2; // average value right | |
int dvert = avt — avd; // check the diffirence of up and down | |
int dhoriz = avl — avr;// check the diffirence og left and rigt | |
if (-1 * tol > dvert || dvert > tol) // check if the diffirence is in the | |
//tolerance else change vertical angle | |
{ | |
if (avt > avd) | |
{ | |
servov = ++servov; | |
if (servov > 180) | |
{ | |
servov = 180; | |
} | |
} | |
else if (avt < avd) | |
{ | |
servov = — servov; | |
if (servov < 0) | |
{ | |
servov = 0; | |
} | |
} | |
vertical.write(servov); | |
} | |
if (-1 * tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle | |
{ | |
if (avl > avr) | |
{ | |
servoh = — servoh; | |
if (servoh < 0) | |
{ | |
servoh = 0; | |
} | |
} | |
else if (avl < avr) | |
{ | |
servoh = ++servoh; | |
if (servoh > 180) | |
{ | |
servoh = 180; | |
} | |
} | |
else if (avl = avr) | |
{ | |
// nothing | |
} | |
horizontal.write(servoh); | |
} | |
delay(dtime); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment