Como ptimizar mi código de Arduino en cuanto al uso de memoria

¡Por supuesto! Aquí tienes una versión en español del mensaje para solicitar ayuda en un foro sobre cómo optimizar tu código de Arduino:


Asunto: Necesito ayuda para optimizar mi código de Arduino en cuanto al uso de memoria

Cuerpo del mensaje:

Hola,

Estoy trabajando en un proyecto utilizando una placa Arduino, un módulo RTC, un servo motor y una pantalla OLED. El proyecto consiste en servir comida a mascotas en horarios específicos. He escrito un código que verifica la hora actual con los horarios de alimentación predefinidos y activa el servo motor según corresponda. Sin embargo, me estoy enfrentando a limitaciones de memoria y problemas de estabilidad, se queda frisado después de 3 o 4 segundos, en la pantalla el texto se ve inestable.

Agradecería cualquier sugerencia o consejo sobre cómo puedo optimizar mi código para reducir el uso de memoria y mejorar la estabilidad. Aquí tienes una versión simplificada de mi código:

// Incluir librerías
#include <RTClib.h>
#include <Adafruit_SH1106.h>
#include <Servo.h>

// Definir pines y objetos
#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);
RTC_DS3231 RTC;
Servo servo;

// Definir horarios de alimentación
int horariosAlimentacion[3][3] = {
  {8, 0, 0},  // Hora, minuto, segundo para el primer horario de alimentación
  {12, 30, 0},  // Hora, minuto, segundo para el segundo horario de alimentación
  {18, 0, 0}   // Hora, minuto, segundo para el tercer horario de alimentación
};

void setup() {
  // Inicializar comunicación serial, RTC, pantalla y servo
  Serial.begin(9600);
  RTC.begin();
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);
  servo.attach(8);
  servo.write(0);
}

void loop() {
  // Obtener hora actual
  DateTime now = RTC.now();

  // Verificar si es hora de alimentar
  for (int i = 0; i < 3; i++) {
    int hora = horariosAlimentacion[i][0];
    int minuto = horariosAlimentacion[i][1];
    int segundo = horariosAlimentacion[i][2];

    if (hora == now.hour() && minuto == now.minute() && segundo == now.second()) {
      // Mostrar mensaje de alimentación en la pantalla OLED
      display.clearDisplay();
      display.setRotation(0);
      display.setCursor(10, 10);
      display.setTextColor(WHITE);
      display.setTextSize(2);
      display.println("HORA DE COMER");

      display.display();

      // Activar servo motor
      servo.write(90);
      delay(1300);
      servo.write(0);
      delay(200);
    }
  }
}

Sospecho que el uso de matrices y la pantalla OLED pueden estar contribuyendo a los problemas de memoria. Cualquier consejo sobre cómo optimizar este código sería muy apreciado.

¡Gracias!

No entendí...
Posteas un texto (sin cumplir con las Normas de Foro) que a las claras está escrito por una IA y posiblemente también el código, para que alguien te regale su tiempo para revisar un código que podría tener problemas con el uso de la memoria ¿y presentas una versión simplificada?
¿Es una broma?

Agrego:
Abrir el mismo tema en lenguajes distintos también es repost.

1 Like

Hola,

No lo sabia Maximo, solo busco ayuda para un proyecto escolar, soy nuevo en el mundo de arduino, no conozco mucho de terminos por eso uso IA, procedo a borrar el post,

Saludos..

#define OLED_RESET -1

Lo mismo "Suena la flauta por casualidad"

Moderador
Lee el privado que te envío.
Hilo cerrado por doble posteo.
Sigue aquí