Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 7 of 7

Thread: I2C Oled display and Audio Adaptor with Teensy 3.6

  1. #1
    Member Sandro's Avatar
    Join Date
    Nov 2016
    Location
    Rimini - Italy
    Posts
    55

    I2C Oled display and Audio Adaptor with Teensy 3.6

    Hi all,
    I've some problems if I put togheter a small 32x128 Oled I2C display with the audio adaptor on Teensy 3.6 (both freeze). The 2 devices use SCL0/SDA0, with different addresses (I hope), but for some reason the bus is "too small" to host both devices. Before going mad with a deep analisys of hundred of lines: has anyone found a way to make a simple I2C Oled display work with I2C pins different from SCL0/SDA0?
    Thanks
    Last edited by Sandro; 11-09-2018 at 09:59 PM.

  2. #2
    Senior Member
    Join Date
    Dec 2016
    Location
    Montreal, Canada
    Posts
    2,766
    you could replace all references to Wire with Wire1 in the library and that should be it, but you didnt post code or library so were just speculating here, limitations are on the libraries you use

  3. #3
    Member Sandro's Avatar
    Join Date
    Nov 2016
    Location
    Rimini - Italy
    Posts
    55
    Quote Originally Posted by tonton81 View Post
    you could replace all references to Wire with Wire1 in the library and that should be it, but you didnt post code or library so were just speculating here, limitations are on the libraries you use
    In the meanwhile I found a mistake in my code, maybe that was the problem... I have to dig a little bit now...
    Basically I'm using these libraries:
    Code:
    #include <MIDI.h> // https://www.pjrc.com/teensy/td_libs_MIDI.html
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SerialFlash.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    Thank you!

  4. #4
    Member Sandro's Avatar
    Join Date
    Nov 2016
    Location
    Rimini - Italy
    Posts
    55
    Problem solved, it was a mistake in my code; anyhow I'll try Wire1 instead of Wire, I'm curious about it...
    Thank you

  5. #5
    Member Sandro's Avatar
    Join Date
    Nov 2016
    Location
    Rimini - Italy
    Posts
    55
    Quote Originally Posted by tonton81 View Post
    you could replace all references to Wire with Wire1 in the library and that should be it, but you didnt post code or library so were just speculating here, limitations are on the libraries you use
    Hi tonton81,
    I found references to Wire.h in Adafruit_SSD1306.h file; nothing in Adafruit_GFX.h . So, I did the following mods:

    1) in Adafruit_SSD1306.h I wrote:
    #include <i2c_t3.h>
    instead of
    #include <Wire.h>

    Code:
    /*!
     * @file Adafruit_SSD1306.h
     *
     * This is part of for Adafruit's SSD1306 library for monochrome
     * OLED displays: http://www.adafruit.com/category/63_98
     *
     * These displays use I2C or SPI to communicate. I2C requires 2 pins
     * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK,
     * select, data/command) and optionally a reset pin. Hardware SPI or
     * 'bitbang' software SPI are both supported.
     *
     * Adafruit invests time and resources providing this open source code,
     * please support Adafruit and open-source hardware by purchasing
     * products from Adafruit!
     *
     * Written by Limor Fried/Ladyada for Adafruit Industries, with
     * contributions from the open source community.
     *
     * BSD license, all text above, and the splash screen header file,
     * must be included in any redistribution.
     *
     */
    
    #ifndef _Adafruit_SSD1306_H_
    #define _Adafruit_SSD1306_H_
    
    // ONE of the following three lines must be #defined:
    //#define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen
    #define SSD1306_128_32   ///< DEPRECATED: old way to specify 128x32 screen
    //#define SSD1306_96_16  ///< DEPRECATED: old way to specify 96x16 screen
    // This establishes the screen dimensions in old Adafruit_SSD1306 sketches
    // (NEW CODE SHOULD IGNORE THIS, USE THE CONSTRUCTORS THAT ACCEPT WIDTH
    // AND HEIGHT ARGUMENTS).
    
    #include <i2c_t3.h> // #include <Wire.h>
    #include <SPI.h>
    #include <Adafruit_GFX.h>
    
    #if defined(__AVR__)
      typedef volatile uint8_t  PortReg;
      typedef uint8_t           PortMask;
      #define HAVE_PORTREG
    #elif defined(__SAM3X8E__)
      typedef volatile RwReg    PortReg;
      typedef uint32_t          PortMask;
      #define HAVE_PORTREG
    #elif defined(__arm__) || defined(ARDUINO_FEATHER52)
      typedef volatile uint32_t PortReg;
      typedef uint32_t          PortMask;
      #define HAVE_PORTREG
    #endif
    
    #define BLACK                          0 ///< Draw 'off' pixels
    #define WHITE                          1 ///< Draw 'on' pixels
    #define INVERSE                        2 ///< Invert pixels
    
    #define SSD1306_MEMORYMODE          0x20 ///< See datasheet
    #define SSD1306_COLUMNADDR          0x21 ///< See datasheet
    #define SSD1306_PAGEADDR            0x22 ///< See datasheet
    #define SSD1306_SETCONTRAST         0x81 ///< See datasheet
    #define SSD1306_CHARGEPUMP          0x8D ///< See datasheet
    #define SSD1306_SEGREMAP            0xA0 ///< See datasheet
    #define SSD1306_DISPLAYALLON_RESUME 0xA4 ///< See datasheet
    #define SSD1306_DISPLAYALLON        0xA5 ///< Not currently used
    #define SSD1306_NORMALDISPLAY       0xA6 ///< See datasheet
    #define SSD1306_INVERTDISPLAY       0xA7 ///< See datasheet
    #define SSD1306_SETMULTIPLEX        0xA8 ///< See datasheet
    #define SSD1306_DISPLAYOFF          0xAE ///< See datasheet
    #define SSD1306_DISPLAYON           0xAF ///< See datasheet
    #define SSD1306_COMSCANINC          0xC0 ///< Not currently used
    #define SSD1306_COMSCANDEC          0xC8 ///< See datasheet
    #define SSD1306_SETDISPLAYOFFSET    0xD3 ///< See datasheet
    #define SSD1306_SETDISPLAYCLOCKDIV  0xD5 ///< See datasheet
    #define SSD1306_SETPRECHARGE        0xD9 ///< See datasheet
    #define SSD1306_SETCOMPINS          0xDA ///< See datasheet
    #define SSD1306_SETVCOMDETECT       0xDB ///< See datasheet
    
    #define SSD1306_SETLOWCOLUMN        0x00 ///< Not currently used
    #define SSD1306_SETHIGHCOLUMN       0x10 ///< Not currently used
    #define SSD1306_SETSTARTLINE        0x40 ///< See datasheet
    
    #define SSD1306_EXTERNALVCC         0x01 ///< External display voltage source
    #define SSD1306_SWITCHCAPVCC        0x02 ///< Gen. display voltage from 3.3V
    
    #define SSD1306_RIGHT_HORIZONTAL_SCROLL              0x26 ///< Init rt scroll
    #define SSD1306_LEFT_HORIZONTAL_SCROLL               0x27 ///< Init left scroll
    #define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 ///< Init diag scroll
    #define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL  0x2A ///< Init diag scroll
    #define SSD1306_DEACTIVATE_SCROLL                    0x2E ///< Stop scroll
    #define SSD1306_ACTIVATE_SCROLL                      0x2F ///< Start scroll
    #define SSD1306_SET_VERTICAL_SCROLL_AREA             0xA3 ///< Set scroll range
    
    // Deprecated size stuff for backwards compatibility with old sketches
    #if defined SSD1306_128_64
     #define SSD1306_LCDWIDTH  128 ///< DEPRECATED: width w/SSD1306_128_64 defined
     #define SSD1306_LCDHEIGHT  64 ///< DEPRECATED: height w/SSD1306_128_64 defined
    #endif
    #if defined SSD1306_128_32
     #define SSD1306_LCDWIDTH  128 ///< DEPRECATED: width w/SSD1306_128_32 defined
     #define SSD1306_LCDHEIGHT  32 ///< DEPRECATED: height w/SSD1306_128_32 defined
    #endif
    #if defined SSD1306_96_16
     #define SSD1306_LCDWIDTH   96 ///< DEPRECATED: width w/SSD1306_96_16 defined
     #define SSD1306_LCDHEIGHT  16 ///< DEPRECATED: height w/SSD1306_96_16 defined
    #endif
    
    /*!
        @brief  Class that stores state and functions for interacting with
                SSD1306 OLED displays.
    */
    class Adafruit_SSD1306 : public Adafruit_GFX {
     public:
      // NEW CONSTRUCTORS -- recommended for new projects
      Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi=&Wire,
        int8_t rst_pin=-1, uint32_t res=100000L);
      Adafruit_SSD1306(uint8_t w, uint8_t h, int8_t mosi_pin, int8_t sclk_pin,
        int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
    #if !defined(ARDUINO_STM32_FEATHER) // No HW SPI on WICED Feather yet
      Adafruit_SSD1306(uint8_t w, uint8_t h, SPIClass *spi,
        int8_t dc_pin, int8_t rst_pin, int8_t cs_pin, uint32_t bitrate=8000000UL);
    #endif
    
      // DEPRECATED CONSTRUCTORS - for back compatibility, avoid in new projects
      Adafruit_SSD1306(int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin,
        int8_t rst_pin, int8_t cs_pin);
      Adafruit_SSD1306(int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
      Adafruit_SSD1306(int8_t rst_pin = -1);
    
      ~Adafruit_SSD1306(void);
    
      boolean      begin(uint8_t switchvcc=SSD1306_SWITCHCAPVCC,
                     uint8_t i2caddr=0, boolean reset=true,
                     boolean periphBegin=true);
      void         display(void);
      void         clearDisplay(void);
      void         invertDisplay(boolean i);
      void         dim(boolean dim);
      void         drawPixel(int16_t x, int16_t y, uint16_t color);
      virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
      virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
      void         startscrollright(uint8_t start, uint8_t stop);
      void         startscrollleft(uint8_t start, uint8_t stop);
      void         startscrolldiagright(uint8_t start, uint8_t stop);
      void         startscrolldiagleft(uint8_t start, uint8_t stop);
      void         stopscroll(void);
      void         ssd1306_command(uint8_t c);
      boolean      getPixel(int16_t x, int16_t y);
      uint8_t     *getBuffer(void);
    
     private:
      inline void  SPIwrite(uint8_t d) __attribute__((always_inline));
      void         drawFastHLineInternal(int16_t x, int16_t y, int16_t w,
                     uint16_t color);
      void         drawFastVLineInternal(int16_t x, int16_t y, int16_t h,
                     uint16_t color);
      void         ssd1306_command1(uint8_t c);
      void         ssd1306_commandList(const uint8_t *c, uint8_t n);
    
    #if !defined(ARDUINO_STM32_FEATHER)
      SPIClass    *spi;
    #endif
      TwoWire     *wire;
      uint8_t     *buffer;
      int8_t       i2caddr, vccstate, page_end;
      int8_t       mosiPin    ,  clkPin    ,  dcPin    ,  csPin, rstPin;
    #ifdef HAVE_PORTREG
      PortReg     *mosiPort   , *clkPort   , *dcPort   , *csPort;
      PortMask     mosiPinMask,  clkPinMask,  dcPinMask,  csPinMask;
    #endif
    #if defined(SPI_HAS_TRANSACTION) && !defined(ARDUINO_STM32_FEATHER)
      SPISettings  spiSettings;
    #endif
    #if ARDUINO >= 157
      uint32_t     restoreClk; // Wire speed following SSD1306 transfers
    #endif
    };
    
    #endif // _Adafruit_SSD1306_H_

    2) and in the "basic example" I use:
    #include <i2c_t3.h>
    instead of
    #include <Wire.h>

    Y

    Code:
    /*********************************************************************
    This is an example for our Monochrome OLEDs based on SSD1306 drivers
    
      Pick one up today in the adafruit shop!
      ------> http://www.adafruit.com/category/63_98
    
    This example is for a 128x32 size display using I2C to communicate
    3 pins are required to interface (2 I2C and one reset)
    
    Adafruit invests time and resources providing this open source code, 
    please support Adafruit and open-source hardware by purchasing 
    products from Adafruit!
    
    Written by Limor Fried/Ladyada  for Adafruit Industries.  
    BSD license, check license.txt for more information
    All text above, and the splash screen must be included in any redistribution
    *********************************************************************/
    
    #include <SPI.h>
    #include <i2c_t3.h> // #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    
    #define OLED_RESET 53
    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 const unsigned char PROGMEM 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 != 32)
    #error("Height incorrect, please fix Adafruit_SSD1306.h!");
    #endif
    
    void setup()   {                
      Serial.begin(9600);
      
      Wire.setSDA(4);
      Wire.setSCL(3);
      
      // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
      // init done
      
      // Show image buffer on the display hardware.
      // Since the buffer is intialized with an Adafruit splashscreen
      // internally, this will display the splashscreen.
      display.display();
      delay(2000);
    
      // Clear the buffer.
      display.clearDisplay();
    
      // draw a single pixel
      display.drawPixel(10, 10, WHITE);
      // Show the display buffer on the hardware.
      // NOTE: You _must_ call display after making any drawing commands
      // to make them visible on the display hardware!
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // draw many lines
      testdrawline();
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // draw rectangles
      testdrawrect();
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // draw multiple rectangles
      testfillrect();
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // draw mulitple circles
      testdrawcircle();
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // draw a white circle, 10 pixel radius
      display.fillCircle(display.width()/2, display.height()/2, 10, WHITE);
      display.display();
      delay(2000);
      display.clearDisplay();
    
      testdrawroundrect();
      delay(2000);
      display.clearDisplay();
    
      testfillroundrect();
      delay(2000);
      display.clearDisplay();
    
      testdrawtriangle();
      delay(2000);
      display.clearDisplay();
       
      testfilltriangle();
      delay(2000);
      display.clearDisplay();
    
      // draw the first ~12 characters in the font
      testdrawchar();
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // draw scrolling text
      testscrolltext();
      delay(2000);
      display.clearDisplay();
    
      // text display tests
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("Hello, world!");
      display.setTextColor(BLACK, WHITE); // 'inverted' text
      display.println(3.141592);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.print("0x"); display.println(0xDEADBEEF, HEX);
      display.display();
      delay(2000);
      display.clearDisplay();
    
      // miniature bitmap display
      display.drawBitmap(30, 16,  logo16_glcd_bmp, 16, 16, 1);
      display.display();
      delay(1);
    
      // invert the display
      display.invertDisplay(true);
      delay(1000); 
      display.invertDisplay(false);
      delay(1000); 
      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];
     
      // 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], bitmap, w, h, WHITE);
        }
        display.display();
        delay(200);
        
        // then erase it + move it
        for (uint8_t f=0; f< NUMFLAKES; f++) {
          display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, 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;
          }
        }
       }
    }
    
    
    void testdrawchar(void) {
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
    
      for (uint8_t i=0; i < 168; i++) {
        if (i == '\n') continue;
        display.write(i);
        if ((i > 0) && (i % 21 == 0))
          display.println();
      }    
      display.display();
      delay(1);
    }
    
    void testdrawcircle(void) {
      for (int16_t i=0; i<display.height(); i+=2) {
        display.drawCircle(display.width()/2, display.height()/2, i, WHITE);
        display.display();
        delay(1);
      }
    }
    
    void testfillrect(void) {
      uint8_t color = 1;
      for (int16_t i=0; i<display.height()/2; i+=3) {
        // alternate colors
        display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2);
        display.display();
        delay(1);
        color++;
      }
    }
    
    void testdrawtriangle(void) {
      for (int16_t i=0; i<min(display.width(),display.height())/2; i+=5) {
        display.drawTriangle(display.width()/2, display.height()/2-i,
                         display.width()/2-i, display.height()/2+i,
                         display.width()/2+i, display.height()/2+i, WHITE);
        display.display();
        delay(1);
      }
    }
    
    void testfilltriangle(void) {
      uint8_t color = WHITE;
      for (int16_t i=min(display.width(),display.height())/2; i>0; i-=5) {
        display.fillTriangle(display.width()/2, display.height()/2-i,
                         display.width()/2-i, display.height()/2+i,
                         display.width()/2+i, display.height()/2+i, WHITE);
        if (color == WHITE) color = BLACK;
        else color = WHITE;
        display.display();
        delay(1);
      }
    }
    
    void testdrawroundrect(void) {
      for (int16_t i=0; i<display.height()/2-2; i+=2) {
        display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, WHITE);
        display.display();
        delay(1);
      }
    }
    
    void testfillroundrect(void) {
      uint8_t color = WHITE;
      for (int16_t i=0; i<display.height()/2-2; i+=2) {
        display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, color);
        if (color == WHITE) color = BLACK;
        else color = WHITE;
        display.display();
        delay(1);
      }
    }
       
    void testdrawrect(void) {
      for (int16_t i=0; i<display.height()/2; i+=2) {
        display.drawRect(i, i, display.width()-2*i, display.height()-2*i, WHITE);
        display.display();
        delay(1);
      }
    }
    
    void testdrawline() {  
      for (int16_t i=0; i<display.width(); i+=4) {
        display.drawLine(0, 0, i, display.height()-1, WHITE);
        display.display();
        delay(1);
      }
      for (int16_t i=0; i<display.height(); i+=4) {
        display.drawLine(0, 0, display.width()-1, i, WHITE);
        display.display();
        delay(1);
      }
      delay(250);
      
      display.clearDisplay();
      for (int16_t i=0; i<display.width(); i+=4) {
        display.drawLine(0, display.height()-1, i, 0, WHITE);
        display.display();
        delay(1);
      }
      for (int16_t i=display.height()-1; i>=0; i-=4) {
        display.drawLine(0, display.height()-1, display.width()-1, i, WHITE);
        display.display();
        delay(1);
      }
      delay(250);
      
      display.clearDisplay();
      for (int16_t i=display.width()-1; i>=0; i-=4) {
        display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE);
        display.display();
        delay(1);
      }
      for (int16_t i=display.height()-1; i>=0; i-=4) {
        display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE);
        display.display();
        delay(1);
      }
      delay(250);
    
      display.clearDisplay();
      for (int16_t i=0; i<display.height(); i+=4) {
        display.drawLine(display.width()-1, 0, 0, i, WHITE);
        display.display();
        delay(1);
      }
      for (int16_t i=0; i<display.width(); i+=4) {
        display.drawLine(display.width()-1, 0, i, display.height()-1, WHITE); 
        display.display();
        delay(1);
      }
      delay(250);
    }
    
    void testscrolltext(void) {
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(10,0);
      display.clearDisplay();
      display.println("scroll");
      display.display();
      delay(1);
     
      display.startscrollright(0x00, 0x0F);
      delay(2000);
      display.stopscroll();
      delay(1000);
      display.startscrollleft(0x00, 0x0F);
      delay(2000);
      display.stopscroll();
      delay(1000);    
      display.startscrolldiagright(0x00, 0x07);
      delay(2000);
      display.startscrolldiagleft(0x00, 0x07);
      delay(2000);
      display.stopscroll();
    }
    If try to compile the code, these errors are found:
    Code:
    In file included from C:\Users\dell\AppData\Local\Temp\arduino_modified_sketch_273430\TEST_OLED_I2C_32X128.ino:23:0:
    
    C:\Users\dell\Google Drive\ARDUINO SKETCHES\libraries\Adafruit_SSD1306/Adafruit_SSD1306.h:115:42: error: 'TwoWire' has not been declared
    
       Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi=&Wire,
    
                                              ^
    
    C:\Users\dell\Google Drive\ARDUINO SKETCHES\libraries\Adafruit_SSD1306/Adafruit_SSD1306.h:163:3: error: 'TwoWire' does not name a type
    
       TwoWire     *wire;
    
       ^
    
    C:\Users\dell\Google Drive\ARDUINO SKETCHES\libraries\Adafruit_SSD1306/Adafruit_SSD1306.h:115:56: error: could not convert '& Wire' from 'i2c_t3*' to 'int*'
    
       Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi=&Wire,
    Do you have any idea where I could investigate?
    Thank you!

  6. #6
    Senior Member+ defragster's Avatar
    Join Date
    Feb 2015
    Posts
    6,971
    Looks like a local copy in SKETCHBOOK directory :: ...\ARDUINO SKETCHES\libraries\Adafruit_SSD1306/Adafruit_SSD1306.h

    Perhaps remove that and see it to use the one installed with TeensyDuino :: ...\hardware\teensy\avr\libraries\Adafruit_SSD1306 \Adafruit_SSD1306.h

    The TD copy doesn't have any 'TwoWire' text.

  7. #7
    Member Sandro's Avatar
    Join Date
    Nov 2016
    Location
    Rimini - Italy
    Posts
    55
    Quote Originally Posted by defragster View Post
    Looks like a local copy in SKETCHBOOK directory :: ...\ARDUINO SKETCHES\libraries\Adafruit_SSD1306/Adafruit_SSD1306.h

    Perhaps remove that and see it to use the one installed with TeensyDuino :: ...\hardware\teensy\avr\libraries\Adafruit_SSD1306 \Adafruit_SSD1306.h

    The TD copy doesn't have any 'TwoWire' text.
    Aaagh! I did a big mess in my PC... (Also guess why different libraries have the same name)... Anyway I'll make some cleanse than I'll try again!
    Thank you
    Sandro

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •