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