Paso 11: El código para controlar el seguidor-solar
Sube el código aquí al Arduino.
Ud. puede modificar el código para cambiar el sensibilidad de los sensores y la velocidad de los servos.
#include / / include biblioteca Servo
MÁXIMO horizontal 180
Servo horizontal; servo horizontal
int servoh = 180; 90; soporte servo horizontal
int servohLimitHigh = 180;
int servohLimitLow = 65;
65 grados máximo
Servo vertical; servo vertical
servov int = 45; 90; soporte servo vertical
int servovLimitHigh = 80;
int servovLimitLow = 15;
Conexiones de perno LDR
nombre = analogpin;
int ldrlt = 0; LDR parte superior izquierda - inferior izquierda <---BDG
int ldrrt = 1; LDR rigt superior - parte inferior derecha
int ldrld = 2; LDR abajo a la izquierda - arriba izquierda
int ldrrd = 3; LDR abajo rigt - arriba derecha
void setup()
{Serial.begin(9600);
conexiones de servo
Name.attacht(PIN);
horizontal.Attach(9);
vertical.Attach(10);
horizontal.Write(180);
vertical.Write(45);
Delay(3000);
}
void loop()
{int lt = analogRead(ldrlt); / / superior izquierda
int rt = analogRead(ldrrt); arriba a la derecha
int ld = analogRead(ldrld); abajo a la izquierda
rd de int = analogRead(ldrrd); abajo a la derecha
int tiempo = analogRead 4/20; leer los potenciómetros
int tol = analogRead 5/4;
tiempo de int = 10; tol de int = 50;
avt int = (lt + rt) / 2; arriba del valor medio
avd de int = (ld + rd) / 2; valor promedio por
int avl = (lt + ld) / 2; valor medio izquierda
avr de int = (rt + rd) / 2; valor medio derecha
dvert int = avt - avd; comprobar la diffirence de arriba y abajo
dhoriz int = avl - avr; / cheque de la diffirence og izquierda y rigt
Serial.Print(AVT);
Serial.Print("");
Serial.Print(AVD);
Serial.Print("");
Serial.Print(AVL);
Serial.Print("");
Serial.Print(AVR);
Serial.Print("");
Serial.Print(dtime);
Serial.Print("");
Serial.Print(Tol);
Serial.println("");
Si (-1 * tol > dvert || dvert > tol) / / Compruebe si el diffirence está en la tolerancia cambiar otro ángulo vertical
{
Si (avt > avd)
{
servov = ++ servov;
Si (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
}
else if (avt < avd)
{
servov =--servov;
Si (servov < servovLimitLow)
{
servov = servovLimitLow;
}
}
vertical.Write(servov);
}
Si (-1 * tol > dhoriz || dhoriz > tol) / / comprueba si el diffirence está en la tolerancia de otro cambio de ángulo horizontal
{
Si (avl > avr)
{
servoh = - servoh;
Si (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
}
else if (avl < avr)
{
servoh = ++ servoh;
Si (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
}
else if (avl = avr)
{
nada
}
horizontal.Write(servoh);
}
Delay(dtime);
}