That should be ISP, not SPI... I know can't use both (SDA and SCL pins are shared), but the programmer does use those two pins as well, no way around that. However if the ArduinoISP sets the pins to INPUT when finished, there should be no problem.
My I2C test sketch, works on Arduino & NodeMCU:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library
#define I2C_ADDR 0x27 // Define I2C Address for controller
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
#define BACKLIGHT_PIN 3
#define LED_OFF 0
#define LED_ON 1
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
void setup()
{
lcd.begin (16, 2); // initialize the lcd
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(LED_OFF);
}
void loop()
{
// Reset the display
lcd.clear();
lcd.setBacklight(LOW);
delay(1000);
lcd.home();
// Print on the LCD
lcd.backlight();
lcd.setBacklight(HIGH);
lcd.setCursor(0, 0);
lcd.print("City Hydroponics");
delay(8000);
}
Fails with these error messages; all multiple definition errors:
Arduino: 1.8.5 (Linux), Board: "ATtiny441/841 (No bootloader), ATtiny841, Disabled, 12 MHz (external), EEPROM retained, B.O.D. Enabled (1.8v), B.O.D. Disabled, B.O.D. Disabled"
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_delay_half'
libraries/Wire/Wire.cpp.o:/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_wait_scl_high'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_init()'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_start(unsigned char)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_write'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_rep_start(unsigned char)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_start_wait(unsigned char)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_stop'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_read(bool)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board ATtiny441/841 (No bootloader).
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Compiling with the Optiboot option makes no difference.