Ayuda con mi codigo no tengo espacio

recientemente estoy haciendo un proyecto de recoleccion de datos estoy usando un arduino nado, con sd, bmp280, tiny rtc y una pantalla oled .96 el ide me indica que ya no hay más espacio en el nano y ya e quitado incluso partes importantes del codigo con el objetivo de reducir espacio y si lo reduci pero no lo suficiente, cualquier consejo para hacer el codigo más efeciente es aceptado tambien consejos sobre programacios

#include "RTClib.h"
#include <Adafruit_Sensor.h> 
#include <Adafruit_BMP280.h>
#include <SPI.h>
#include <SD.h>
#include <Servo.h>
//#include <Wire.h>
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h>

const int sdCardPin = 10;
float pa, P0;
RTC_DS1307 rtc;
Adafruit_BMP280 bmp;
File cohete;
Servo paracaidas;

#define OLED_RESET     -1 
#define SCREEN_ADDRESS 0x3C 

#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 32 

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);

void setup () {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  rtc.begin();
  bmp.begin();
  SD.begin(sdCardPin);

  rtc.adjust(DateTime(2024, 8, 19, 0, 0, 0));

  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,8); 
  display.println("inicializacion correcta");
  display.display();
  delay(4000);

  P0 = bmp.readPressure()/100;
  cohete = SD.open("datos.txt", FILE_WRITE);

  paracaidas.attach(5);
  paracaidas.write(90);
  delay(100); 
}


void loop () {
  int actual = millis(); // Medición del tiempo actual
  int intervalo = 1000;
  int segundos = 0;
  int secTrans = 0;
  int anterior = 0; 
  float temp; 
  int altMax = 0;

  DateTime now = rtc.now();
  temp = bmp.readTemperature();
  pa = bmp.readPressure() / 100;

  segundos = now.minute() * 60;
  secTrans = segundos + now.second();

  if (cohete) {
    if (actual - anterior >= intervalo) {
      anterior = actual; 
  
      cohete.print(secTrans);
      cohete.print(", ");
      cohete.print(bmp.readAltitude(P0));
      cohete.print(", ");
      cohete.print(temp);
      cohete.print(", ");
      cohete.print(pa);
      cohete.print(", ");
      cohete.println();
      }
    }
  if (altMax < bmp.readAltitude(P0)) {
    altMax = bmp.readAltitude(P0);
  } else if (altMax > bmp.readAltitude(P0) + 2) {
      cohete.close();
      paracaidas.write(180);
      delay(500);
      while (1);
  }
}

este el el error:
El Sketch usa 31936 bytes (103%) del espacio de almacenamiento de programa. El máximo es 30720 bytes.
Las variables Globales usan 1359 bytes (66%) de la memoria dinámica, dejando 689 bytes para las variables locales. El máximo es 2048 bytes.
Programa muy grando: visite https://support.arduino.cc/hc/en-us/articles/360013825179 para ver cómo reducirlo.
text section exceeds available space in board

Compilation error: text section exceeds available space in board

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @juanpallares.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Prueba cambiando las librerías.
Por ej. para el BMP puedes usar BMP280-arduino-library, entre otras.

Si en la pantalla solo imprimes texto, podrías usar SSD1306Ascii.

Mira los ejemplos de ambas para ver lo que deberías modificar en tu código.

Moderador:
Por favor, lee las Normas del foro
Edita tu título, usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.
5. Piensa un título y descriptivo
Trata de resumir tu problema con un título inteligente, útil e informativo.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.