Stap 9: Code
Ik laat de controlecode, ik hoop dat ik heb niet gemist om het even wat, omdat de editor draaide mijn hele haha XD.
Stepper Motor Solar Tracker door hectorhhg
#include //Integrating bibliotheek voor de behandeling van Stepper.h stappenmotoren
#include //Integrating ontwerp math.h bibliotheek voor rekenkundige basisbewerkingen
Constanten declareren
#define motorStephor 200 //steps voor horizontale motor
#define motorStepver 200 //steps voor verticale motor
Digitale pinnen
#define motor1hor 6
#define motor2hor 7
#define motor1ver 8
#define motor2ver 9
Variabelen
int prom; Gemiddelde van vier LDR
int pyr; BPW34 fotodiode
int h = 60; Stappen uitgevoerd door de horizontale motor
int v = 5; Stappen uitgevoerd door de verticale motor
int ltsensor; Waarde van de hoogste linker LDR
int rtsensor; Waarde van de top juiste LDR
int rdsensor; Waarde van het bodemrecht LDR
int ldsensor; Waarde van de linker benedenhoek LDR
int sen = 50; Gevoeligheid
int dil; Gemiddelde aantal LDR links
int dit; Gemiddelde aantal LDR top
int dir; Gemiddelde aantal LDR recht
int deed; Gemiddelde aantal LDR bodem
int diff; Verschil tussen LDR boven de bodem
int diff2; Verschil tussen LDR van links naar rechts
int de pup; bovenste schakelaar
int pdown; lagere schakelaar
Stepper-horStep (motorStephor, motor1hor, motor2hor);
Stepper Stepper verStep (motorStepver, motor1ver, motor2ver);
Programma initialisatie
void setup)
{
horStep.setSpeed (30); RPM horizontale motor
verStep.setSpeed (10); De verticale motor RPM
Seriële poort
Serial.begin(9600);
Pinnen configuratie
pinMode (pyr, INPUT);
pinMode (ltsensor, INPUT);
pinMode (rtsensor, INPUT);
pinMode (ldsensor, INPUT);
pinMode (rdsensor, INPUT);
pinMode (pup, ingang);
pinMode (pdown, INPUT);
}
void loop)
{
doen
{
Pyr = analogRead(0); Lezing analoge ingangen
ltsensor = analogRead (1) * 1.022; (constante is te kalibreren van de LDR)
rtsensor = analogRead (2) * 1.007;
ldsensor = analogRead(3);
rdsensor = analogRead (4) * 1.013;
pup = digitalRead (3); Lezing schakelaars
pdown = digitalRead(4);
Prom = (ltsensor + ldsensor + rtsensor + rdsensor) / 4; Gemiddelde LDR
Dit = (ltsensor + rtsensor) / 2; Gemiddelde sensoren omhoog
= (ldsensor + rdsensor) / 2; Gemiddelde sensoren naar beneden
diff = (dit - deed); Verschil tussen de hoeveelheid straling
vertraging (50);
Als ((pyr==0) & &(pup==HIGH) & & (prom < = 8) || (Pyr==0) & &(pdown==HIGH) & & (prom < = 8)) //If de waarde van pyr is nul en het gemiddelde van de sensoren is gelijk of minder dan 8 en de schakelopties hebben het bereik
MOV(); MOV functie
}
terwijl ((pyr == 0) & &(pup==HIGH) & & (prom < = 8) || (Pyr==0) & &(pdown==HIGH) & & (prom < = 8));
Als (-1 * sen > diff || diff > sen) //If het gemeten verschil tussen het aantal sensoren is groter of kleiner is dan de waarde van de gevoeligheid
{
if(dit < did) //If de gemiddelde waarde van de bovenstaande sensoren kleiner is dan de onderste sensoren
{
Als (pdown == HIGH)
{
verStep.step (0); Verticale motor stoppen
vertraging (10);
}
anders
Als (pdown == laag)
{
verStep.step (v); Draaien van motor
vertraging (50);
}
}
anders if(dit > did) //If de gemiddelde waarde van de bodem sensoren kleiner is dan de bovenstaande sensoren
{
Als (pup == HIGH)
{
verStep.step (0); Verticale motor stoppen
vertraging (10);
}
anders als (pup == laag)
{
verStep.step (-v); Zet de motor af
vertraging (50);
}
}
anders //any ander geval
{
verStep.step (0); Verticale motor stoppen
vertraging (10);
}
}
vertraging (10);
Pyr = analogRead (0); Sensor lezingen weer veranderen voor mogelijke
ltsensor = analogRead (1) * 1.022;
rtsensor = analogRead (2) * 1.007;
ldsensor = analogRead(3);
rdsensor = analogRead (4) * 1.013;
Dil = (ltsensor + ldsensor) / 2; Gemiddelde sensoren links
dir = (rtsensor + rdsensor) / 2; Gemiddelde sensoren juiste
diff2 = (dil - dir); Verschil tussen de hoeveelheid straling
vertraging (50);
Als (-1 * sen > diff2 || diff2 > sen) //If het gemeten verschil tussen het aantal sensoren is groter of kleiner is dan de waarde van de gevoeligheid
{
if(DIL < dir) //If het gemiddelde van de linker sensor kleiner is dan de juiste sensor
{
horStep.step (h); Rechtsaf motor
vertraging (10);
}
anders
if(DIL > dir) //If het gemiddelde van de linker sensor groter is dan de juiste sensor
{
horStep.step (-h); Links afslaan motor
vertraging (10);
}
anders //any ander geval
{
horStep.step (0); Stoppen met horizontale motor
vertraging (10);
}
}
delay(10);
}
"mov functie"
VOID mov)
{
Als (pup == HIGH)
{
verStep.step (72); 72 stappen opdagen (zijn de stappen eenmaal te wijzigen positie verbergen de zon)
vertraging (50);
}
else if (pdown == HIGH)
{
verStep.step (-72); 72 stappen afslaan
vertraging (50);
}
vertraging (10);
}