Bearing computation + fixes
Compute the correct bearing and removes several debug print outputs.
This commit is contained in:
parent
02154d4517
commit
9082ffa56c
|
|
@ -14,8 +14,13 @@ QMC5883LCompass compass;
|
||||||
#define TXD2 17
|
#define TXD2 17
|
||||||
|
|
||||||
// ID 1 = Julia; ID 2 = Tim
|
// ID 1 = Julia; ID 2 = Tim
|
||||||
#define OWN_ID 1
|
#define OWN_ID 2
|
||||||
#define REQ_ID 2
|
#define REQ_ID 1
|
||||||
|
|
||||||
|
#define BEARING_CORRECTION 3
|
||||||
|
|
||||||
|
#define LED_PIN 5
|
||||||
|
|
||||||
|
|
||||||
#define GPS_BAUD 9600
|
#define GPS_BAUD 9600
|
||||||
|
|
||||||
|
|
@ -61,6 +66,10 @@ void setup(void) {
|
||||||
u8g2.begin(); // start a display.
|
u8g2.begin(); // start a display.
|
||||||
gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2);
|
gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2);
|
||||||
Serial.println("Serial 2 started at 9600 baud rate");
|
Serial.println("Serial 2 started at 9600 baud rate");
|
||||||
|
|
||||||
|
pinMode(LED_PIN, OUTPUT);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawTriangles(byte i, char *time, char *distanceString) {
|
void drawTriangles(byte i, char *time, char *distanceString) {
|
||||||
|
|
@ -109,12 +118,13 @@ bool doHttpRequest(char *payload, char *latitude, char *longitude, char *gpsTime
|
||||||
}
|
}
|
||||||
|
|
||||||
byte calculateBearing(float bearing) {
|
byte calculateBearing(float bearing) {
|
||||||
|
compass.read();
|
||||||
int relativeAngle = (int)(bearing - compass.getAzimuth());
|
int relativeAngle = (int)(bearing - compass.getAzimuth());
|
||||||
relativeAngle += 360;
|
relativeAngle += 360;
|
||||||
relativeAngle %= 360;
|
relativeAngle %= 360;
|
||||||
return compass.getBearing(relativeAngle);
|
return (compass.getBearing(relativeAngle) + BEARING_CORRECTION + 16) % 16;
|
||||||
}
|
}
|
||||||
void setDistanceBearingString(char *distance, byte *bearing, const char *payload) {
|
void setDistanceBearingString(char *time, char *distance, byte *bearing, const char *payload) {
|
||||||
StaticJsonDocument<200> doc;
|
StaticJsonDocument<200> doc;
|
||||||
|
|
||||||
DeserializationError error = deserializeJson(doc, payload);
|
DeserializationError error = deserializeJson(doc, payload);
|
||||||
|
|
@ -126,11 +136,10 @@ void setDistanceBearingString(char *distance, byte *bearing, const char *payload
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* dist2 = doc["distance"];
|
const char* dist2 = doc["distance"];
|
||||||
//Serial.println(dist2);
|
const char* time2 = doc["lastUpdateTZ"];
|
||||||
Serial.println("JSON stuff:");
|
|
||||||
Serial.println(dist2);
|
|
||||||
|
|
||||||
strcpy(distance, dist2);
|
strcpy(distance, dist2);
|
||||||
|
strcpy(time, time2);
|
||||||
|
|
||||||
*bearing = calculateBearing(String(doc["bearing"]).toFloat());
|
*bearing = calculateBearing(String(doc["bearing"]).toFloat());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,44 +186,19 @@ void loop(void) {
|
||||||
char distanceString[16];
|
char distanceString[16];
|
||||||
strcpy(distanceString, distanceArray);
|
strcpy(distanceString, distanceArray);
|
||||||
|
|
||||||
|
char remoteTimeString[16];
|
||||||
|
strcpy(remoteTimeString, timeString);
|
||||||
|
|
||||||
if (doHttpRequest(myPayloadResponse, latitude, longitude, dateTimeString))
|
if (doHttpRequest(myPayloadResponse, latitude, longitude, dateTimeString))
|
||||||
setDistanceBearingString(distanceString, &triangleIndex, myPayloadResponse);
|
setDistanceBearingString(remoteTimeString, distanceString, &triangleIndex, myPayloadResponse);
|
||||||
|
|
||||||
Serial.println();
|
drawTriangles(triangleIndex, remoteTimeString, distanceString);
|
||||||
Serial.println("TimeString: ");
|
|
||||||
Serial.println(timeString);
|
|
||||||
Serial.println("DateString: ");
|
|
||||||
Serial.println(dateString);
|
|
||||||
Serial.println("Date: ");
|
|
||||||
Serial.println(dateString);
|
|
||||||
Serial.println("DateTime: ");
|
|
||||||
Serial.println(dateTimeString);
|
|
||||||
Serial.println("DistanceString: ");
|
|
||||||
Serial.println(distanceString);
|
|
||||||
|
|
||||||
|
|
||||||
drawTriangles(triangleIndex, timeString, distanceString);
|
|
||||||
|
|
||||||
Serial.println("-------------------------------");
|
Serial.println("-------------------------------");
|
||||||
int a;
|
|
||||||
compass.read();
|
|
||||||
|
|
||||||
//Calculate heading
|
digitalWrite(LED_PIN, HIGH);
|
||||||
a = compass.getAzimuth();
|
|
||||||
float heading = compass.getBearing(a);
|
|
||||||
char myArray[3];
|
|
||||||
compass.getDirection(myArray, a);
|
|
||||||
|
|
||||||
Serial.print("A: ");
|
|
||||||
Serial.print(a);
|
|
||||||
Serial.print("Heading: ");
|
|
||||||
Serial.print(heading);
|
|
||||||
Serial.print(" - ");
|
|
||||||
Serial.print(myArray);
|
|
||||||
Serial.println();
|
|
||||||
Serial.println("-------------------------------");
|
|
||||||
|
|
||||||
delay(5000);
|
delay(5000);
|
||||||
|
|
||||||
|
digitalWrite(LED_PIN, LOW);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ while 重启五秒内 && 重置按键被按下 :
|
||||||
|
|
||||||
#define SSID_LENGTH 40
|
#define SSID_LENGTH 40
|
||||||
|
|
||||||
#define WIFI_SET_PIN 27
|
#define WIFI_SET_PIN 18
|
||||||
|
|
||||||
int record_rst_time();
|
int record_rst_time();
|
||||||
void nvs_test();
|
void nvs_test();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user