Testato / SoftwareWire

Creates a software I2C/TWI bus on every pins
GNU General Public License v3.0
149 stars 33 forks source link

"no matching function" error in verifying #25

Closed limmers2015 closed 3 years ago

limmers2015 commented 4 years ago

Hello everyone:

I am attempting to use this library with Adafruit's "Adafruit_GFX" and "Adafruit_SSD1306" libraries to run a display.

When I attempt to verify the sketch, the following console output/error message is given:

`/home/builder/opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -hardware /home/builder/opt/arduino-builder/hardware -hardware /home/builder/.arduino15/packages -tools /home/builder/opt/arduino-builder/tools -tools /home/builder/.arduino15/packages -built-in-libraries /home/builder/opt/libraries/latest -logger humantags -fqbn arduino:avr:micro -build-cache /tmp -build-path /tmp/707953622/build -verbose -prefs runtime.tools.sketchUploader.path=/home/builder/.arduino15/packages/Intel/tools/sketchUploader/1.6.2+1.0 -prefs runtime.tools.arduino101load.path=/home/builder/.arduino15/packages/Intel/tools/arduino101load/2.0.1 -prefs runtime.tools.linuxuploader.path=/home/builder/.arduino15/packages/arduino/tools/linuxuploader/1.5.1 -prefs runtime.tools.nrf5x-cl-tools.path=/home/builder/.arduino15/packages/arduino/tools/nrf5x-cl-tools/9.3.1 -prefs runtime.tools.mkspiffs.path=/home/builder/.arduino15/packages/esp8266/tools/mkspiffs/2.5.0-3-20ed2b9 -prefs runtime.tools.xtensa-lx106-elf-gcc.path=/home/builder/.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9 -prefs runtime.tools.i586-poky-linux-uclibc.path=/home/builder/.arduino15/packages/Intel/tools/i586-poky-linux-uclibc/1.6.2+1.0 -prefs runtime.tools.openocd.path=/home/builder/.arduino15/packages/arduino/tools/openocd/0.10.0-arduino9 -prefs runtime.tools.x86-linux-gcc.path=/home/builder/.arduino15/packages/arduino/tools/x86-linux-gcc/7.2.0 -prefs runtime.tools.arduinoOTA.path=/home/builder/.arduino15/packages/arduino/tools/arduinoOTA/1.2.1 -prefs runtime.tools.core2-32-poky-linux.path=/home/builder/.arduino15/packages/Intel/tools/core2-32-poky-linux/1.6.2+1.0 -prefs runtime.tools.arc-elf32.path=/home/builder/.arduino15/packages/Intel/tools/arc-elf32/1.6.9+1.0.1 -prefs runtime.tools.avr-gcc.path=/home/builder/.arduino15/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2 -prefs runtime.tools.dfu-util.path=/home/builder/.arduino15/packages/arduino/tools/dfu-util/0.9.0-arduino1 -prefs runtime.tools.flashpack.path=/home/builder/.arduino15/packages/Intel/tools/flashpack/2.0.0 -prefs runtime.tools.arm-none-eabi-gcc.path=/home/builder/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4 -prefs runtime.tools.bossac.path=/home/builder/.arduino15/packages/industruino/tools/bossac/1.7.0-industruino -prefs runtime.tools.CMSIS.path=/home/builder/.arduino15/packages/arduino/tools/CMSIS/4.5.0 -prefs runtime.tools.arm-linux-gcc.path=/home/builder/.arduino15/packages/arduino/tools/arm-linux-gcc/4.9.3 -prefs runtime.tools.avrdude.path=/home/builder/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14 -prefs runtime.tools.esptool.path=/home/builder/.arduino15/packages/esp8266/tools/esptool/2.5.0-3-20ed2b9 -prefs runtime.tools.CMSIS-Atmel.path=/home/builder/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0 -libraries /tmp/707953622/custom -libraries /tmp/707953622/pinned /tmp/707953622/ssd1306_128x64_i2c_copy

Multiple libraries were found for "Adafruit_SSD1306.h"

Used: /home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2

Not used: /home/builder/opt/libraries/latest/adafruit_ssd1306_2_0_1

Using library adafruit_gfx_library_1_6_1 at version 1.6.1 in folder: /home/builder/opt/libraries/latest/adafruit_gfx_library_1_6_1

Using library adafruit_ssd1306_wemos_mini_oled_1_1_2 at version 1.1.2 in folder: /home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void setup()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:62:76: error: no matching function for call to 'Adafruit_SSD1306::Adafruit_SSD1306(int, int, SoftwareWire*, int)'

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &myWire, OLED_RESET);

^

In file included from /tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:24:0:

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:150:3: note: candidate: Adafruit_SSD1306::Adafruit_SSD1306(int8_t)

Adafruit_SSD1306(int8_t RST = -1);

^

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:150:3: note: candidate expects 1 argument, 4 provided

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:149:3: note: candidate: Adafruit_SSD1306::Adafruit_SSD1306(int8_t, int8_t, int8_t)

Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS);

^

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:149:3: note: candidate expects 3 arguments, 4 provided

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:148:3: note: candidate: Adafruit_SSD1306::Adafruit_SSD1306(int8_t, int8_t, int8_t, int8_t, int8_t)

Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS);

^

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:148:3: note: candidate expects 5 arguments, 4 provided

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:146:7: note: candidate: constexpr Adafruit_SSD1306::Adafruit_SSD1306(const Adafruit_SSD1306&)

class Adafruit_SSD1306 : public Adafruit_GFX {

^

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:146:7: note: candidate expects 1 argument, 4 provided

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:146:7: note: candidate: constexpr Adafruit_SSD1306::Adafruit_SSD1306(Adafruit_SSD1306&&)

/home/builder/opt/libraries/latest/adafruit_ssd1306_wemos_mini_oled_1_1_2/Adafruit_SSD1306.h:146:7: note: candidate expects 1 argument, 4 provided

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:65:20: error: could not convert 'display.Adafruit_SSD1306::begin(2u, 61u, true)' from 'void' to 'bool'

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:65:47: error: in argument to unary !

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:79:29: error: 'SSD1306_WHITE' was not declared in this scope

display.drawPixel(10, 10, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawline()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:131:3: error: 'display' was not declared in this scope

display.clearDisplay(); // Clear display buffer

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:134:51: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(0, 0, i, display.height()-1, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:139:50: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(0, 0, display.width()-1, i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:148:51: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(0, display.height()-1, i, 0, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:153:67: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(0, display.height()-1, display.width()-1, i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:162:67: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(display.width()-1, display.height()-1, i, 0, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:167:67: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(display.width()-1, display.height()-1, 0, i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:176:50: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(display.width()-1, 0, 0, i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:181:67: error: 'SSD1306_WHITE' was not declared in this scope

display.drawLine(display.width()-1, 0, i, display.height()-1, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawrect()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:190:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:193:71: error: 'SSD1306_WHITE' was not declared in this scope

display.drawRect(i, i, display.width()-2i, display.height()-2i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testfillrect()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:202:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:206:71: error: 'SSD1306_INVERSE' was not declared in this scope

display.fillRect(i, i, display.width()-i2, display.height()-i2, SSD1306_INVERSE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawcircle()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:215:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:218:66: error: 'SSD1306_WHITE' was not declared in this scope

display.drawCircle(display.width()/2, display.height()/2, i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testfillcircle()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:227:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:231:70: error: 'SSD1306_INVERSE' was not declared in this scope

display.fillCircle(display.width() / 2, display.height() / 2, i, SSD1306_INVERSE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawroundrect()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:240:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:244:27: error: 'SSD1306_WHITE' was not declared in this scope

display.height()/4, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testfillroundrect()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:253:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:258:27: error: 'SSD1306_INVERSE' was not declared in this scope

display.height()/4, SSD1306_INVERSE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawtriangle()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:267:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:273:50: error: 'SSD1306_WHITE' was not declared in this scope

display.width()/2+i, display.height()/2+i, SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testfilltriangle()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:282:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:289:50: error: 'SSD1306_INVERSE' was not declared in this scope

display.width()/2+i, display.height()/2+i, SSD1306_INVERSE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawchar()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:298:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:301:24: error: 'SSD1306_WHITE' was not declared in this scope

display.setTextColor(SSD1306_WHITE); // Draw white text

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawstyles()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:317:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:320:24: error: 'SSD1306_WHITE' was not declared in this scope

display.setTextColor(SSD1306_WHITE); // Draw white text

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:324:24: error: 'SSD1306_BLACK' was not declared in this scope

display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testscrolltext()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:336:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:339:24: error: 'SSD1306_WHITE' was not declared in this scope

display.setTextColor(SSD1306_WHITE);

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testdrawbitmap()':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:363:3: error: 'display' was not declared in this scope

display.clearDisplay();

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino: In function 'void testanimate(const uint8_t*, uint8_t, uint8_t)':

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:382:47: error: 'display' was not declared in this scope

icons[f][XPOS] = random(1 - LOGO_WIDTH, display.width());

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:394:5: error: 'display' was not declared in this scope

display.clearDisplay(); // Clear the display buffer

^

/tmp/707953622/ssd1306_128x64_i2c_copy/ssd1306_128x64_i2c_copy.ino:398:72: error: 'SSD1306_WHITE' was not declared in this scope

display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, SSD1306_WHITE);

^

exit status 1`

This is my full sketch:

https://create.arduino.cc/editor/limmers2015/3689df0c-3602-491f-beb1-59837286d2bd/preview

Does anyone know what am I doing wrong/missing? I have no ideas.

The really odd thing is that the same kind of error is thrown with the regular "Wire" library.

Thanks in advance for any assistance!

EDIT: I just realized that I forgot to say what I am using for hardware. Arduino Micro, programmed via the online IDE.

Testato commented 3 years ago

It's not a SoftwareWire error