Étape 9: Code
Je laisse le code de contrôle, j’espère que je n’ai pas manqué quoi que ce soit, parce que l’éditeur tourné mon ensemble haha XD.
Stepper Motor traqueur solaire par hectorhhg
#include //Integrating bibliothèque pour les moteurs pas à pas Stepper.h
#include //Integrating bibliothèque de math.h de conception pour des opérations mathématiques de base
Déclarer les constantes
#define motorStephor 200 //steps pour moteur horizontal
#define motorStepver 200 //steps pour moteur vertical
Broches numériques
#define motor1hor 6
#define motor2hor 7
#define motor1ver 8
#define motor2ver 9
Variables
int prom ; Moyenne de quatre LDR
pyr int ; Photodiode BPW34
int h = 60 ; Mesures exécutées par le moteur horizontal
int v = 5 ; Mesures exécutées par le moteur vertical
int ltsensor ; Valeur de la LDR haut gauche
int rtsensor ; Valeur de la LDR supérieure droite
int rdsensor ; Valeur de la partie inférieure droite LDR
int ldsensor ; Valeur de l’angle inférieur gauche LDR
sen int = 50 ; Sensibilité
int dil ; Ensemble moyen de LDR gauche
int dit ; Ensemble moyen de haut LDR
int dir ; Ensemble moyen de droit LDR
int a ; Ensemble moyen de fond LDR
int diff ; Différence entre LDR au-dessus du fond
diff2 int ; Différence entre LDR de gauche à droite
chiot int ; commutateur supérieur
int pdown ; Interrupteur basse
HorStep de moteurs pas à pas (motorStephor, motor1hor, motor2hor) ;
Stepper Stepper verStep (motorStepver, motor1ver, motor2ver) ;
Initialisation du programme
installation Sub ()
{
horStep.setSpeed (30) ; Moteur horizontal tr/min
verStep.setSpeed (10) ; Moteur vertical tr/min
Port série
Serial.Begin(9600) ;
Configuration des broches
pinMode (pyr, entrée) ;
pinMode (ltsensor, entrée) ;
pinMode (rtsensor, entrée) ;
pinMode (ldsensor, entrée) ;
pinMode (rdsensor, entrée) ;
pinMode (pup, saisir) ;
pinMode (pdown, entrée) ;
}
void loop ()
{
faire
{
PYR = analogRead(0) ; Lecture des entrées analogiques
ltsensor = analogRead (1) * 1,022 ; (constante est de calibrer le LDR)
rtsensor = analogRead (2) * 1.007 ;
ldsensor = analogRead(3) ;
rdsensor = analogRead (4) * 1.013 ;
chiot = digitalRead (3) ; Commutateurs de lecture
PDown = digitalRead(4) ;
Bal = (ltsensor + ldsensor + rtsensor + rdsensor) / 4 ; LDR moyenne
dit = (ltsensor + rtsensor) / 2 ; Capteurs moyennes vers le haut
DID = (ldsensor + rdsensor) / 2 ; Capteurs moyens vers le bas
diff = (dit - fait) ; Différence entre le niveau de rayonnement
retard (50) ;
Si ((pyr==0) & &(pup==HIGH) & & (prom < = 8) || (PYR==0) & &(pdown==HIGH) & & (prom < = 8)) //If la valeur de pyr est égale à zéro et la moyenne des capteurs est égal ou inférieur à 8 et les commutateurs ont la plage
MOV() ; fonction de MOV
}
tandis que ((pyr == 0) & &(pup==HIGH) & & (prom < = 8) || (PYR==0) & &(pdown==HIGH) & & (prom < = 8)) ;
Si (-1 * sen > diff || diff > sen) //If la différence mesurée entre l’ensemble des capteurs est supérieure ou inférieure à la valeur de la sensibilité
{
if(dit < DID) //If la valeur moyenne des capteurs ci-dessus est plus petit que les capteurs de fond
{
Si (pdown == HIGH)
{
verStep.step (0) ; Arrêter le moteur vertical
retard (10) ;
}
d’autre
Si (pdown == faible)
{
verStep.step (v) ; Tourner le moteur vers le haut
retard (50) ;
}
}
d’autre if(dit > did) //If la valeur moyenne des capteurs bas est plus petit que les capteurs ci-dessus
{
Si (chiot == HIGH)
{
verStep.step (0) ; Arrêter le moteur vertical
retard (10) ;
}
ElseIf (chiot == faible)
{
verStep.step (-v) ; Tourner le moteur vers le bas
retard (50) ;
}
}
d’autre //any les autres cas
{
verStep.step (0) ; Arrêter le moteur vertical
retard (10) ;
}
}
retard (10) ;
PYR = analogRead (0) ; Lectures du capteur encore d’éventuel changement
ltsensor = analogRead (1) * 1,022 ;
rtsensor = analogRead (2) * 1.007 ;
ldsensor = analogRead(3) ;
rdsensor = analogRead (4) * 1.013 ;
Dil = (ltsensor + ldsensor) / 2 ; Capteurs moyennes gauche
dir = (rtsensor + rdsensor) / 2 ; Capteurs moyennes droite
diff2 = (dil - dir) ; Différence entre le niveau de rayonnement
retard (50) ;
Si (-1 * sen > diff2 || diff2 > sen) //If la différence mesurée entre l’ensemble des capteurs est supérieure ou inférieure à la valeur de la sensibilité
{
if(Dil < dir) //If la moyenne du capteur gauche est plus petit que le capteur de droit
{
horStep.step (h) ; Moteur de tourner à droite
retard (10) ;
}
d’autre
if(Dil > dir) //If la moyenne du capteur gauche est plus grand que le capteur de droit
{
horStep.step (-h) ; Moteur, tournez à gauche
retard (10) ;
}
d’autre //any les autres cas
{
horStep.step (0) ; Arrêter le moteur horizontal
retard (10) ;
}
}
Delay(10) ;
}
« mov fonction »
mov Sub ()
{
Si (chiot == HIGH)
{
verStep.step (72) ; Augmentez les 72 marches (sont les étapes pour changer de position une fois masquer le soleil)
retard (50) ;
}
ElseIf (pdown == HIGH)
{
verStep.step-(72) ; Baissez les 72 marches
retard (50) ;
}
retard (10) ;
}