including SD.h froze OLED screen, what is causing it?

hi
using pro mini 3.3V with SD card
screen works until including SD library
i think its something simple but very little arduino experience

any ideas?

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SD.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
int time=0;

void setup()   {                
  Serial.begin(115200);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
  // Clear the buffer.
  //display.clearDisplay();
  
}
void loop() {
    display.setCursor(0,0); //init
    display.setTextColor(WHITE);
    display.setTextSize(1);
        display.println("        Speed      ");
        display.println();
       
        display.setTextSize(5);
        display.print(" ");
        display.print(random(100)+10, DEC);
        //display.print(".");
        //display.print(random(10), DEC);
       display.display(); 
       delay(50);
    display.clearDisplay();
  
}

Hi

I assume, you ran out of RAM.
Both libs, Adafruit GFX and SD consume a lot of RAM.

You may try U8glib instead of the Adafruit lib for lesser RAM consumption.

Oliver

The Adafruit graphics library has a 1024 byte screen buffer. U8glib uses a lot less.

If you are only writing text (or very simple graphics) you can use the text only 1306 library that I am using. It uses about 50 bytes of ram. It is attached below.

Also consider using SdFat instead of SD. It will save you a small amount of ram, several Kb of code and it is also the latest version of the code. SD is based on an older version of SdFat.

SSD1306_text.cpp (8.38 KB)

SSD1306_text.h (2.6 KB)

ssdfont.h (3.19 KB)

readme.txt (882 Bytes)

OLED_text_HW_SPI_example.ino (2.13 KB)