-
Notifications
You must be signed in to change notification settings - Fork 211
/
Copy pathdisplay_controller.cpp
63 lines (57 loc) · 1.6 KB
/
display_controller.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "display_controller.h"
DisplayController::DisplayController(Adafruit_PCD8544 *display_driver, TinyGPSPlus *gps) {
this->display = display_driver;
this->gps = gps;
}
void DisplayController::begin() {
display->begin();
display->setContrast(50);
display->clearDisplay();
display->setTextSize(1);
display->setTextColor(BLACK);
}
void DisplayController::reset() {
display->clearDisplay();
display->setCursor(0,0);
}
void DisplayController::refresh() {
display->display();
}
void DisplayController::welcome(char *libraryVersion) {
reset();
display->println(F("GPS Basics"));
display->println(F("TinyGPS++ Ver"));
display->println(libraryVersion);
refresh();
delay(WELCOME_DELAY);
}
void DisplayController::update() {
if(gps->location.isValid()) {
reset();
display->print(F("LAT: "));
display->println(gps->location.lat());
display->print(F("LNG: "));
display->println(gps->location.lng());
if(gps->altitude.isValid()) {
display->print(F("ALT: "));
display->print(gps->altitude.meters());
display->println(F("m"));
}
if (gps->date.isValid()) {
char sz[32];
sprintf(sz, "%02d-%02d-%02d", gps->date.year(), gps->date.month(), gps->date.day());
display->println(sz);
}
if (gps->time.isValid()) {
char sz[32];
sprintf(sz, "%02d:%02d:%02d", gps->time.hour(), gps->time.minute(), gps->time.second());
display->print(sz);
display->println(F(" UTC"));
}
if(gps->satellites.isValid()) {
display->print(F("SAT: "));
display->println(gps->satellites.value());
}
refresh();
}
}