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
|
||||
|
||||
// ID 1 = Julia; ID 2 = Tim
|
||||
#define OWN_ID 1
|
||||
#define REQ_ID 2
|
||||
#define OWN_ID 2
|
||||
#define REQ_ID 1
|
||||
|
||||
#define BEARING_CORRECTION 3
|
||||
|
||||
#define LED_PIN 5
|
||||
|
||||
|
||||
#define GPS_BAUD 9600
|
||||
|
||||
|
|
@ -61,6 +66,10 @@ void setup(void) {
|
|||
u8g2.begin(); // start a display.
|
||||
gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2);
|
||||
Serial.println("Serial 2 started at 9600 baud rate");
|
||||
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
|
||||
|
||||
}
|
||||
|
||||
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) {
|
||||
compass.read();
|
||||
int relativeAngle = (int)(bearing - compass.getAzimuth());
|
||||
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;
|
||||
|
||||
DeserializationError error = deserializeJson(doc, payload);
|
||||
|
|
@ -126,11 +136,10 @@ void setDistanceBearingString(char *distance, byte *bearing, const char *payload
|
|||
}
|
||||
|
||||
const char* dist2 = doc["distance"];
|
||||
//Serial.println(dist2);
|
||||
Serial.println("JSON stuff:");
|
||||
Serial.println(dist2);
|
||||
|
||||
const char* time2 = doc["lastUpdateTZ"];
|
||||
strcpy(distance, dist2);
|
||||
strcpy(time, time2);
|
||||
|
||||
*bearing = calculateBearing(String(doc["bearing"]).toFloat());
|
||||
}
|
||||
|
||||
|
|
@ -177,44 +186,19 @@ void loop(void) {
|
|||
char distanceString[16];
|
||||
strcpy(distanceString, distanceArray);
|
||||
|
||||
|
||||
char remoteTimeString[16];
|
||||
strcpy(remoteTimeString, timeString);
|
||||
|
||||
if (doHttpRequest(myPayloadResponse, latitude, longitude, dateTimeString))
|
||||
setDistanceBearingString(distanceString, &triangleIndex, myPayloadResponse);
|
||||
setDistanceBearingString(remoteTimeString, distanceString, &triangleIndex, myPayloadResponse);
|
||||
|
||||
Serial.println();
|
||||
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);
|
||||
drawTriangles(triangleIndex, remoteTimeString, distanceString);
|
||||
|
||||
Serial.println("-------------------------------");
|
||||
int a;
|
||||
compass.read();
|
||||
|
||||
//Calculate heading
|
||||
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("-------------------------------");
|
||||
digitalWrite(LED_PIN, HIGH);
|
||||
|
||||
delay(5000);
|
||||
|
||||
digitalWrite(LED_PIN, LOW);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ while 重启五秒内 && 重置按键被按下 :
|
|||
|
||||
#define SSID_LENGTH 40
|
||||
|
||||
#define WIFI_SET_PIN 27
|
||||
#define WIFI_SET_PIN 18
|
||||
|
||||
int record_rst_time();
|
||||
void nvs_test();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user