spinjector
Member
Ok I'm lost with this one. It delves into library issues that I need words of wisdom for. There are many related posts in the forum that seem similar but not quite the same.
I'm trying to use a common SSD1306 128x64 OLED display with a Teensy 4.1. When I attempt to compile & upload, I get a series of compiler errors. I've pasted the code & errors below.
The errors seem to suggest there's a conflict between two different versions of the Adafruit_GFX libraries. Perhaps Teensyduino installed a new one..?
But here's the thing, it works fine with a generic Arduino Nano. If I leave the code window open and swap the Teensy with a Nano, the code compiles & uploads without error, and I see the Adafruit "starflakes" animation.
So the issue seems specific to whatever happens when the Arduino IDE > Tools > Board is switched to Teensy 4.1...
The wiring isn't an issue at this point, since it won't even compile, but for reference:
OLED -- Teensy
VCC --> 3.3v
GND --> Logic GND
SCL --> 19/A5/SCL
SDA --> 18/A4/SDA
Here's the full compiler log; the errors are towards the end. The source code follows after:
Here's the code. It's a chopped-down version of the original Adafruit example sketch:
I'm trying to use a common SSD1306 128x64 OLED display with a Teensy 4.1. When I attempt to compile & upload, I get a series of compiler errors. I've pasted the code & errors below.
The errors seem to suggest there's a conflict between two different versions of the Adafruit_GFX libraries. Perhaps Teensyduino installed a new one..?
But here's the thing, it works fine with a generic Arduino Nano. If I leave the code window open and swap the Teensy with a Nano, the code compiles & uploads without error, and I see the Adafruit "starflakes" animation.
So the issue seems specific to whatever happens when the Arduino IDE > Tools > Board is switched to Teensy 4.1...
The wiring isn't an issue at this point, since it won't even compile, but for reference:
OLED -- Teensy
VCC --> 3.3v
GND --> Logic GND
SCL --> 19/A5/SCL
SDA --> 18/A4/SDA
Here's the full compiler log; the errors are towards the end. The source code follows after:
Code:
C:\Program Files\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\Arduino\hardware -hardware C:\Users\adminalb\AppData\Local\Arduino15\packages -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -tools C:\Users\adminalb\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\adminalb\Documents\Arduino\libraries -fqbn=teensy:avr:teensy41:usb=serial,speed=600,opt=o2std,keys=en-us -ide-version=10813 -build-path C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834 -warnings=default -build-cache C:\Users\adminalb\AppData\Local\Temp\arduino_cache_763406 -verbose C:\Users\adminalb\Downloads\Arduino\DIY Mall 0.96 OLED Display\IIC_OLED\0.96Inch\examples\ssd1306_128x64_i2c\ssd1306_128x64_i2c.ino
C:\Program Files\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files\Arduino\hardware -hardware C:\Users\adminalb\AppData\Local\Arduino15\packages -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -tools C:\Users\adminalb\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\adminalb\Documents\Arduino\libraries -fqbn=teensy:avr:teensy41:usb=serial,speed=600,opt=o2std,keys=en-us -ide-version=10813 -build-path C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834 -warnings=default -build-cache C:\Users\adminalb\AppData\Local\Temp\arduino_cache_763406 -verbose C:\Users\adminalb\Downloads\Arduino\DIY Mall 0.96 OLED Display\IIC_OLED\0.96Inch\examples\ssd1306_128x64_i2c\ssd1306_128x64_i2c.ino
Using board 'teensy41' from platform in folder: C:\Program Files\Arduino\hardware\teensy\avr
Using core 'teensy4' from platform in folder: C:\Program Files\Arduino\hardware\teensy\avr
Detecting libraries used...
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for Wire.h: [Wire@1.0]
ResolveLibrary(Wire.h)
-> candidates: [Wire@1.0]
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for Adafruit_GFX.h: [Adafruit_GFX Adafruit_GFX_Library@1.9.0]
ResolveLibrary(Adafruit_GFX.h)
-> candidates: [Adafruit_GFX Adafruit_GFX_Library@1.9.0]
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_GFX" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for Adafruit_SSD1306.h: [Adafruit_SSD1306]
ResolveLibrary(Adafruit_SSD1306.h)
-> candidates: [Adafruit_SSD1306]
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_GFX" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
Using cached library dependencies for file: C:\Program Files\Arduino\hardware\teensy\avr\libraries\Wire\Wire.cpp
Using cached library dependencies for file: C:\Program Files\Arduino\hardware\teensy\avr\libraries\Wire\WireIMXRT.cpp
Using cached library dependencies for file: C:\Program Files\Arduino\hardware\teensy\avr\libraries\Wire\WireKinetis.cpp
Using cached library dependencies for file: C:\Program Files\Arduino\hardware\teensy\avr\libraries\Wire\utility\twi.c
Using cached library dependencies for file: C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_GFX\Adafruit_GFX.cpp
Using cached library dependencies for file: C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_GFX\glcdfont.c
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_GFX" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306\\Adafruit_SSD1306.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
Generating function prototypes...
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_GFX" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp" -o "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\preproc\\ctags_target_for_gcc_minus_e.cpp" -DARDUINO_LIB_DISCOVERY_PHASE
"C:\\Program Files\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/precompile_helper" "C:\\Program Files\\Arduino\\hardware\\teensy\\avr/cores/teensy4" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834" "C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -x c++-header -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -MMD -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr/cores/teensy4" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834/pch/Arduino.h" -o "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834/pch/Arduino.h.gch"
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\pch\Arduino.h.gch
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -MMD -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834/pch" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_GFX" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp" -o "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\sketch\\ssd1306_128x64_i2c.ino.cpp.o"
Compiling libraries...
Compiling library "Wire"
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\libraries\Wire\Wire.cpp.o
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\libraries\Wire\WireKinetis.cpp.o
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\libraries\Wire\WireIMXRT.cpp.o
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\libraries\Wire\utility\twi.c.o
Compiling library "Adafruit_GFX"
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\libraries\Adafruit_GFX\glcdfont.c.o
Using previously compiled file: C:\Users\adminalb\AppData\Local\Temp\arduino_build_152834\libraries\Adafruit_GFX\Adafruit_GFX.cpp.o
Compiling library "Adafruit_SSD1306"
"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -MMD -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=153 -DARDUINO=10813 -DARDUINO_TEENSY41 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834/pch" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\libraries\\Wire" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_GFX" "-IC:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306" "C:\\Users\\adminalb\\Documents\\Arduino\\libraries\\Adafruit_SSD1306\\Adafruit_SSD1306.cpp" -o "C:\\Users\\adminalb\\AppData\\Local\\Temp\\arduino_build_152834\\libraries\\Adafruit_SSD1306\\Adafruit_SSD1306.cpp.o"
C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp: In member function 'void Adafruit_SSD1306::begin(uint8_t, uint8_t)':
C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:156:17: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
clkport = portOutputRegister(digitalPinToPort(sclk));
^
C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:158:17: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
mosiport = portOutputRegister(digitalPinToPort(sid));
^
C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:160:17: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
csport = portOutputRegister(digitalPinToPort(cs));
^
C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:162:17: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
dcport = portOutputRegister(digitalPinToPort(dc));
^
Multiple libraries were found for "Adafruit_GFX.h"
Used: C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_GFX
Not used: C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_GFX_Library
Using library Wire at version 1.0 in folder: C:\Program Files\Arduino\hardware\teensy\avr\libraries\Wire
Using library Adafruit_GFX in folder: C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_GFX (legacy)
Using library Adafruit_SSD1306 in folder: C:\Users\adminalb\Documents\Arduino\libraries\Adafruit_SSD1306 (legacy)
Error compiling for board Teensy 4.1.
Here's the code. It's a chopped-down version of the original Adafruit example sketch:
Code:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH 16
static unsigned char PROGMEM const logo16_glcd_bmp[] =
{ B00000000, B11000000,
B00000001, B11000000,
B00000001, B11000000,
B00000011, B11100000,
B11110011, B11100000,
B11111110, B11111000,
B01111110, B11111111,
B00110011, B10011111,
B00011111, B11111100,
B00001101, B01110000,
B00011011, B10100000,
B00111111, B11100000,
B00111111, B11110000,
B01111100, B11110000,
B01110000, B01110000,
B00000000, B00110000 };
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
display.display(); // show splashscreen
delay(2000);
display.clearDisplay(); // clears the screen and buffer
for (int pix_x = 0; pix_x < 32; pix_x = pix_x + 2) {
display.drawPixel(pix_x, 0, WHITE);
//display.display();
}
delay(2000);
display.clearDisplay();
// draw a bitmap icon and 'animate' movement
testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH);
}
void loop() {
}
void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) {
uint8_t icons[NUMFLAKES][3];
srandom(666); // whatever seed
// initialize
for (uint8_t f=0; f< NUMFLAKES; f++) {
icons[f][XPOS] = random() % display.width();
icons[f][YPOS] = 0;
icons[f][DELTAY] = random() % 5 + 1;
Serial.print("x: ");
Serial.print(icons[f][XPOS], DEC);
Serial.print(" y: ");
Serial.print(icons[f][YPOS], DEC);
Serial.print(" dy: ");
Serial.println(icons[f][DELTAY], DEC);
}
while (1) {
// draw each icon
for (uint8_t f=0; f< NUMFLAKES; f++) {
display.drawBitmap(icons[f][XPOS], icons[f][YPOS], logo16_glcd_bmp, w, h, WHITE);
}
display.display();
delay(50);
// then erase it + move it
for (uint8_t f=0; f< NUMFLAKES; f++) {
display.drawBitmap(icons[f][XPOS], icons[f][YPOS], logo16_glcd_bmp, w, h, BLACK);
// move it
icons[f][YPOS] += icons[f][DELTAY];
// if its gone, reinit
if (icons[f][YPOS] > display.height()) {
icons[f][XPOS] = random() % display.width();
icons[f][YPOS] = 0;
icons[f][DELTAY] = random() % 5 + 1;
}
}
}
}