OLED won't initialize?

Hi all -- this is my very first post here so I'm sorry if I make any mistakes, but I'll try my best to get the point across

This project includes an Arduino Uno R3, an LED, a servo motor, an APDS9960(Sparkfun Gesture Sensor), and a SSD1306(128x64 I2C OLED display by Adafruit).

Although this post is simply about OLED not initializing, since I can't put my finger on what the source of the problem is(no error messages on terminal) I'll explain the whole thing fyi.

Simply put, this is a vault, but instead of using numerical passwords, it takes gestures as input. When the sensor detects the "correct" gesture (which is decided by functions I will explain shortly), the servo will unlock the vault, and the LED will light up. The OLED is kind of just there to tell people which gestures the sensor is detecting, but I haven't yet written the code that will display corresponding images to respective gestures.

The "correct" gesture is determined by rsaGen() and rsaDecr(). Since this is a school project, I'm trying to simulate(on the serial monitor) a case where the vault receives information encrypted in RSA(which is (# representing one of the four random directions)*(randomly picked prime number)), and the vault decrypts it upon receipt. If the sensor detects the gesture the vault "received", it will open.

All libraries are up-to-date, not to mention that each device works perfectly fine on example codes(voltage, wiring, device address checked). One thing I noticed however is that when I remove the entire RSA encrypting-decrypting part of the sketch, the OLED initializes perfectly fine.. This has stumped me for days now... :'D

Thanks to everyone who read until this point, and I would really appreciate your help!

--Adria

/*Headers*/
#include <Wire.h>
#include <Servo.h>
#include <SparkFun_APDS9960.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

/*LED pins n stuff*/
#define LED_PIN 13

/*Servo init*/
#define SERVO_PIN 9
Servo myservo;

/*Gesture sensor init*/
#define APDS9960_INT 2
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

/*OLED display init*/
#define SCREEN_WIDTH  128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1
#define SSD1306_ADDR  0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

/*Defining Serial.print(F()) (Doesn't work for int, float, double, etc.)*/
#define Fprint(x) println(F(x))

/*Public variables*/
int left = 1223;
int right = 4001;
int up = 2677;
int down = 5099;
volatile int dir_input = 0;

void setup() {
  Serial.begin(9600);
  
  /*Attach pin*/
  pinMode(LED_PIN, OUTPUT);
  myservo.attach(SERVO_PIN);

  //Checking for initialization
  display.begin(SSD1306_SWITCHCAPVCC, SSD1306_ADDR);
  attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
  myservo.write(0);
  if(myservo.read() == 0){
    Serial.Fprint("Servo initialization successful!");
  } else {
    Serial.Fprint("Error initializing servo!");
  }
  if(!apds.init()){
    Serial.Fprint("Error initializing APDS9960!");
  } else {
    Serial.Fprint("APDS9960 initialization successful!");
  }
  if(!display.begin(SSD1306_SWITCHCAPVCC, SSD1306_ADDR)) {
    Serial.Fprint("Error initializing SSD1306!");
  } else {
    Serial.Fprint("SSD1306 initialization successful!");
  }

  display.display();
  delay(2000);
  display.clearDisplay();
  display.display();
  
  rsaPrint();
  
  if(dir_input == rsaDecr()){
    digitalWrite(LED_PIN, HIGH);
    myservo.write(90);
    delay(5000);
    digitalWrite(LED_PIN, LOW);
    myservo.write(0);
  }
  
}

void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(digitalPinToInterrupt(APDS9960_INT));
    handleGesture();
    isr_flag = 0;
    attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
  }
}

void interruptRoutine() {
  isr_flag = 1;
}

void handleGesture() {
    if (apds.isGestureAvailable()) {
    switch (apds.readGesture()) {
      case DIR_LEFT:
        Serial.println("LEFT");
        dir_input = 1223;
        break;
        case DIR_RIGHT:
        Serial.println("RIGHT");
        dir_input = 2677;
        break;
      case DIR_UP:
        Serial.println("UP");
        dir_input = 7481;
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        dir_input = 5099;
        break;
      default:
        Serial.println("NONE");
    }
  }
}

void rsaPrint(){
  Serial.Fprint("-----------------------------");
  Serial.print(F("Encrypting gesture info"));
  delay(500);
  Serial.print(F(". "));
  delay(500);
  Serial.print(F(". "));
  delay(500);
  Serial.Fprint(". ");
  Serial.Fprint("");
  delay(2000);
  Serial.print(F("Sending"));
  delay(500);
  Serial.print(F(". "));
  delay(500);
  Serial.print(F(". "));
  delay(500);
  Serial.Fprint(". ");
  Serial.Fprint("-----------------------------");
  delay(2000);
  Serial.print(F("Received: "));
  delay(500);
  Serial.println(rsaGen());
  Serial.Fprint("");
  delay(2000);
  Serial.print(F("Decrypting"));
  delay(500);
  Serial.print(F(". "));
  delay(500);
  Serial.print(F(". "));
  delay(500);
  Serial.Fprint(". ");
  Serial.Fprint("");
  delay(500);
  Serial.print(F("Gesture: "));
  delay(1500);
  if(rsaDecr() == 1223){
    Serial.Fprint("LEFT");
  } else {
    if(rsaDecr() == 2677){
      Serial.Fprint("RIGHT");
    } else {
      if(rsaDecr() == 7481){
        Serial.Fprint("UP");
      } else {
        Serial.Fprint("DOWN");
      }
    }
  }
}

long int rsaGen(){
  randomSeed(analogRead(0)); //Makes ran more random by reading noise of an unconnected pin
  
  int dir = 0;
  int ran = random(100);
  long int result = 0;
  
  if(ran < 25){
    dir = left;
  } else {
    if(ran < 50){
      dir = right;
    } else {
      if(ran < 75){
        dir = up;
      } else {
        dir = down;
      }
    }
  }

  result = dir * randomPrime();

  return result;
}

long int rsaDecr(){
  int dir = 0;
  int mod = 0;
  int Dir[4] = {1223, 4001, 2677, 5099};

  for(int i=0; i<4; i++){
    mod = rsaGen()%Dir[i];
    if(mod == 0){
      dir = Dir[i];
    }
  }

  return dir;
}

int randomPrime(){
  randomSeed(analogRead(1));
  int ran = random(100);
  int ranprime = 0;

  if(ran < 10){
    ranprime = 6007;
  } else {
    if(ran < 20){
      ranprime = 7019;
    } else {
      if(ran < 30){
        ranprime = 4441;
      } else {
        if(ran < 40){
          ranprime = 6203;
        } else {
          if(ran < 50){
            ranprime = 5107;
          } else {
            if (ran < 60){
              ranprime = 3137;
            } else {
              if(ran < 70){
                ranprime = 2963;
              } else {
                if(ran < 80){
                  ranprime = 7411;
                } else {
                  if(ran < 90){
                    ranprime = 1709;
                  } else {
                    ranprime = 4001;
                  }
                }
              }
            }
          }
        }
      }
    }
  }

  return ranprime;
}

How much memory is in use? Copy the compile report into a new message in this thread, please.

1 Like

How can I get the compile report?

black window, bottom of the IDE.
As an aside, go to IDE preferences, increase compiler warnings settings to "All", or at least "More", and tick both "show verbose..." settings as well.

Hi @4dria ,

Welcome to the forum..
Probably not enough memory..
The Adafruits alone are going to use allot..
If you're not using graphics, then maybe a lighter lib for the screen??
I've used SSD1306Ascii successfully, uses less memory..
The RSA, got a link to the lib, it's probably a hog too..

good luck.. ~q

1 Like

Ah, I see. Here it is:

Sketch uses 20506 bytes (63%) of program storage space. Maximum is 32256 bytes.
Global variables use 756 bytes (36%) of dynamic memory, leaving 1292 bytes for local variables. Maximum is 2048 bytes.

Makes sense... I'll try SSD1306Ascii, tysm!!

Yep, that's all before any runtime allocation, which the OLED libraries usually gobble up at least 1k. Before you know it, your code's out of RAM.
There are memory monitor libraries out there for the Arduino, don't have a link offhand, maybe Lady Ada?

1 Like

I used it in this sketch..
https://github.com/qubits-us/Delphi-IO/blob/main/Mega2560/modb.ino

good luck.. ~q

1 Like

Here's the one with all the settings(sry I just found them ;u;):

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\black\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path C:\Users\black\AppData\Local\Temp\arduino_build_82972 -warnings=all -build-cache C:\Users\black\AppData\Local\Temp\arduino_cache_138725 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\black\Desktop\2024_DIGITAL_DAY\gesture_vault\gesture_vault.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\black\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path C:\Users\black\AppData\Local\Temp\arduino_build_82972 -warnings=all -build-cache C:\Users\black\AppData\Local\Temp\arduino_cache_138725 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\black\Desktop\2024_DIGITAL_DAY\gesture_vault\gesture_vault.ino
Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for Wire.h: [Wire@1.0]
ResolveLibrary(Wire.h)
  -> candidates: [Wire@1.0]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for Servo.h: [Servo@1.1.8]
ResolveLibrary(Servo.h)
  -> candidates: [Servo@1.1.8]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for SparkFun_APDS9960.h: [SparkFun_APDS9960_RGB_and_Gesture_Sensor@1.4.2]
ResolveLibrary(SparkFun_APDS9960.h)
  -> candidates: [SparkFun_APDS9960_RGB_and_Gesture_Sensor@1.4.2]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for Adafruit_GFX.h: [Adafruit_GFX_Library@1.11.9]
ResolveLibrary(Adafruit_GFX.h)
  -> candidates: [Adafruit_GFX_Library@1.11.9]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_GFX_Library" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for Adafruit_I2CDevice.h: [Adafruit_BusIO@1.16.1]
ResolveLibrary(Adafruit_I2CDevice.h)
  -> candidates: [Adafruit_BusIO@1.16.1]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_GFX_Library" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_BusIO" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for SPI.h: [SPI@1.0]
ResolveLibrary(SPI.h)
  -> candidates: [SPI@1.0]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_GFX_Library" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_BusIO" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Alternatives for Adafruit_SSD1306.h: [Adafruit_SSD1306@2.5.10]
ResolveLibrary(Adafruit_SSD1306.h)
  -> candidates: [Adafruit_SSD1306@2.5.10]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_GFX_Library" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_BusIO" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o nul
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\Wire.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\avr\Servo.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\mbed\Servo.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\megaavr\Servo.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\nrf52\Servo.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\sam\Servo.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\samd\Servo.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\stm32f4\Servo.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\SparkFun_APDS9960_RGB_and_Gesture_Sensor\src\SparkFun_APDS9960.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GFX.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_SPITFT.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_GFX_Library\glcdfont.c
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_BusIO_Register.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_I2CDevice.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_SPIDevice.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src\SPI.cpp
Using cached library dependencies for file: C:\Users\black\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp
Generating function prototypes...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_GFX_Library" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_BusIO" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_GFX_Library" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_BusIO" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "-IC:\\Users\\black\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp" -o "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp.o"
Compiling libraries...
Compiling library "Wire"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Wire\Wire.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Wire\utility\twi.c.o
Compiling library "Servo"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\avr\Servo.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\mbed\Servo.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\megaavr\Servo.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\nrf52\Servo.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\sam\Servo.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\samd\Servo.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Servo\stm32f4\Servo.cpp.o
Compiling library "SparkFun_APDS9960_RGB_and_Gesture_Sensor"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\SparkFun_APDS9960_RGB_and_Gesture_Sensor\SparkFun_APDS9960.cpp.o
Compiling library "Adafruit_GFX_Library"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_GFX_Library\glcdfont.c.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_GFX_Library\Adafruit_GFX.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_GFX_Library\Adafruit_SPITFT.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.cpp.o
Compiling library "Adafruit_BusIO"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_BusIO\Adafruit_I2CDevice.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_BusIO\Adafruit_SPIDevice.cpp.o
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_BusIO\Adafruit_BusIO_Register.cpp.o
Compiling library "SPI"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\SPI\SPI.cpp.o
Compiling library "Adafruit_SSD1306"
Using previously compiled file: C:\Users\black\AppData\Local\Temp\arduino_build_82972\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp.o
Compiling core...
Using precompiled core: C:\Users\black\AppData\Local\Temp\arduino_cache_138725\core\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a
Linking everything together...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-gcc" -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/gesture_vault.ino.elf" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\sketch\\gesture_vault.ino.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Wire\\Wire.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Wire\\utility\\twi.c.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\avr\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\mbed\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\megaavr\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\nrf52\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\sam\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\samd\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Servo\\stm32f4\\Servo.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\SparkFun_APDS9960_RGB_and_Gesture_Sensor\\SparkFun_APDS9960.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_GFX_Library\\glcdfont.c.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_GFX_Library\\Adafruit_GFX.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_GFX_Library\\Adafruit_GrayOLED.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_GFX_Library\\Adafruit_SPITFT.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_BusIO\\Adafruit_BusIO_Register.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_BusIO\\Adafruit_I2CDevice.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_BusIO\\Adafruit_SPIDevice.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972\\libraries\\Adafruit_SSD1306\\Adafruit_SSD1306.cpp.o" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/..\\arduino_cache_138725\\core\\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a" "-LC:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972" -lm
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/gesture_vault.ino.elf" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/gesture_vault.ino.eep"
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/gesture_vault.ino.elf" "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/gesture_vault.ino.hex"
Using library Wire at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
Using library Servo at version 1.1.8 in folder: C:\Program Files (x86)\Arduino\libraries\Servo 
Using library SparkFun_APDS9960_RGB_and_Gesture_Sensor at version 1.4.2 in folder: C:\Users\black\Documents\Arduino\libraries\SparkFun_APDS9960_RGB_and_Gesture_Sensor 
Using library Adafruit_GFX_Library at version 1.11.9 in folder: C:\Users\black\Documents\Arduino\libraries\Adafruit_GFX_Library 
Using library Adafruit_BusIO at version 1.16.1 in folder: C:\Users\black\Documents\Arduino\libraries\Adafruit_BusIO 
Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
Using library Adafruit_SSD1306 at version 2.5.10 in folder: C:\Users\black\Documents\Arduino\libraries\Adafruit_SSD1306 
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-size" -A "C:\\Users\\black\\AppData\\Local\\Temp\\arduino_build_82972/gesture_vault.ino.elf"
Sketch uses 20506 bytes (63%) of program storage space. Maximum is 32256 bytes.
Global variables use 756 bytes (36%) of dynamic memory, leaving 1292 bytes for local variables. Maximum is 2048 bytes.
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM8 -b115200 -D -Uflash:w:C:\Users\black\AppData\Local\Temp\arduino_build_82972/gesture_vault.ino.hex:i 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM8
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\black\AppData\Local\Temp\arduino_build_82972/gesture_vault.ino.hex"
avrdude: writing flash (20506 bytes):

Writing | ################################################## | 100% 3.57s

avrdude: 20506 bytes of flash written
avrdude: verifying flash memory against C:\Users\black\AppData\Local\Temp\arduino_build_82972/gesture_vault.ino.hex:
avrdude: load data flash data from input file C:\Users\black\AppData\Local\Temp\arduino_build_82972/gesture_vault.ino.hex:
avrdude: input file C:\Users\black\AppData\Local\Temp\arduino_build_82972/gesture_vault.ino.hex contains 20506 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.82s

avrdude: verifying ...
avrdude: 20506 bytes of flash verified

avrdude done.  Thank you.

Good. Not really helpful for what you're fighting right now, but before long, when you have a problem you'll be scrolling through that like mad, to figure out what the compiler is doing. It can be very helpful.

1 Like

I see... I'll look into it :] qubits also suggested using SSD1306Ascii if I'm not using the graphics, so I think I'll try that one as well..

"The more you know".. I'm glad I posted it here today finally. thank you so much camsysca!! :smiley:

1 Like

saw this routine hit the board recently..
might help..
https://forum.arduino.cc/t/help-needed-displaying-bitmap-on-arduino-uno-with-3-2-open-smart-display-400x240/1265382/8?u=qubits-us
someone else was having memory issues too.. :slight_smile:

good luck.. ~q

1 Like

FWIW, I've used the ss_oled library by Larry Banks(use the library manager to install it) successfully on my Nanos, it's not very 'hungry'. YMMV.

1 Like

I thing this is the page you need to read:-

2 Likes

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