Hola!!! Mi proyecto consta de un seguidor solar, es con una lupa proyectando un haz de luz, ahora el dispositivo debe seguir la trayectoria del sol de 12:00 a 1:00pm ya tengo el programa, mi problema es que al correrlo no avanza los grados que quiero, (avanza 1 grado cada 4 min.).
Y al desconectar el arduino y al volverlo conectar no hace lo que quiero.
#include <Wire.h>
#include "Sodaq_DS3231.h"
# include <Servo.h>
Servo panel;
unsigned long time;
float tiempo = 240000.0;// AVANZA UN GRADO cada 4 min, HASTA LLEGAR A LOS 67°
unsigned long t =0;
int pos_default =53;
int pos_default_add=53;
boolean act_1,act_2=false;
char DiaSemana[][0] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab" };
// La linea fija la fecha, hora y dia de la semana, se debe suprimir la linea en la segunda carga
// dia 1-Lunes (0=Dom, 1=Lun, 2=Mar, 3=Mie, 4=Jue, 5=Vie, 6=Sab)
//DateTime dt(2019, 8, 4, 15, 0, 0, 0);
void setup ()
{
Serial.begin(9600);
Wire.begin();
rtc.begin();
// La linea fija la fecha, hora y dia de la semana, se debe suprimir la linea en la segunda carga
//rtc.setDateTime(dt);
panel.attach(2);
panel.write(53);
}
void loop ()
{
int LDR = analogRead(A0);
Serial.print("SENSOR_LDR ");
Serial.println(LDR);
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.date(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print(' ');
Serial.print(DiaSemana[now.dayOfWeek()]);
Serial.println();
delay(1000); // Se actualiza cada segundo
if (LDR <=600){
panel.write(pos_default);
}
if (now.hour()>=12&& now.minute()>=0&& now.second()>=0){
act_1=true;
}
if ( act_1==true){
time=millis();
if(time-t > tiempo){
t=time;
pos_default_add++;
}
if(LDR > 800){
panel.write (pos_default_add);
Serial.print("GRADOS SERVO");
Serial.println(pos_default_add);
}
}
if(pos_default_add >=67){
act_1=false;
}
if(pos_default_add >=67&& now.hour()>=13&& now.minute()>=0){
pos_default_add =53;
panel.write (pos_default);
}
}