Arduino Solar Tracker (5 / 5 steg)
Steg 5: Koden
Du kan hämta koden ner denna sidan/ * här koden är skriven av geobruce
för mer info kolla min webbplats http://xprobe.net
*/
#include < Servo.h > / / include Servo bibliotek
Servo horisontell. horisontella servo
int servoh = 90. stå horisontella servo
Servo vertikal; vertikala servo
int servov = 90. stå lodrät servo
LDR pin-anslutningar
namn = analogpin;
int ldrlt = 0; LDR överst till vänster
int ldrrt = 1; LDR topp rigt
int ldrld = 2; LDR nedåt vänster
int ldrrd = 3; LDR ner rigt
void setup()
{
Serial.BEGIN(9600);
servo anslutningar
Name.attacht(PIN);
Horizontal.attach(9);
Vertical.attach(10);
}
void loop()
{
int lt = analogRead(ldrlt); överst till vänster
int rt = analogRead(ldrrt); längst upp till höger
int ld = analogRead(ldrld); nedåt vänster
int rd = analogRead(ldrrd); ned rigt
int dtime = analogRead (4) / 20; Läs potentiometrar
int tol = analogRead (5) / 4.
int avt = (lt + rt) / 2; genomsnittliga värdet topp
int avd = (ld + rd) / 2; genomsnittliga värdet ner
int avl = (lt + ld) / 2; medelvärdet på vänster
int avr = (rt + rd) / 2; genomsnittliga värde rätt
int dvert = avt - avd; Kontrollera diffirence för upp och ner
int dhoriz = avl - avr; / / kolla diffirence og vänster och rigt
om (-1 * tol > dvert || dvert > tol) / / check om diffirence i toleransen annars ändra vertikala vinkeln
{
om (avt > avd)
{
servov = ++ servov;
om (servov > 180)
{
servov = 180;
}
}
annars om (avt < avd)
{
servov =--servov;
om (servov < 0)
{
servov = 0;
}
}
Vertical.write(servov);
}
om (-1 * tol > dhoriz || dhoriz > tol) / / check om diffirence i toleransen annat ändra horisontell vinkel
{
om (avl > avr)
{
servoh =--servoh;
om (servoh < 0)
{
servoh = 0;
}
}
annars om (avl < avr)
{
servoh = ++ servoh;
om (servoh > 180)
{
servoh = 180;
}
}
annars om (avl == avr)
{
ingenting
}
Horizontal.write(servoh);
}
Delay(dtime);
}