Comme indiqué, il faut entrer les valeurs dans les 8 premières variables...
int LatDepart = 473771; char DirectionLatDepart = 'N'; int LongDepart = 37082; char DirectionLongDepart = 'E'; int LatArrive = 479027; char DirectionLatArrive = 'N'; int LongArrive = 19057; char DirectionLongArrive = 'E'; char Tendance1 = 'A'; // pour Nord ou Sud char Tendance2 = 'A'; // pour Est ou West float DimensionRectangleLatitudeDegres = 0.3; float DimensionRectangleLongitudeDegres = 0.3; float DimensionRectangleLatitudeMetres = 0.3; float DimensionRectangleLongitudeMetres = 0.3; float DimensionRectanglePourcent = 025.03; int DegresBase = 0; int Cap =0; void setup() { Serial.begin(9600); Serial.println ("Connection OK!.."); Serial.print ("Calculateur de Cap"); Serial.println ("Entrer valeurs en INT dans les 8 premières variables"); } void loop() { DetectionDirectionLatitude (); DetectionDirectionLongitude (); DefinitionRectanglePourcent (); DefinitionRectangleDegres (); DefinitionCap (); } void DetectionDirectionLatitude (){ if ((LatDepart > LatArrive) && (DirectionLatDepart == 'N') && (DirectionLatArrive == 'N')){ Tendance1 = 'S'; DimensionRectangleLatitudeDegres = LatDepart - LatArrive; } if ((LatDepart > LatArrive) && (DirectionLatDepart == 'S') && (DirectionLatArrive == 'S')){ Tendance1 = 'N'; DimensionRectangleLatitudeDegres = LatDepart - LatArrive; } if ((LatDepart < LatArrive) && (DirectionLatDepart == 'N') && (DirectionLatArrive == 'N')){ Tendance1 = 'N'; DimensionRectangleLatitudeDegres = LatArrive - LatDepart; } if ((LatDepart < LatArrive) && (DirectionLatDepart == 'S') && (DirectionLatArrive == 'S')){ Tendance1 = 'S'; DimensionRectangleLatitudeDegres = LatArrive - LatDepart; } if (DirectionLatDepart != DirectionLatArrive){ Tendance1 = DirectionLatArrive; DimensionRectangleLatitudeDegres = LatDepart + LatArrive; } DimensionRectangleLatitudeMetres = DimensionRectangleLatitudeDegres * 111730; } void DetectionDirectionLongitude (){ if ((LongDepart > LongArrive) && (DirectionLongDepart == 'E') && (DirectionLongArrive == 'E')){ Tendance2 = 'W'; DimensionRectangleLongitudeDegres = LongDepart - LongArrive; } if ((LongDepart > LongArrive) && (DirectionLongDepart == 'W') && (DirectionLongArrive == 'W')){ Tendance2 = 'E'; DimensionRectangleLongitudeDegres = LongDepart - LongArrive; } if ((LongDepart < LongArrive) && (DirectionLongDepart == 'E') && (DirectionLongArrive == 'E')){ Tendance2 = 'E'; DimensionRectangleLongitudeDegres = LongArrive - LongDepart; } if ((LongDepart < LongArrive) && (DirectionLongDepart == 'W') && (DirectionLongArrive == 'W')){ Tendance2 = 'W'; DimensionRectangleLongitudeDegres = LongArrive - LongDepart; } if (DirectionLongDepart != DirectionLongArrive){ Tendance2 = DirectionLongArrive; DimensionRectangleLongitudeDegres = LongDepart + LongArrive; } DimensionRectangleLongitudeMetres = DimensionRectangleLongitudeDegres * 75840; Serial.print ("Tendance = "); Serial.print (Tendance1); Serial.print (","); Serial.println (Tendance2); Serial.print (" Dimension Rectangle Latitude en Degres = "); Serial.println (DimensionRectangleLatitudeDegres); Serial.print (" en metres = "); Serial.println (DimensionRectangleLatitudeMetres); Serial.print (" Dimension Rectangle Longitude en Degres = "); Serial.println (DimensionRectangleLongitudeDegres); Serial.print (" en metres = "); Serial.println (DimensionRectangleLongitudeMetres); } //----------------------------------------------------------------------------------------------------- void DefinitionRectanglePourcent (){ if (DimensionRectangleLatitudeMetres > DimensionRectangleLongitudeMetres ){ DimensionRectanglePourcent = (100 * DimensionRectangleLongitudeMetres) / DimensionRectangleLatitudeMetres; } if (DimensionRectangleLatitudeMetres < DimensionRectangleLongitudeMetres ){ DimensionRectanglePourcent = (100 * DimensionRectangleLatitudeMetres) / DimensionRectangleLongitudeMetres; } Serial.print(" en pourcent = "); Serial.print (DimensionRectanglePourcent); Serial.println (" %"); } void DefinitionRectangleDegres (){ if (DimensionRectanglePourcent <= 5.241){ DegresBase = 0; } if (DimensionRectanglePourcent > 5.241){ DegresBase = 3; } if (DimensionRectanglePourcent > 9){ DegresBase = 6; } if (DimensionRectanglePourcent > 12){ DegresBase = 9; } if (DimensionRectanglePourcent > 20){ DegresBase = 12; } if (DimensionRectanglePourcent > 24){ DegresBase = 15; } if (DimensionRectanglePourcent > 30){ DegresBase = 18; } if (DimensionRectanglePourcent > 35){ DegresBase = 21; } if (DimensionRectanglePourcent > 42){ DegresBase = 24; } if (DimensionRectanglePourcent > 48){ DegresBase = 27; } if (DimensionRectanglePourcent > 55){ DegresBase = 30; } if (DimensionRectanglePourcent > 62){ DegresBase = 33; } if (DimensionRectanglePourcent >70){ DegresBase = 36; } if (DimensionRectanglePourcent > 78){ DegresBase = 39; } if (DimensionRectanglePourcent > 88){ DegresBase = 42; } if (DimensionRectanglePourcent > 93){ DegresBase = 45; } Serial.print ("Degres de base = "); Serial.print (DegresBase); Serial.println (" degres"); } void DefinitionCap () { if ((Tendance1== 'N') && (Tendance2 == 'E') && (DimensionRectangleLongitudeDegres < DimensionRectangleLatitudeDegres)){ Cap = DegresBase; } if ((Tendance1== 'N') && (Tendance2 == 'E') && (DimensionRectangleLongitudeDegres > DimensionRectangleLatitudeDegres)){ Cap = 90 - DegresBase; } if ((Tendance1== 'S') && (Tendance2 == 'E') && (DimensionRectangleLongitudeDegres < DimensionRectangleLatitudeDegres)){ Cap = 180 - DegresBase; } if ((Tendance1== 'S') && (Tendance2 == 'E') && (DimensionRectangleLongitudeDegres > DimensionRectangleLatitudeDegres)){ Cap = 90 + DegresBase; } if ((Tendance1== 'S') && (Tendance2 == 'W') && (DimensionRectangleLongitudeDegres < DimensionRectangleLatitudeDegres)){ Cap = 180 + DegresBase; } if ((Tendance1== 'S') && (Tendance2 == 'W') && (DimensionRectangleLongitudeDegres > DimensionRectangleLatitudeDegres)){ Cap = 270 - DegresBase; } if ((Tendance1== 'N') && (Tendance2 == 'W') && (DimensionRectangleLongitudeDegres < DimensionRectangleLatitudeDegres)){ Cap = 360 - DegresBase; } if ((Tendance1== 'N') && (Tendance2 == 'W') && (DimensionRectangleLongitudeDegres > DimensionRectangleLatitudeDegres)){ Cap = 270 + DegresBase; } Serial.print ("CAP a suivre = "); Serial.println (Cap); }
Faites vous-même vos essais...
Dans le programme final, les paramètres de départ sont remplacés par les paramètres de route envoyés par le GPS
Aucun commentaire:
Enregistrer un commentaire