Stap 9: Código
Les dejo el código de controle, espero geen haber omitido nada, ya que el editor me revolvió todo jaja XD.
Stepper Motor Solar Tracker door HHG
#include //Integración de la librería Stepper.h para manejar motores een pasos
#include //Integración de la librería math.h para diseño de operaciones matemáticas preguntas
Declaración de constantes
#define motorStephor 200 //Número de pasos del motor horizontale
#define motorStepver 200 //Número de pasos del motor verticale
Uso de las Relacionadas digitales de Arduino
#define motor1hor 6
#define motor2hor 7
#define motor1ver 8
#define motor2ver 9
Declaración de variabelen
int prom; Promedio de los cuatroLDR
int pyr; Valor del fotodiodo
int h = 60; Pasos ejecutados por el motor horizontale
int v = 5; Pasos ejecutados por el motor verticale
int ltsensor; Valor del LDR superieure izquierdo
int rtsensor; Valor del LDR superieure derecho
int rdsensor; Valor del LDR inferieur izquierdo
int ldsensor; Valor del LDR inferieur derecho
int sen = 50; Sensibilidad
int dil; Promedio del conjunto de LDR izquierdo
int dit; Promedio del conjunto de LDR arriba
int dir; Promedio del conjunto de LDR derecho
int deed; Promedio del conjunto de LDR abajo
int diff; Permitteert entre los LDR de arriba con los abajo
int diff2; Permitteert entre los LDR de la izquierda con los de la derecha
int de pup; Interruptor superior
int pdown; Interruptor inferior
Stepper-horStep (motorStephor, motor1hor, motor2hor); Inicia la librería Stepper
Stepper-verStep (motorStepver, motor1ver, motor2ver);
Inicialización del programa
void setup)
{
horStep.setSpeed (30); RPM del motor horizontale
verStep.setSpeed (10); RPM del motor verticale
Inicialización del puerto seriële COM
Serial.begin(9600);
Configuration de dennen como Relacionadas
pinMode (pyr, INPUT);
pinMode (ltsensor, INPUT);
pinMode (rtsensor, INPUT);
pinMode (ldsensor, INPUT);
pinMode (rdsensor, INPUT);
pinMode (pup, ingang);
pinMode (pdown, INPUT);
}
Inicialización del bucle
void loop)
{
//Comienza la estructura de controle repetitiva doe-terwijl
{
Pyr = analogRead(0); LECTURA de las Relacionadas analógicas
ltsensor = analogRead (1) * 1.022; (La constante es para calibrar las fotorresistencias)
rtsensor = analogRead (2) * 1.007;
ldsensor = analogRead(3);
rdsensor = analogRead (4) * 1.013;
pup = digitalRead (3); LECTURA de los interruptores
pdown = digitalRead(4);
Prom = (ltsensor + ldsensor + rtsensor + rdsensor) / 4; Promedio de los cuatro sensoren
Dit = (ltsensor + rtsensor) / 2; Promedio de los sensoren de arriba
= (ldsensor + rdsensor) / 2; Promedio de los sensoren de abajo
diff = (dit - deed); Permitteert entre el nivel de radiación
vertraging (50);
Als ((pyr==0) & &(pup==HIGH) & & (prom < = 8) || (Pyr==0) & &(pdown==HIGH) & & (prom < = 8))
Si el valor de pyr es cero y el promedio de los sensoren es igual o menor per 8 y los interruptores tengan el Razvan
MOV(); Ejecutar la función "mov"
}
terwijl ((pyr == 0) & &(pup==HIGH) & & (prom < = 8) || (Pyr==0) & &(pdown==HIGH) & & (prom < = 8));
Mientras el valor de pyr zee cero y el promedio de los sensoren zee igual o menor een 8 y los interruptores tengan el Razvan, sigue ejecutándose el bucle
Als (-1 * sen > diff || diff > sen) //Si la permitteert medida entre el conjunto de sensoren es burgemeester o menor al valor de la sensibilidad
{
if(dit < did) //Si el valor medio de los sensoren de arriba es más pequeña que la de los sensoren de abajo
{
Als (pdown == HIGH) //Si pdown se activa
{
verStep.step (0); Parar el motor nl el sentido verticale
vertraging (10);
}
else if (pdown == LOW) //Si pdown esta inactivo
{
verStep.step (v); Gira el motor is arriba
vertraging (50);
}
}
anders if(dit > did)
Si el valor medio de los sensoren de abajo es más pequeña que la de los sensoren de arriba
{
Als (pup HIGH ==) //Si pup se activa
{
verStep.step (0); Para el motor nl el sentido verticale
vertraging (10);
}
anders als (pup lage ==) //Si pup esta inactivo
{
verStep.step (-v); Gira el motor is abajo
vertraging (50);
}
}
anders //Para cualquier otro caso
{
verStep.step (0); Parar el motor nl el sentido verticale
vertraging (10);
}
}
vertraging (10);
Pyr = analogRead (0); LECTURA de los sensoren nuevamente por posible cambio
ltsensor = analogRead (1) * 1.022;
rtsensor = analogRead (2) * 1.007;
ldsensor = analogRead(3);
rdsensor = analogRead (4) * 1.013;
Dil = (ltsensor + ldsensor) / 2; Promedio de los sensoren de la izquierda
dir = (rtsensor + rdsensor) / 2; Promedio de los sensoren de la derecha
diff2 = (dil - dir); Permitteert entre el nivel de radiación
vertraging (50);
Als (-1 * sen > diff2 || diff2 > sen) //Si la permitteert medida entre el conjunto de sensoren es burgemeester o menor al valor de la sensibilidad
{
if(DIL < dir) //Si el valor medio de los sensoren de la izquierda es más pequeña que la de los sensoren de la derecha
{
horStep.step (h); Girar motor is la derecha
vertraging (10);
}
anders if(dil > dir)
Si el valor medio de los sensoren de la izquierda es más grande que la de los sensoren de la derecha
{
horStep.step (-h); Girar el motor is la izquierda
vertraging (10);
}
anders //Para cualquier otro caso
{
horStep.step (0); Parar el motor nl el sentido horizontale
vertraging (10);
}
}
delay(10);
}
Función "mov"
VOID mov)
{
Als (pup HIGH ==) //Si pup está activo
{
verStep.step (72); Gira 72 pasos is arriba
vertraging (50);
}
else if (pdown == HIGH) //Si pdown está activo
{
verStep.step (-72); Gira 72 pasos is abajo
vertraging (50);
}
vertraging (10);
}