Essayez-vous d'obtenir le maximum de soleil pour votre panneau solaire rotatif ? Si c'est le cas, vous pouvez vous contenter d'un réglage approximatif de la position entre l'est et l'ouest en fonction de votre horloge (vous pouvez améliorer cela en prenant en compte la position longitude/platitude pour calculer les heures de lever et de coucher du soleil). Vous aurez besoin de beaucoup de calculs astronomiques si vous voulez contrôler l'azimut et l'élévation avec précision. Arduino ne supporte pas le double, et avec le simple vous n'aurez pas des résultats très précis (ils seront suffisants pour un tracker de panneau solaire, mais pas assez si vous voulez que le télescope suive un objet du ciel). Mon conseil serait soit de faire des recherches sur le sujet, soit de jeter un coup d'oeil à un logiciel d'astronomie open source et d'extraire les calculs nécessaires de la source (si les conditions de licence le permettent). Juste pour vous donner un indice, voici un petit extrait de PilotLogic TMoon que vous pouvez obtenir dans CodeTyphon/Lazarus/FPC paquet d'installation trouvé aquí :
procedure Sun_Position_Horizontal(date:TdateTime; longitude,latitude: extended; var elevation,azimuth: extended);
var
pos1: T_Coord;
begin
pos1 := sun_coordinate(date);
calc_horizontal(pos1,date,longitude,latitude);
end;
function sun_coordinate(date:TDateTime):t_coord;
var
l,b,r: extended;
lambda,t: extended;
begin
earth_coord(date,l,b,r);
(* convert earth coordinate to sun coordinate *)
l := l+180;
b := -b;
(* conversion to FK5 *)
t := (julian_date(date)-2451545.0)/365250.0*10;
lambda:=l+(-1.397-0.00031*t)*t;
l := l-0.09033/3600;
b := b+0.03916/3600*(cos_d(lambda)-sin_d(lambda));
(* aberration *)
l := l-20.4898/3600/r;
(* correction of nutation - is done inside calc_geocentric *)
{ calc_epsilon_phi(date,delta_phi,epsilon); }
{ l := l+delta_phi; }
(* fill result and convert to geocentric *)
result.longitude := put_in_360(l);
result.latitude := b;
result.radius := r*AU;
calc_geocentric(result,date);
end;
procedure calc_horizontal(var coord:t_coord; date:TDateTime; longitude,latitude: extended);
var
h: extended;
begin
h := put_in_360(star_time(date)-coord.rektaszension-longitude);
coord.azimuth := arctan2_d(sin_d(h), cos_d(h)*sin_d(latitude)-
tan_d(coord.declination)*cos_d(latitude));
coord.elevation := arcsin_d(sin_d(latitude)*sin_d(coord.declination)+
cos_d(latitude)*cos_d(coord.declination)*cos_d(h));
end;
Si votre appareil ne bouge pas après l'installation (ce qui n'est pas le cas après avoir relu votre question, vous pouvez donc ignorer le reste du message), alors votre longitude et votre latitude sont fixes et vous les connaissez au moment de la compilation, ou vous pouvez les saisir manuellement lors de la première installation de l'appareil. De cette façon, le GPS n'est pas nécessaire. Vous pouvez également trouver le Nord une fois au moment de l'installation, donc vous n'avez pas besoin de boussole non plus.