Stap 11: El código para controlar el seguidor
Sube el código aquí al Arduino.
UD. Puede modificar el código para wisselmakelaar el sensibilidad de los sensoren y la velocidad de los servo's.
#include / / Servo bibliotheek
180 horizontale MAX
Servo horizontale; horizontale servo
int servoh = 180; 90; staan de horizontale servo
int servohLimitHigh = 180;
int servohLimitLow = 65;
65 graden MAX
Servo verticale; verticale servo
int servov = 45; 90; verticale servo staan
int servovLimitHigh = 80;
int servovLimitLow = 15;
LDR pin aansluitingen
naam = analogpin;
int ldrlt = 0; LDR linksboven - onderkant linker <---BDG
int ldrrt = 1; LDR top rigt - RECHTSONDER
int ldrld = 2; LDR omlaag links / TOP links
int ldrrd = 3; LDR neer rigt - RECHTSBOVEN
VOID Setup
{Serial.begin(9600);
Servo verbindingen
name.attacht(PIN);
Horizontal.attach(9);
Vertical.attach(10);
Horizontal.write(180);
Vertical.write(45);
delay(3000);
}
void loop
{int lt = analogRead(ldrlt); / / top links
int rt = analogRead(ldrrt); rechts boven
int ld = analogRead(ldrld); naar linksonder
int rd = analogRead(ldrrd); naar rechtsonder
int rekenwijze = analogRead (4) / 20; Lees potentiometers
int tol = analogRead (5) / 4;
int rekenwijze = 10; int tol = 50;
int avt = (lt + rt) / 2; gemiddelde waarde boven
int avd = (ld + rd) / 2; gemiddelde waarde omlaag
int avl = (lt + ld) / 2; gemiddelde waarde links
int avr = (rt + rd) / 2; gemiddelde waarde rechts
int dvert = avt - avd; Controleer het verschil van op en neer
int dhoriz = avl - avr; / / check verschil og links en 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("");
Als (-1 * tol > dvert || dvert > tol) / / controleren als het verschil in de tolerantie anders veranderen verticale hoek
{
Als (avt > avd)
{
servov = ++ servov;
Als (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
}
anders als (avt < avd)
{
servov =--servov;
Als (servov < servovLimitLow)
{
servov = servovLimitLow;
}
}
Vertical.write(servov);
}
Als (-1 * tol > dhoriz || dhoriz > tol) / / controleren als het verschil in de tolerantie anders veranderen horizontale hoek
{
Als (avl > avr)
{
servoh =--servoh;
Als (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
}
anders als (avl < avr)
{
servoh = ++ servoh;
Als (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
}
anders als (avl = avr)
{
niets
}
Horizontal.write(servoh);
}
delay(DTIME);
}