Hi TVR4,
Seems that particular sketch is just a little too big for your Arduino Uno.
I have compiled it for my Arduino Uno (can't run it of course), and it gave me a 63% memory use (20622 bytes).
On that note, I do not know what "sauvegarde SD" is, and I noticed that quite a few libraries are being used, even though it did not seem to be a problem for my Arduino Uno (R3).
Since your result is more than 30% bigger, which is quite significant, I can only make these assumptions;
1) Update your Arduino IDE (the most recent one seems to be 1.8.13).
2) Update the libraries as they may be outdated and bigger than the need to be.
Manually:
Under "Tools" - "Manage Libraries", verify that the use libraries are up to date.
I'd focus on the Adafruit libraries (Adafruit_GFX and Adafruit_ST7735, and the libraries used by these 2 libraries.
I'd also check that you have the latest TinyGPS++ library (source where I found it).
Automatically (easier):
You can check the libraries easier for updates by using "Tools" - "Manage Libraries", and selecting "Updatable" to see which libraries have an update available). Then for each library you find, you'll just have to click each "Update" button.
If none of this helps ...
Did you add anything else? If so: please post the full code.
Since it It looks like you're running on an Arduino Uno as well, I'd assume your compiled result should be similar to my compile results (unless I goofed up somehow of course).
p.s. Just for reference, I've pasted the code from the link you provided below (cleaned up);
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
#define cs 10
#define dc 9
#define rst 8
#define OLED_RESET 5
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
static const int RXPin = 4, TXPin = 3; //GPS communication
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
int x = 80;
int xh = 80;
int maxhigh = 0;
int maxspeed = 0, speed1 = 0;
int high1 = 0;;
void setup() {
Serial.begin(9600);
ss.begin(GPSBaud);
tft.initR(INITR_GREENTAB);
tft.fillScreen(ST7735_BLACK);
tft.setCursor(5, 58);
tft.setTextSize(1);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("initilisation");
}
void loop() {
tft.setTextSize(1);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
// affichage des informations a chaque bonne reception satellite
while (ss.available() > 0) {
gps.encode(ss.read());
if (gps.location.isUpdated()) {
cadre();
tft.setCursor(5, 44);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("Latitude :");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.location.lat(), 6);
tft.setCursor(5, 58);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("Longitude :");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.location.lng(), 6);
//affichage ecran date
tft.setCursor(5, 7);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("date : ");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.date.day());
tft.print(" ");
tft.print(gps.date.month());
tft.print(" ");
tft.print(gps.date.year());
//affichage ecran heure
tft.setCursor(5, 20);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("heure : ");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.time.hour() + 1);
tft.print(" ");
tft.print(gps.time.minute());
tft.print(" ");
tft.print(gps.time.second());
tft.print(" ");
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.setCursor(3, 30);
//affichage ecran altitude
tft.setCursor(5, 80);
tft.print("H m :");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.altitude.meters(), 0);
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(" ");
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.setCursor(5, 95);
hmax();
tft.print("Hmax :");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(maxhigh);
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(" ");
courbeh();
//affichage ecran vitesse
tft.setCursor(5, 115);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("V act: ");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.speed.kmph(), 0);
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(" ");
tft.setCursor(5, 130);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
vmax();
tft.print("vmax: ");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(maxspeed);
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(" ");
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
courbe();
//affichage ecran nombre de satellites
tft.setCursor(5, 147);
tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
tft.print("nombre de Sat : ");
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(gps.satellites.value());
tft.setTextColor(ST7735_CYAN, ST7735_BLACK);
tft.print(" ");
// Horizontal Dim. of Precision (100ths-i32)
Serial.print("HDOP = ");
Serial.println(gps.hdop.value());
smartDelay(400);
}
}
}
// delai pour une bonne recption
static void smartDelay(unsigned long ms) {
unsigned long start = millis();
do {
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}
void cadre() {
// affichage ecran
//cadre
tft.drawLine(0, 0, 130, 0, ST7735_RED);
tft.drawLine(0, 1, 130, 1, ST7735_RED);
tft.drawLine(0, 158, 130, 158, ST7735_RED);
tft.drawLine(0, 142, 130, 142, ST7735_RED);
tft.drawLine(0, 141, 130, 141, ST7735_RED);
tft.drawLine(0, 107, 130, 107, ST7735_RED);
tft.drawLine(0, 108, 130, 108, ST7735_RED);
tft.drawLine(80, 108, 80, 140, ST7735_RED);
tft.drawLine(81, 109, 81, 140, ST7735_RED);
tft.drawLine(80, 70, 80, 108, ST7735_RED);
tft.drawLine(81, 70, 81, 108, ST7735_RED);
tft.drawLine(0, 159, 130, 159, ST7735_RED);
tft.drawLine(0, 0, 0, 156, ST7735_RED);
tft.drawLine(1, 1, 1, 157, ST7735_RED);
tft.drawLine(127, 0, 127, 156, ST7735_RED);
tft.drawLine(126, 0, 126, 156, ST7735_RED);
tft.drawLine(0, 35, 130, 35, ST7735_RED);
tft.drawLine(0, 36, 130, 36, ST7735_RED);
tft.drawLine(0, 70, 130, 70, ST7735_RED);
tft.drawLine(0, 71, 130, 71, ST7735_RED);
}
void courbe() {
int nouvelleValeur;
// converison vitesse max (350 km/h) en pixel
nouvelleValeur = map((gps.speed.kmph()), 0, 150, 137, 110); // car l'cran a 64 pixels de haut
x++;
tft.drawPixel(x, nouvelleValeur, ST7735_CYAN);
if (x > 123) {
x = 80;
tft.fillRect(82, 110, 43, 30, ST7735_BLACK);
}
}
void courbeh() {
int nouvelleValeurh;
// converison vitesse max (350 km/h) en pixel
nouvelleValeurh = map((gps.altitude.meters()), 0, 1000, 104, 72); // car l'cran a 64 pixels de haut
xh++;
tft.drawPixel(xh, nouvelleValeurh, ST7735_CYAN);
if (xh > 123) {
xh = 80;
tft.fillRect(82, 72, 43, 35, ST7735_BLACK);
}
}
void vmax() {
// calcul vitese maximum
speed1 = (gps.speed.kmph());
if (speed1 > maxspeed) {
maxspeed = speed1;
}
}
void hmax() {
// calcul altitude maximum
high1 = (gps.altitude.meters());
if (high1 > maxhigh) {
maxhigh = high1;
}
}